chris: Arrays per formular verschicken

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

  1. 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

    --
    sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
    „It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
    [HTML Design Constraints: Logical Markup]
    1. 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

      1. 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

        --
        sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
        „It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
        [HTML Design Constraints: Logical Markup]
        1. 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

    2. 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

      --
      -------------------
      ie:| fl:| br:> va:| ls:& fo:) rl:( n4:{ ss:) de:] js:| ch:? mo:} zu:|