ugrás a tartalomhoz

Több tömbb adatának írása mysql-be

juhostt · 2012. Jan. 5. (Cs), 14.05
Tisztelt Hozzáértőbbek!

Egy olyat szeretnék megvalósítani, hogy adott 2 tömb, mindkettőben különböző adatok. Ezt a 2 tömböt szeretnék mysql-be beleírni. A probléma az, hogy a jelenlegi tudásommal egyszerre csak az egyik tömb elemét tudom mysql-be írni.
A 2 tömb űrlapból kapja az adatokat. Ahány űrlap van, annyi elem lesz a tömbökben.
Valahogy így néz ki az űrlap(ok) vázlata:

$szam = 2 //Ez a példa miatt van definiálva, ez a szám változni fog!
Mivel $szam értéke kettő, így 2 űrlap lesz.

nev: nev1
neme: kan

nev: nev2
neme: szuka


Íme a kód amellyel kilistáztatom, de csak a nevet:

foreach($nev AS $neve)
{
mysql_query("INSERT INTO suldo (nev, neme) VALUES('$neve', '$neme')");
}

Így le is fut a mysql lekérés, és annyi sor lesz benne, ahány név van. A gond az, hogy ezen nevek mellé kellene beilleszteni a hozzá tartozó neme-t is.
Próbáltam a foreach-ba mégegy foreach-ot, de az nem volt jó. Próbáltam úgy hogy a neme-t is külön foreach-al megcsinálom, és global $valtozo-t írni bele, majd a másik foreach-ban hivatkozni. De ez is nagy semmi volt. Már kifogytam az ötletekből, ha tud valaki valami okosságot kérem segítsen.
Köszönöm
 
1

tömb

Poetro · 2012. Jan. 5. (Cs), 14.37
<!DOCTYPE HTML>
<html lang="en-US">
<head>
  <meta charset="UTF-8">
  <title></title>
</head>
<body>
<?php
  if (!empty($_POST['kutya'])) {
    echo '<pre>';
    foreach ($_POST['kutya'] as $kutya) {
      print_r($kutya);
    }
    echo '</pre>';
  }
?>
<form action="" method="post">
<?php
$szam = 2;
for ($i = 0; $i < $szam; $i++) : ?>
  <fieldset>
    <legend>Kutya</legend>
    <div>
      <label>Név: <input type="text" name="kutya[<?php echo $i; ?>][nev]" /></label>
      <label>Neme: <input type="text" name="kutya[<?php echo $i; ?>][neme]" /></label>
    </div>
  </fieldset>
<?php endfor; ?>
  <input type="submit" />
</form>
</body>
</html>
2

Ahány űrlap van, annyi elem

kuka · 2012. Jan. 5. (Cs), 14.40
Ahány űrlap van, annyi elem lesz a tömbökben.
Tehát 1. Lévén 1 kéréssel csak 1 űrlap adatait lehet eljuttatni a szerverre.

A foreach-et itt felejtsd el, használj helyette sima fort:

if (count($nev)!=count($nem)) {
  echo 'Nem szórakozni!';
  exit;
}
for ($i=0,$=count($nev);$i<$l;$i++) {
  $neve=mysql_real_escape_string($nev[$i]);
  $neme=mysql_real_escape_string($nem[$i]);
  mysql_query("INSERT INTO suldo (nev, neme) VALUES('$neve', '$neme')");
}
3

majdnem jó

juhostt · 2012. Jan. 5. (Cs), 14.49
A neveket bele teszi, de a neme-nél csak az első sor első adatát teszi bele. Nem tudom mi lehet a gond, de azért köszi a segítséget, innen már bízom benne, hogy rájövök a megoldásra.
4

Biztos, hogy nem maga a tömb

kuka · 2012. Jan. 5. (Cs), 15.16
Biztos, hogy nem maga a tömb van összekutyulva? (A print_r(), var_dump() és var_export() függvények alkalmasak rá, hogy áttekinthető formában kiírják egy tömb tartalmát. Kérd valamelyikük tanácsát.)

Hoppá, egy sajtóhiba. A for inicializálásánál kimaradt a második változó neve, azaz $l:
for ($i=0,$l=count($nev);$i<$l;$i++) {
5

a hiba nálam van

juhostt · 2012. Jan. 5. (Cs), 16.37
Igen a sajtóhibát észrevettem :)
Viszont a gondot az okozza, hogy a neme érték az egy legördülő menü, ebből jönnek át az adatok. Simán kitudom iratni, de sql-be nem megy. Ezt majd megbűvölöm, ilyen alappal, amit adtál, már könnyű elindulni. Köszi