Arrays per formular verschicken
chris
- php
hi,
ich habe folgendes Problem:
ich versuche ein definiertes Array über ein hidden-feld im formular zu veschicken. Dies sieht in etwa so aus:
$test=array("1","2","3","4");
<form action="test.php" method="post">
<input type="hidden" name="test" value="$test">
</form>
Wenn ich jetzt in dem script die Variable $_POST['test'] auslese, welche ein array sein sollte und mit print_r() versuche anzeigen zu lassen, steht da nur "Array".
Was mache ich falsch?
danke für Antwort
Chris
Hallo chris.
ich versuche ein definiertes Array über ein hidden-feld im formular zu veschicken. Dies sieht in etwa so aus:
$test=array("1","2","3","4");
Warum deklarierst du hier numerische Werte als Zeichenketten?
<form action="test.php" method="post">
<input type="hidden" name="test" value="$test">
</form>Wenn ich jetzt in dem script die Variable $_POST['test'] auslese, welche ein array sein sollte und mit print_r() versuche anzeigen zu lassen, steht da nur "Array".
Genau das ist es ja auch, was du übermittelst. Du gibst als Wert des value-Attributes den Array namens $test aus. Und der Wert eines jeden Arrays ist nun einmal „Array“, ungeachtet der in ihm enthaltenen Werte.
So ergibt folgendes ebenfalls „Array“, da du ja keinen Schlüssel angibst, dessen Wert ausgegeben werden soll:
echo $test; // Array
Mein Tipp also: Lasse dir mit Hilfe einer Schleife für jeden Wert des Arrays ein <input type="hidden" /> ausgeben. Wenn alle den selben Wert fürs name-Attribut haben, wandelt PHP dies automatisch beim Empfang in ein Array um.
Einen schönen Sonntag noch.
Gruß, Ashura
Hallo chris.
ich versuche ein definiertes Array über ein hidden-feld im formular zu veschicken. Dies sieht in etwa so aus:
$test=array("1","2","3","4");
Warum deklarierst du hier numerische Werte als Zeichenketten?
Ja, ok, mein fehler, ich wollte nur ein einfaches Beispiel liefern ;-)
<form action="test.php" method="post">
<input type="hidden" name="test" value="$test">
</form>Wenn ich jetzt in dem script die Variable $_POST['test'] auslese, welche ein array sein sollte und mit print_r() versuche anzeigen zu lassen, steht da nur "Array".
Genau das ist es ja auch, was du übermittelst. Du gibst als Wert des value-Attributes den Array namens $test aus. Und der Wert eines jeden Arrays ist nun einmal „Array“, ungeachtet der in ihm enthaltenen Werte.
So ergibt folgendes ebenfalls „Array“, da du ja keinen Schlüssel angibst, dessen Wert ausgegeben werden soll:
echo $test; // Array
Mein Tipp also: Lasse dir mit Hilfe einer Schleife für jeden Wert des Arrays ein <input type="hidden" /> ausgeben. Wenn alle den selben Wert fürs name-Attribut haben, wandelt PHP dies automatisch beim Empfang in ein Array um.
Aber ein komplettes Array kann man nicht veschicken, oder?
Einen schönen Sonntag noch.
dir auch
Gruß, Ashura
Hallo chris.
Ich bitte dich, nur das zu zitieren, worauf du dich wirklich beziehen möchtest. Danke.
Aber ein komplettes Array kann man nicht veschicken, oder?
Das tust du doch mit der von mir genannten (und Rouvens) Lösung.
Falls du meinst, dass du die Datenstruktur „Array“ übertragen möchtest: nein, dass ist bedingt durch HTTP nicht möglich.
Einen schönen Sonntag noch.
Gruß, Ashura
Ich bitte dich, nur das zu zitieren, worauf du dich wirklich beziehen möchtest. Danke.
ok, ich versuchs ;-)
Falls du meinst, dass du die Datenstruktur „Array“ übertragen möchtest: nein, dass ist bedingt durch HTTP nicht möglich.
ok, danke, habt mir sehr geholfen, euch auch noch einen schönen sonntag
chris
Hallo ihr,
Mein Tipp also: Lasse dir mit Hilfe einer Schleife für jeden Wert des Arrays ein <input type="hidden" /> ausgeben. Wenn alle den selben Wert fürs name-Attribut haben, wandelt PHP dies automatisch beim Empfang in ein Array um.
Alternativ kannst du auch noch serialize und das entsprechende Pendant verwenden, oder die Daten gar nicht erst über das Formular sondern eine Session von Skript A zu Skript B transportieren.
MfG
Rouven