Olk Okenheld: checkboxen an Mail übergeben - mehrere Werte

Hallo zusammen,

ich habe ein Problem, ich wollte in einem funktionierenden Formular zwei Fragen mit checkboxen ergänzen, aber leider bekomme ich max. einen der Werte zurück, warum und was muss ich ändern, damit die Mail die Werte aller angekreuzten checkboxen enthält?

Formular:
...
<input type="checkbox" name="Bereitschaft[]" value="ja - f&uuml;r weitere Frageb&ouml;gen"> ja - f&uuml;r weitere Frageb&ouml;gen<br>
  <input type="checkbox" name="Bereitschaft[]" value="ja - f&uuml;r Interviews"> ja - f&uuml;r Interviews<br>
  <input type="checkbox" name="Bereitschaft[]" value="ja - f&uuml;r Testprodukte"> ja - f&uuml;r Testprodukte<br>
 <input type="checkbox" name="Bereitschaft[]" value="nein"> nein<br>
...

PHP-Datei, zum auswerten versenden der E-Mail:
...
/* Bestimmen der Eingabefelder - Teilname am Projekt */
$field20 = $_POST["Bereitschaft"];
...

...
/* Aussehen der E-Mail die gesendet wird */
$message = '
...
'.$_POST["Bereitschaft"].'
...

Früher war an Stelle der checkbox, hier ein radiobutton, der die eine, ausgewählte Antwort auch bestens eingefügt hat, aber nach der Änderung in checkboxen bleibt es leider bei einer, nämlich der letzten Antwort, alle vorherigen werden, bei gesetztem Häkchen ignoriert...

Wer kann mir sagen was ich beim Auswerten des Array falsch mache, dass nur der letzte Wert angegeben wird?

Danke

Olk

  1. Hi,

    $field20 = $_POST["Bereitschaft"];

    Warum diese Zuweisung?

    Früher war an Stelle der checkbox, hier ein radiobutton, der die eine, ausgewählte Antwort auch bestens eingefügt hat, aber nach der Änderung in checkboxen bleibt es leider bei einer, nämlich der letzten Antwort, alle vorherigen werden, bei gesetztem Häkchen ignoriert...

    Das ist eigenartig. Eigentlich müsste $_POST['Bereitschaft'] ein Array mit allen ausgewählten Antworten sein. Um all diese Antworten zu erhalten müsstest du es also wie ein Array behandeln. So zum Beispiel.

    $message = '  
    ...  
    Ausgewählte Antworten:  
    '.explode("\n",$_POST['Bereitschaft']).'  
    ...  
    ';
    

    Warum in deinem Fall immer nur die letzte ausgewählte Antwort ausgegeben wird kann ich nicht erklären. Vielleicht ist in dem Formular versehentlich die alte Version mit den Radiobuttons noch mitenthalten?

    Gruß,
    Felix

    --
    Nichts auf der Welt ist so gerecht verteilt wie der Verstand. Denn jedermann ist überzeugt, dass er genug davon habe.
    René Descartes
    1. $field20 = $_POST["Bereitschaft"];
      Warum diese Zuweisung?

      Das liegt daran, dass ich gegen Ende des Scrips eine Abfrage nach dem Vorhandensein bestimmter Felder durchführe, in diesem Fall halt $field20...

      Warum in deinem Fall immer nur die letzte ausgewählte Antwort ausgegeben wird kann ich nicht erklären. Vielleicht ist in dem Formular versehentlich die alte Version mit den Radiobuttons noch mitenthalten?

      Vielleicht hat er wirklich noch die alte PHP aufgerufen, denn jetzt zum Schluss kam in meiner ursprünglichen Version immer "Array" als Antwort in der Mail.

      Das ist eigenartig. Eigentlich müsste $_POST['Bereitschaft'] ein Array mit allen ausgewählten Antworten sein. Um all diese Antworten zu erhalten müsstest du es also wie ein Array behandeln. So zum Beispiel.

      $message = '

      ...
      Ausgewählte Antworten:
      '.explode("\n",$_POST['Bereitschaft']).'
      ...
      ';

        
      Jetzt gibt er als Antwort in der Mail "Array" aber auch weiterhin nicht welche checkboxen ich gewählt habe...  
        
        
      
      
      1. $message = '

        ...
        Ausgewählte Antworten:
        '.explode("\n",$_POST['Bereitschaft']).'
        ...
        ';

          
        Da er damit ja wieder nur das Wort "Array" ausgegeben hat, habe ich jetzt weiter probiert, aber nichts funktioniert, außer, wenn ich das Script jeden einzelnen Wert ausgeben lasse. z.B.:  
          
        ...  
        ~~~php
          
        '.$field20[0].'  
        '.$field20[1].'  
        '.$field20[2].'  
        '.$field20[3].'  
        
        

        ...

        Dann gibt er jeden Wert einzeln aus, aber es kann doch nicht sein, dass ich für jeden möglichen Wert im Array eine eigene Ausgabe schreiben muss, da muss es doch einen Befehl geben, der das gesamte Array ausgibt oder irre ich so???

      2. echo $begrüßung;

        Um all diese Antworten zu erhalten müsstest du es also wie ein Array behandeln. So zum Beispiel.

        $message = '

        Ausgewählte Antworten:
        '.explode("\n",$_POST['Bereitschaft']).'
        ';

        
        > Jetzt gibt er als Antwort in der Mail "Array" aber auch weiterhin nicht welche checkboxen ich gewählt habe...  
          
        Er meinte ja auch implode() statt explode(). Liest du überhaupt nicht nach, was die die anempfohlenen Funktionen machen? Nur du kannst letzlich entscheiden, ob die Lösung die gesuchte ist. Doch dazu muss man sie auch verstehen. Vielleicht hat sich ja der Antwortende geirrt oder dir wissentlich was falsches gesagt.  
          
          
        echo "$verabschiedung $name";
        
        1. Hi,

          Er meinte ja auch implode() statt explode().

          Und das kann man nicht mal zum Tippfehler erklären :)
          Ja, natürlich meinte ich implode().

          Gruß,
          Felix

          --
          Nichts auf der Welt ist so gerecht verteilt wie der Verstand. Denn jedermann ist überzeugt, dass er genug davon habe.
          René Descartes
        2. $message = '  
          Ausgewählte Antworten:  
          '.implode("\n",$_POST['Bereitschaft']).'  
          ';
          

          Er meinte ja auch implode() statt explode(). Liest du überhaupt nicht nach, was die die anempfohlenen Funktionen machen? Nur du kannst letzlich entscheiden, ob die Lösung die gesuchte ist. Doch dazu muss man sie auch verstehen. Vielleicht hat sich ja der Antwortende geirrt oder dir wissentlich was falsches gesagt.

          Jetzt funktioniert es, danke. :-)
          In der Tat hab ich mir gestern keinen großen Kopf mehr darüber gemacht, was explode bewirkt und es auch nicht nachgeschlagen, ich war wohl zu müde und genervt, dass es nicht funktionieren wollte und dass hier jemand mit Absicht was falsches sagtm kann ich mir nicht vorstellen. Oder kommt das hier öfter vor?

          1. echo $begrüßung;

            dass hier jemand mit Absicht was falsches sagtm kann ich mir nicht vorstellen. Oder kommt das hier öfter vor?

            Bösartige Absicht habe ich noch nicht erkennen können. Aber Wissenslücken, Tipp-, Formulierungs- und gedankliche Fehler kommen gelegentlich vor.

            echo "$verabschiedung $name";