Schleife erzeugt nicht Array von den Textfeldern ...

-GS-Master

Erfahrenes Mitglied
Folgender Code gibt zwar wie gewünscht so viele Textfelder aus wie Daten in der Tabelle vorhanden sind, jedoch sehen diese Alle gleich aus ...
Folgendender Code gibt diese Ausgabe aus ... [0] [1] [2] macht er nicht ...

HTML:
<tr>
		<td width="40">ID:</td>
		<td width="54">
        <input type="text" name="number[]" value="1" size="20"?>" size="3"></td>

		<td width="55">NAME:</td>
		<td width="209">
        <input type="text" name="name[]" value="guestbook" size="20"?>" size="20"></td>
		<td width="81">ADDRESS: </td>
		<td width="170">
        <input type="text" name="add[]" value="?index=lol" size="20"?>" size="23"></td>
	</tr>	
		
	
	<tr>

		<td width="40">ID:</td>
		<td width="54"><input type="text" name="number[]" size="3"></td>
		<td width="55">NAME:</td>
		<td width="209"><input type="text" name="name[]" size="20"></td>
		<td width="81">ADDRESS: </td>
		<td width="170"><input type="text" name="add[]" size="23"></td>
	</tr>

PHP:
<?php

$select = mysql_query("SELECT * FROM navigation ORDER by id");

?>

<form id="FormName" enctype="multipart/form-data" action="<?=$_SERVER['PHP_SELF']?>" method="post" name="FormName">
<table border="0" cellspacing="2" cellpadding="3" width="627">
	<tr>
		<td colspan="6" width="617">
			<center>
				<b>Navitationsleiste</b></center>
		</td>
	</tr>
	
<?
while($r = mysql_fetch_array($select))
	{
		?>
		
	<tr>
		<td width="40">ID:</td>
		<td width="54">
        <input type="text" name="number[]" value="<?=$r["id"]?>" size="20" size="3"></td>
		<td width="55">NAME:</td>
		<td width="209">
        <input type="text" name="name[]" value="<?=$r["name"]?>" size="20" size="20"></td>
		<td width="81">ADDRESS: </td>
		<td width="170">
        <input type="text" name="add[]" value="<?=$r["add"]?>" size="20" size="23"></td>
	</tr>	
		
<? } ?>
	
	<tr>
		<td width="40">ID:</td>
		<td width="54"><input type="text" name="number[]" size="3"></td>
		<td width="55">NAME:</td>
		<td width="209"><input type="text" name="name[]" size="20"></td>
		<td width="81">ADDRESS: </td>
		<td width="170"><input type="text" name="add[]" size="23"></td>
	</tr>
	
	
	<tr>
		<td width="40"></td>
		<td width="569" colspan="5"><input type="submit" name="senden" value="Daten speichern"></td>
	</tr>
</table>
</form>
<hr>
</body>
</html>
 
mysql_fetch_array:

mysql_fetch_array — Liefert einen Datensatz als assoziatives Array, als numerisches Array oder beides

D.h
1. entweder du gibts noch ein Parameter an die Funktion ...:
array mysql_fetch_array ( resource Ergebnis-Kennung [, int Ergebnistyp] )
2. du verwendest mysql_fetch_assoc

Quelle: php.net

PS: hatte selbst so ein ähnliches Problem vor Tagen ...
Ansosten ein Blick in die Doku kann nicht schaden.

MfG
 
Also ich schau dann mal nach deinem Beitrag.
Muss dazu sagen, dass die Ausgabe richtig erfolgt, nur bin ich es gewohnt, dass bei einem Textfeld normalerweiße in namen [] mint eingegeben wird und dass ganze dann wie folgt wird

HTML:
<input type="text" name="number[0]" size="3">
<input type="text" name="number[1]" size="3">
<input type="text" name="number[2]" size="3">

Die Daten werden korrekt aus der DB entnommen ...
Schau jetzt trotzdem nach deinem Eintrag ^^

Weshalb ich mich ja gemeldet habe ist, dass ich diese Schleife richtig habe, nur macht er folgendes

HTML:
<input type="text" name="number[]" size="3">
<input type="text" name="number[]" size="3">
<input type="text" name="number[]" size="3">

Und so kann ich das nacher nicht weiterverarbeiten ...
 
Zuletzt bearbeitet:
Doch, damit kannst du auch so weiter arbeiten. Sollte das Formular abgeschickt werden, erhältst du trotzdem dein Array der gewünschten Form, auch wenn im HTML-Code keine Zahlen in den eckigen Klammern stehen. Die Anweisung

PHP:
$test[] = 'a';

fügt dem Array $test den Eintrag 'a' hinzu (also eine Kurzform der Funktion array_push()) und genau das gleiche passiert auch, wenn du ein Formular mit dem Feldnamen test[] abschickst.

Wenn du allerdings wirklich schon im HTML-Code die Zahlen stehen haben möchtest, musst du statt der while- eine for-Schleife nehmen und dann die Zahlen an den entsprechenden Stellen einfügen:

PHP:
<?php
for ($i = 0; $r = mysql_fetch_array($select); $i++) {
?>

  <input type="text" name="number[<?= $i ?>]" size="3">

<?php
}
?>
 
Zurück