Ingo: Probleme mit Array bei Mehrfachauswahl

Habe ein Formular geschrieben, welches Daten an sich selbst sendet und per Mail verschickt. Leider gelingt mir die Verarbeitung eines Arrays nicht. Es ist eine Mehrfachauswahl bei 3 Checkboxen möglich. Die Häkchen sollen im Array daten[] gespeichert werden. Wenn ich das Array aber nach dem Absenden in derselben Datei ausgeben will bzw. in die Mail packen will, dann klappt es nicht. Entweder gibt er mir "Array" aus, gar nichts oder nur der letzte angeklickte Wert. Irgendwo muss wohl ein Syntax-Fehler sein, ich habe keine Ahnung wo.

Leider habe ich das Skript nicht hier auf dem Rechner, könnte morgen den Quelltext nachliefern. Aber wie funktioniert das grundsätzlich. Normalerweise kann ich das Array doch mit $_POST[daten] z.b. in eine String-Variable kopieren.

  1. Hi,

    vielleicht hilft dir das Beispiel aus der PHP-FAQ weiter.

    Leider habe ich das Skript nicht hier auf dem Rechner, könnte morgen den Quelltext nachliefern. Aber wie funktioniert das grundsätzlich. Normalerweise kann ich das Array doch mit $_POST[daten] z.b. in eine String-Variable kopieren.

    dann hast du es nicht in einen String kopiert sondern in ein lokales Array. Warum sollte es plötzlich ein String werden?

    MfG
    Rouven

    --
    -------------------
    Let Bygones Be Bygones  --  Robert Pitscottie: "Chronicles of Scotland"
    1. So, hier der Quelltext:

      Hier die Checkbox-Auswahl:

      <td class="formular">
      <input class="auswahlbox" type="Checkbox" name="daten[]" value="Vanille"> Vanille<br>
      <input class="auswahlbox" type="Checkbox" name="daten[]" value="Schokolade"> Schokolade<br>
      <input class="auswahlbox" type="Checkbox" name="daten[]" value="Kokos"> Kokos
          </td>

      Beim Absenden werden die Daten dann an die Datei selbst geschickt, die folgendes mit dem Array macht:
      $daten = $_POST['daten'];

      und dann alle Inhalte des Formulars verknüpft und per Mail versendet (hier der Ausschnitt zum Array):
      $mailbody = $mailbody."Datne: $daten\n";

      Was mache ich falsch? Zur Zeit gibt er einfach "Array" aus. Hatte es auch schon so das er nur das zuletzte angeklickte Häkchen ausgibt.

      1. echo $begrüßung;

        <input class="auswahlbox" type="Checkbox" name="daten[]" value="Vanille"> Vanille<br>
        <input class="auswahlbox" type="Checkbox" name="daten[]" value="Schokolade"> Schokolade<br>
        <input class="auswahlbox" type="Checkbox" name="daten[]" value="Kokos"> Kokos
        $daten = $_POST['daten'];
        $mailbody = $mailbody."Datne: $daten\n";
        Was mache ich falsch? Zur Zeit gibt er einfach "Array" aus. Hatte es auch schon so das er nur das zuletzte angeklickte Häkchen ausgibt.

        $daten ist ein Array. Für Arrays gibt es keine Darstellung als String. Die von PHP automatisch vorgenommene Typumwandlung von Array nach String ergibt nur das Wort 'Array'. Du musst entweder das Array durchlaufen und mit den Einzelwerten (die ja Strings sind) irgendwas anstellen oder PHP-Funktionen nutzen, die das automatisch machen. Beispielsweise wäre da implode() zu nennen, das die Werte eines Arrays hintereinander in einen String kopiert.

        echo "$verabschiedung $name";

        1. Super, funktioniert! Danke für die Hilfe!

          $daten ist ein Array. Für Arrays gibt es keine Darstellung als String. Die von PHP automatisch vorgenommene Typumwandlung von Array nach String ergibt nur das Wort 'Array'. Du musst entweder das Array durchlaufen und mit den Einzelwerten (die ja Strings sind) irgendwas anstellen oder PHP-Funktionen nutzen, die das automatisch machen. Beispielsweise wäre da implode() zu nennen, das die Werte eines Arrays hintereinander in einen String kopiert.

          echo "$verabschiedung $name";