datenbank mit daten aus tabelle füllen (php)
-
hey hallo,
ich erstelle dynamisch sehr lange html-tabellen. jede zeile stellt einen artikel dar, der in der tabelle verändert werden kann (jede zeile/spalte editierbar). wenn ich nun auf "abschicken" klicke, sollen alle zeilen, die verändert wurden in eine datenbank geschrieben werden.
ich bekomme alles hin, nur eines verstehe ich nicht:
zeilen wie diese hier gibt es viele. wie bringe ich die denn später in die datenbank zurück?tabelle steckt natürlich in einer <form.. <tr> <td>egal</td> <td>was</td> <td><input name="10001" type="text" value="123"></td> <td><input name="bestaetigung" type="checkbox" value="10001" checked="checked"></td> </tr>
ich kann die felder auslesen mit
$menge = $_POST["10001"];
aber ich kann doch nicht für jede zeile eine eigene variable erstellen?! 10001 ist die artikel-nr, die verändert sich ja.
kann ich soas wie ein array benutzen? wennn ja wie?
danke..
-
Hallo,
ja das kannst du mit Arrays machen...
<input type="text" name="nummer[]"> <!-- //---------------------------------------------// --> <? foreach($_POST['nummer'] as $wert) { echo "$wert<br />"; } // oder: for ($i = 0; $i < sizeof($_POST['nummer']); $i++) { echo $_POST['nummer'][$i]."<br />"; } ?>
LG, Micha
-
hi micha,
danke schonmal! ich bekomme es aber leider nicht ganz hin..
die eingabefelder erzeuge ich folgendermmaßen mit php, jede $art_nr ist einzigartig und $val ist der jeweilige wert den ich editieren möchte:
echo '<td><input name="'.$nummer[$art_nr].'" type="text" value="'.$val.'"></td>';
ok, mit folgender abfrage, bekomme ich leider nichts angezeigt:
for ($i = 0; $i < sizeof($_POST['nummer']); $i++) { echo $_POST['nummer'][$i]."<br />"; }
muss ich das array $nummer[] irgendwo noch initialisieren oder so?
-
Hallo,
das Array wird im HTML erzeugt.
Anstelle von:
<input type="text" name="artikelnummer1" /> <input type="text" name="bezeichner1" /> <input type="text" name="artikelnummer2" /> <input type="text" name="bezeichner2" /> <input type="text" name="artikelnummer3" /> <input type="text" name="bezeichner3" />
erzeugst du ein Input-Array in Form von:
<input type="text" name="artikelnummer[]" /> <input type="text" name="bezeichner[]" /> <input type="text" name="artikelnummer[]" /> <input type="text" name="bezeichner[]" /> <input type="text" name="artikelnummer[]" /> <input type="text" name="bezeichner[]" />
Das kannst du dann mittels Post und dem oben gezeigtem Code auslesen...
Die ID des Artikels findet sich ja im Value des ID-Feldes wieder, und somit sind sie zugewiesen.for ($i = 0; $i < sizeof($_POST['nummer']); $i++) { echo $_POST['bezeichner'][$i]."<br />"; // "UPDATE tab_artikel SET bezeichnung='".$_POST['bezeichner'][$i]."' WHERE artnr='".$_POST['nummer'][$i]."'"; }
LG, Micha
-
ahhh! alles klar, okay funktioniert soweit.. besten dank:)
jetzt hab ich allerdings noch ein kleines anderes problem.
in jeder zeile habe ich noch eine checkbox.
echo '<td><input name="nummer[]" type="text"></td>'; echo '<td><input name="bestaetigung[]" type="checkbox" value="">';
ich möchte nur die zeilen in die datenbank schieben, die die checkbox aktiviert haben.
mit deiner lösung kann ich die auslesen, aber nicht parallel, da sie unterschiedliche größen haben.for ($i = 0; $i < sizeof($_POST['nummer']); $i++) { if(isset($_POST['bestaetigung'][$i])) { echo $_POST['nummer'][$i]."<br />"; } }
in nummer[] sind alle zeilen der tabelle, wärend in bestaetigung[] NUR die aktiven übermittelt werden,, dh. in der regel deutlich weniger! daher kann ich den $i-index nicht für beide benutzen.
ich bräuchte also etwas, dass mir die beiden variablen eindeutig verbindet.. so ne art "join" der zeilen oder so.
-
Hallo,
dann gib doch der Checkbox als Value die Nummer - die ist ja sowieso unveränderlich - hast du gesagt!
Und dann greif über das Value der Checkbox auf die Nummer zu!
LG, Micha
-
alles klar, besten dank! hat geklappt, läuft jetzt wunderbar(:
beste grüße!07:15:28
wow..