Klaus b: array übergabe über Post,

Wenn ich eine Variable über ein Formular an ein Script übergebe, lese ich es dann mit $_POST['test'] aus.
Jetzt über gebe ich aber ein array, wie lese ich dieses aus?

Ich habe es mit $_POST['test'][$x] versucht, aber leider ist das wohl nicht korrekt!

Klaus

  1. Hallo,

    Wenn ich eine Variable über ein Formular an ein Script übergebe, lese ich es dann mit $_POST['test'] aus.
    Jetzt über gebe ich aber ein array, wie lese ich dieses aus?

    wie übergibst du es denn?

    Ich habe es mit $_POST['test'][$x] versucht, aber leider ist das wohl nicht korrekt!

    Formal schon - um mehr zu sagen, müsste man genauer wissen, was du eigentlich tust.

    Ciao,
     Martin

    --
    Das Leben ist lebensgefährlich und endet meistens tödlich.
    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
  2. Hi!

    Jetzt über gebe ich aber ein array, wie lese ich dieses aus?
    Ich habe es mit $_POST['test'][$x] versucht, aber leider ist das wohl nicht korrekt!

    Du kannst nur das auslesen, was da ist. Um zu sehen, was da ist, kann man eine Kontrollausgabe machen: var_dump($_POST) oder auch mit print_r().

    Lo!

    1. Hello,

      Jetzt über gebe ich aber ein array, wie lese ich dieses aus?
      Ich habe es mit $_POST['test'][$x] versucht, aber leider ist das wohl nicht korrekt!

      Du kannst nur das auslesen, was da ist. Um zu sehen, was da ist, kann man eine Kontrollausgabe machen: var_dump($_POST) oder auch mit print_r().

      So kann er noch nicht einmal das auslesen, was per Request "da ist", sondern nur das, was PHP daraus macht. HTTP lässt durchaus gleichnamige Parameter zu, PHP überschreibt diese aber bei der Auswertung und behält so nur den letzten in der Liste.

      Und vielleicht ist das sein Problem?

      @Klaus b:
      Um mehrere gleichnamige Parameter per HTTP an PHP zu übergebem sodass sie dort als Array bereitgestellt werden, musst Du eine besondere Notation beachten im HTML.

      Beispiel:

      <input type="text" name"textfeld[]">
         <input type="text" name"textfeld[]">
         <input type="text" name"textfeld[]">

      so würde PHP dann bei POST ein Array bereitstellen, das (u.a.) die Elemente

      $_POST['text'][0]
         $_POST['text'][1]
         $_POST['text'][2]

      enhält.

      Du kannst die Index auch fest vorgeben:

      <input type="text" name"textfeld[a]">
         <input type="text" name"textfeld[1]">
         <input type="text" name"textfeld[kalle]">

      so würde PHP dann bei POST ein Array bereitstellen, das (u.a.) die Elemente

      $_POST['text']['a']
         $_POST['text'][1]
         $_POST['text']['kalle']

      Beachte dabei, dass im HTML-Code keine Häkchen um die Bezeichner gesetzt werden dürfen, im PHP-Code aber nachher für alle assoziativen Bezeichner die String-Notation gewählt weden muss, für alle numerischen Bezeichner aber nicht.

      Liebe Grüße aus dem schönen Oberharz

      Tom vom Berg

      --
       ☻_
      /▌
      / \ Nur selber lernen macht schlau
      http://bergpost.annerschbarrich.de
      1. Hi!

        Jetzt über gebe ich aber ein array, wie lese ich dieses aus?
        Ich habe es mit $_POST['test'][$x] versucht, aber leider ist das wohl nicht korrekt!

        Du kannst nur das auslesen, was da ist. Um zu sehen, was da ist, kann man eine Kontrollausgabe machen: var_dump($_POST) oder auch mit print_r().

        So kann er noch nicht einmal das auslesen, was per Request "da ist", sondern nur das, was PHP daraus macht.

        Richtig, und deswegen sollte eine solche Kontrollausgabe immer der erste Schritt sein, damit man sieht, ob das, was man sich vorgestellt hat, auch so eintrifft oder anders aussieht. Wenn letzteres der Fall ist, kann man weitersuchen. Jedoch einfach auf gut Glück oder nach bestem Glauben zugreifen ist wenig sinnvoll.

        HTTP lässt durchaus gleichnamige Parameter zu, PHP überschreibt diese aber bei der Auswertung und behält so nur den letzten in der Liste.
        Und vielleicht ist das sein Problem?

        Kann sein, deswegen soll er ja nachsehen, ob Indizien dafür vorhanden sind - oder für was anderes. Dass er sie vielleicht noch nicht auswerten kann, weil er diesbezüglich noch Wissensbildungspotential hat, ist nicht weiter tragisch. Dann kann er ja fragen, warum er bei seiner Vorgehensweise - die er uns zeigen sollte - zu diesem Ergebnis kommt und wie er zu einem anderen gewünschtes Resultat erriechen kann.

        Um mehrere gleichnamige Parameter per HTTP an PHP zu übergebem sodass sie dort als Array bereitgestellt werden, musst Du eine besondere Notation beachten im HTML.

        Das kann eine Ursache sein, und es ist sogar die wahrscheinlichste - aber erstmal sollte man das Problem analysieren, dann lässt sich konkreter antworten als nach der Wahrscheinlichkeit.

        Lo!

        1. Hello,

          Das kann eine Ursache sein, und es ist sogar die wahrscheinlichste - aber erstmal sollte man das Problem analysieren, dann lässt sich konkreter antworten als nach der Wahrscheinlichkeit.

          Habe ich jetzt einen Antwortzähler? Ist der schon voll?

          Ich dachte mir so, dass jede (richtige) Antwort, die Lösungswege aufzeigt, dem OP helfen könnte. Wenn Du meine Fehler korrigierst, freue ich mich immer. Denn manchmal waren es dann keine "Ungeschicklichkeiten", sondern ich lerne auch etwas dabei :-)

          Wo war hier jetzt der Fehler?

          Liebe Grüße aus dem schönen Oberharz

          Tom vom Berg

          --
           ☻_
          /▌
          / \ Nur selber lernen macht schlau
          http://bergpost.annerschbarrich.de
          1. Hi!

            Ich dachte mir so, dass jede (richtige) Antwort, die Lösungswege aufzeigt, dem OP helfen könnte. Wenn Du meine Fehler korrigierst, freue ich mich immer. Denn manchmal waren es dann keine "Ungeschicklichkeiten", sondern ich lerne auch etwas dabei :-)
            Wo war hier jetzt der Fehler?

            Ob die Antwort richtig war, zeigt sich erst, ob sie die richtige für das Problem ist. Da dieses bisher nicht ausreichend beschrieben wurde, kann man das zum jetzigen Zeitpunkt noch nicht entscheiden. Mein Anliegen war, ihn zu befähigen, die Situation genauer zu untersuchen - weil man das bei vielen weiteren Problemen ebenfalls braucht - als ein paar Lösungensvorschläge zu probieren und zu sehen, ob einer davon zum Problem passt.

            Lo!