PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : POST Frage



oafish
03-06-2004, 15:30
Hi,
habe wiedermal ein kleines Problem. Und zwar lese ich sehr viele Werte aus einer DAtenbank ein. Beispielsweise Vorname, Nachname,PLZ,Ort.

Die Ansicht sieht dabei so aus:



aaa bbb ccc ddd
eee fff ggg hhh
etc.


Diese Werte kann ich nun ändern.
Wenn ich nun mittels POST die Werte zur Auswertung weiterleite, erhalte ich immer nur den letzten Datensatz. Ich möchte aber alle angezeigten Wert, egal ob geändert in die DB einfügen.

Wie funktioniert das... oder geht es vielleicht gar nicht???

oafish

Claudine
03-06-2004, 16:15
Original geschrieben von oafish


Wie funktioniert das... oder geht es vielleicht gar nicht???

Gehen tut immer alles.

Poste mal die Scripts, dann sehen wir weiter.

oafish
04-06-2004, 06:40
Gudden Morschen,
also so sieht mein Code aus. Wird in einer Schleife ca. 20-30x durchlaufen:



echo "<td width=\"2\"><input name=\"name\" type=\"text\" size=\"2\" value=\"".$row[0]."\"></td>\n";
echo "<td width=\"40%\"><input name=\"vorname\" type=\"text\" size=\"38%\" value=\"".$row[1]."\"></td>\n";


Eine Beispielsausgabe:

Name: Vorname:
Müller Peter
Schmidt Klaus
Kuhn Gustav


Wenn ich nun die 3 Werte auf dem Bildschirm habe und diese mittels post übergebe, erscheint immer nur der letzte Wert(Kuhn Gustav)! Es sieht so aus, als ob alle vorherigen Werte, bis auf den Letzten, vergessen wurden.

Die Auswertung mache ich folgendermaßen:


while (list($key,$val)=each($HTTP_POST_VARS))
echo "$key : $val


vielleicht sieht jemand einen Fehler. Danke
oafish

mehlvogel
04-06-2004, 07:33
Ich vermute mal das deine Inputfelder alle gleich heißen, was natürlich nicht klappen kann, weil die Werte dann immer überschrieben werden und der letzte Wert dann dadrin steht.

Lösung: Entweder deklarierst du das input Feld als Array oder du gibst jedem Feld einen Unterschiedlichen Namen. Wobei ersteres SEHR viel einfacher, schöner und besser zu erweitern, und zu warten.

oafish
04-06-2004, 09:32
Danke für die antworten. Mittels get kann ich sehen das tatsächlich alles übertragen wurde. Aber get kann ich nicht verwenden da es max. 2000Zeichen übertragen kann.

Sobald ich die Strasse, Ort und PLZ mit übergeben möchte, funktionierts nicht mehr. Es wird lediglich der key und das allerletzte Element angezeigt. So hab ich es getestet:



foreach ($HTTP_POST_VARS as $key=>$val)
echo "$key: $val","<br>";


Ich habe jetzt jedem Datensatz einen eindeutigen Namen gegeben. Bringt aber auch nichts.
Vielleicht kann mir jemand mit einem kleinen Beispiel weiterhelfen.
Danke bereits im voraus.
oafish

oafish
04-06-2004, 09:57
Ach ich superheld. Es hat die ganze Zeit funktioniert! Musst nur beim Browser die Seite aktualisieren.
Was mich noch wundert, ich verwende eine Checkbox. Diese wird nicht mittels post weitergeleitet. Verändere ich den Wert, wird dieser mittels Post übertragen. Weshalb ist das denn so?

oafish

oafish
04-06-2004, 12:12
Hi,
also hier mein kleiner Codeschnippel



echo "<td width=\"1\"><input type=\"checkbox\" name=\"".$i."\" value=\"".$row[4]."\" checked></td>";

Der gleiche schnippel existiert noch für eine nicht geklickte checkbox. Der Wert der Checkbox wird nichteinmal mittels Get weitergeleitet. Erst wenn ich die Checkbox angeklickt habe funktionierts wie gewünscht.

oafish

Gaert
04-06-2004, 16:07
Original geschrieben von oafish
...Erst wenn ich die Checkbox angeklickt habe funktionierts wie gewünscht.


Das ist AFAIK normal!

Um nochmal weiter oben einzusteigen:


while (list($key,$val)=each($HTTP_POST_VARS))

echo "$key : $val


verwende für solche Fälle stattdessen:



foreach($HTTP_POST_VARS as $key=>$val)

echo "$key : $val


Ist schöner ;)

oafish
05-06-2004, 08:12
Guten Morgen,
also so normal empfinde ich das mit den Checkboxen nicht! Zumal ich den Stand der Checkbox mit auswerten muss. Gibt es denn gar keine Möglichkeit irgendwie über einen Trick ran zu kommen? Meine nur, weil es wird alles in einem Array gespeichert und ich muss dieses auseinander pflücken. Wenn ich dies tue, weiß ich nie ob der Wert zur Checkbox gehört oder bereits der nächste Wert in der Spalte ist.


oafish

oafish
05-06-2004, 10:25
Eigentlich bin ich fertig. Nur das Problem mit den Checkboxen bleibt noch...

oafish

Gaert
05-06-2004, 11:28
Poste mal bitte deinen Code und den HTML Output, mit dem Formular.

oafish
06-06-2004, 11:30
Morgen,
es ist immer dasselbe, egal ob Radiobutton oder Checkbox. Werden diese nicht angeklickt, werden diese von post nicht übernommen!

So sieht meine checkbox aus:

echo "<td width=\"1\"><input type=\"checkbox\" name=\"".$i."\" value=\"".$row[4]."\" checked></td>";

Das gleiche gibt es auch für nicht gechecked. Merkwürdigerweise überträgt GET es korrekt! Wie kann den sowas vorkommen... stimmt vielleicht was mit meiner PHP-Konfiguration nicht?

oafish

mehlvogel
06-06-2004, 11:40
Wenn eine checkbox / radiobutton nicht angeklickt ist, wird sie auch nicht übertragen. Das ist ganz normal.