schleifen in schleife
phillip
- php
hallo!
ich habe folgenden code:
<?php
while ($row2 = @mysql_fetch_array($sql_res2)) //schleife 1
{
?>
<tr>
<td>
<select name="vereins_id[]">
<?php
while ($row4 = @mysql_fetch_array($sql_res4)) //schleife 2
{
echo "<option ";
if ($row2["vereins_id"] == $row4["id"]) { echo "selected "; }
echo "value="".$row4["id"]."">".$row4["name"]."</option>";
}
?>
</select>
</td>
<td>
<select name="user_id[]">
<?php
while ($row3 = @mysql_fetch_array($sql_res3)) //schleife 3
{
echo "<option ";
if ($row2["user_id"] == $row3["id"]) { echo "selected "; }
echo "value="".$row3["id"]."">".$row3["name"]."</option>";
}
?>
</select>
</td>
</tr>
<?php
}
?>
das problem ist, dass die beiden schleifen 2 und 3 nur beim ersten durchgang von schleife 1 ausgeführt werden. also angenommen die erste schleife wird 10 mal durchgeführt, dann werden zwar 10 zeilen in der tabelle als ausgabe erstellt und auch alle select felder, nur werden den select forms nicht die zugehörigen option tags angefügt. also werden die beiden inneren schleifen nicht mehr ausgeführt. weiss jemand woran das liegen kann?
danke,
phillip
Hi,
das problem ist, dass die beiden schleifen 2 und 3 nur beim ersten durchgang von schleife 1 ausgeführt werden. also angenommen die erste schleife wird 10 mal durchgeführt, dann werden zwar 10 zeilen in der tabelle als ausgabe erstellt und auch alle select felder, nur werden den select forms nicht die zugehörigen option tags angefügt. also werden die beiden inneren schleifen nicht mehr ausgeführt. weiss jemand woran das liegen kann?
Das liegt daran, dass der Zeiger des Arrays am Ende sitzt und somit keine Elemente mehr ausgelesen werden können. Müsstest das Array wieder zurücksetzten.
HTH
Franz
Das liegt daran, dass der Zeiger des Arrays am Ende sitzt und somit keine Elemente mehr ausgelesen werden können. Müsstest das Array wieder zurücksetzten.
hmm wenn ich das mit reset($row3); mache kommt da Warning: reset() [function.reset]: Passed variable is not an array or object in ....
Γειά σου, phillip!
<?php
[Code]
?>das problem ist, dass die beiden schleifen 2 und 3 nur beim ersten durchgang von schleife 1 ausgeführt werden. also angenommen die erste schleife wird 10 mal durchgeführt, dann werden zwar 10 zeilen in der tabelle als ausgabe erstellt und auch alle select felder, nur werden den select forms nicht die zugehörigen option tags angefügt. also werden die beiden inneren schleifen nicht mehr ausgeführt. weiss jemand woran das liegen kann?
Wie Franz bereits erwähnt hat, musst du den Datensatz-Zeiger innerhalb des Abfrage-Ergebnisses wieder an den Anfang desselben bewegen. mysql_fetch_array() verschiebt ihn bei jedem Aufruf um eine Stelle weiter nach "hinten" im Abfrage-Ergebnis, mit mysql_data_seek() kannst du ihn zurück auf z. B. den Anfang des Abfrage-Ergebnisses setzen. Konkret musst du dafür deinen Code wie folgt verändern:
while (...) # Schleife 1
{
...
while ($row4 = @mysql_fetch_array ($sql_res4)) # Schleife 2
{
...
}
mysql_data_seek ($sql_res4, 0); # Zurücksetzen des Datensatz-Zeigers
while ($row3 = @mysql_fetch_array($sql_res3)) # Schleife 3
{
...
}
mysql_data_seek ($sql_res3, 0); # Zurücksetzen des Datensatz-Zeigers
...
}
Hi!
Danke, das funktioniert wunderbar! Vielen Dank!
Grüße aus Husum
Phillip