mysql_fetch_array in einer foreach Schleife
Schnaps
- php
Hallo
ich habe mir folgende Funktion geschrieben, die mir eine Tabelle mit unterschiedlich vielen Zeilen wieder geben soll, in der dann Input Felder sind.
<?
#################################################
## INPUT FELDER TABELLE
#################################################
function sonden_input($felder_str,$id){
// ÜBERGEBENEN STRING ZERLEGEN
$felder = explode (",", $felder_str);
$sql="SELECT ".$felder_str." FROM planet
where id=".$id."";
$query=mysql_query($sql);
echo "<table border="0">\n";
foreach ($felder as $name){
$data=mysql_fetch_array($query);
echo "\t<tr>\n";
echo "\t\t<td align="left">".ucfirst($name).":</td>\n";
echo "\t\t<td><input name="".$name."" type="text" size="5" maxlength="5" value="".$data[$name]."" >[in %]</td>\n";
echo "\t</tr>\n";
}
echo "</table>\n";
}
?>
Ich rufe die Funktion wiefolgt auf
sonden_input('lebensbedingungen,eisen,eis,chemie,forschungs_mod',66)
Die Tabelle und alle Inputfelder werden auch richtig erzeugt. Aber der Startvalue, der in den Input Feldern stehen soll ist nur bei dem ersten Input Feld zu sehen.
Hier mal der HTML Code der generiert wird.
<table border="0">
<tr>
<td align="left">Lebensbedingungen:</td>
<td><input name="lebensbedingungen" type="text" size="5" maxlength="5" value="112" >[in %]</td>
</tr>
<tr>
<td align="left">Eisen:</td>
<td><input name="eisen" type="text" size="5" maxlength="5" value="" >[in %]</td>
</tr>
<tr>
<td align="left">Eis:</td>
<td><input name="eis" type="text" size="5" maxlength="5" value="" >[in %]</td>
</tr>
<tr>
<td align="left">Chemie:</td>
<td><input name="chemie" type="text" size="5" maxlength="5" value="" >[in %]</td>
</tr>
<tr>
<td align="left">Forschungs_mod:</td>
<td><input name="forschungs_mod" type="text" size="5" maxlength="5" value="" >[in %]</td>
</tr>
</table>
So wie ich das sehe, wird der mysql_fetch_array() Befehl hier nicht ausgeführt wie ich das erwarten würde, kann mir einer von euch sagen warum, bzw wie ich es besser machen kann.
Würde mich über etwas Hilfe sehr freuen.
MFG
Schnaps
Hallo,
setze den fetch vor die foreach-Schleife und schon sollte es klappen.
Da Deine SQl-Abfrage nur einen Datensatz liefert (denke ich mal...), darfst du auch nur ein fetch ausführen. Jeder weiterer Aufruf liefert Dir leere Werte. Deswegen hast du auch nur beim ersten Schleifendurchlauf eine korrekte Ausgabe.
Grüße
Thomas Mell