Checkbox mit Mehrfachauswahl durch php versenden

fotojacky

Grünschnabel
Hallo

Wie versende ich das Ergebnis einer Checkbox mit Mehrfachauswahl durch PHP?
Seit Tagen versuche ich mit verschiedenen Möglichkeiten das Problem in den Griff zu bekommen.

Hier ist mein html Code:
HTML:
<div class="col-md-3">
    <h4>Naturwagen</h4>
    <div class="checkbox"><label><input name="naturwagen[]" type="checkbox" value="schäfer" multiple />Schäferwagen</label></div>
    <div class="checkbox"><label><input name="naturwagen[]" type="checkbox" value="pipo" multiple />Pipowagen</label></div>
    <div class="checkbox"><label><input name="naturwagen[]" type="checkbox" value="zauber" multiple />Zauberwagen</label></div>
    <div class="checkbox"><label><input name="naturwagen[]" type="checkbox" value="boheme" multiple />Bohemewagen</label></div>
</div

Leider finde ich nicht die Lösung zu meiner bisherigen php-Programmierung.

PHP:
<?php 
$error = false;
    if (isset($_POST['submit']))
    {
    $naturwagen = ($_POST['naturwagen']);
    $vorname = trim($_POST['txt_vorname']);
    $fromemail = trim($_POST['txt_email']);
 
    $naturwagen = array (
                 'schäfer' => 'Schäferwagen' ,
                 'pipo' => 'Pipowagen' ,
                 'zauber' => 'Zauberwagen' ,
                  'boheme' => 'Bohemewagen' ,
                 );

        if (!preg_match("/^[a-zA-Z ]+$/",$vorname))
        {
            $error = true;
            $vorname_error = "Bitte geben Sie Ihren Vornamen ein!";
        }
        if(!filter_var($fromemail,FILTER_VALIDATE_EMAIL))
        {
            $error = true;
            $fromemail_error = "Bitte geben Sie eine gültige E-Mail Adresse ein!";
        }
    if (!$error)
        {
            $toemail = "info@meinemail.eu";
            $subject = "Anfrage einer privaten Preisliste Naturwagen ";
            $body = "Folgende Angaben wurden gemacht: \n\n Naturwagen: $naturwagen \n Vorname: $vorname \n  E-Mail: $fromemail";
            $headers = "von: $fromemail\n";
            $headers .= "Reply-To: $fromemail";
            $header = 'From:' . $email . "n";
            $header .= 'Content-type: text/plain; charset=UTF-8' . "rn";


            if (mail ($toemail, $subject, $body, $headers))
                $alertmsg  = '<div class="alert alert-success">
                <p>Vielen Dank für Ihr Interesse, wir senden Ihnen die Preisliste umgehend zu!</p>   
                </div>';
            else
                $alertmsg = '<div class="alert alert-danger text-center">Die &Uuml;bertragung ist fehlgeschlagen, probieren Sie es bitte später nocheinmal!</div>';
        }
    }
    
?>

Wer hat eine Idee, wie ich die Checkboxen senden kann?

Gruß Manfred
 
Als erstes kannst du das multiple rauswerfen. Das gibt es nur beim select. Ansonsten ist der html Teil schon richtig.

Bei php mußt du $naturwagen auch als Array ansprechen, denn als solches wird es ja auch in html verwendet. Geh es mit foreach ($_POST['naturwagen'] as ... ) durch und verarbeite die übergebenen Werte. Die spätere Zuweisung eines Arrays auf $naturwagen ist natürlich Quatsch und muß raus.
 
Danke für den Tip,

Mit echo kann ich auf der Website alle checkboxen anzeigen die ausgewählt sind.

Aber ich finde nicht den Syntax für die Übertragung mit dem restlichen Formular.
 
Was meinst du denn mit "Übertragung mit dem restlichen Formular"? Wenn du die gewählten Boxen mit ECHO ausgeben kannst, liegt doch alles korrekt vor.
 
Mit echo wird es in der linken oberen Ecke der Website ausgegeben.
Da soll es natürlich nicht hin.
Wie Du im oberen php-Block sehen kannst, werden die Inhalte des Formulars per $_POST an eine E-Mail Adresse gesendet und da soll es mit gesendet werden.

Ich hab schon zig verschiedene Skripte probiert, mit dem Ergebnis das in der E-Mail endweder nur eine Selekt-Box (es waren vier ausgewählt), Array oder senden angezeigt wurde.
 
Ich wollte gerade nochmal foreach ins Spiel bringen, aber Implode ist auch eine Möglichkeit. Gratulation, daß du es hingebracht hast.
 
Doch noch nicht gelöst, schade.

Wenn ich keins der Checkboxen aktiviere, wird alles korrekt übermittelt und auch die Erfolgsmeldung wird angezeigt,
aber leider bekomme ich folgende Fehlermeldung: Warning: implode(): Invalid arguments passed in /kunden/242095_70794/rp-hosting/10132/11132/naturwagen/Privat-Kunden.php on line 23
Die Zeile, die die Fehlermeldung beschreibt steht betrifft die obere Zeile von Post#6

Kann bitte jemand helfen?
 
Prinzipiell kannst du das ignorieren. Warnungen sind harmlos und wenn du die Fehlerausgabe unterdrückst, was du auf der endgültigen Seite sowieso machen mußt, erscheint das nur noch in den Logs.

Wenn du das auch noch weghaben willst, kannst du das implode ja in eine if Abfrage packen.

if (!empty($array))...
 
Kann man mal das Skript sehen, wo das Implode mit auftaucht?

Fehlermeldungen sind i.d.R. da, damit der Programmierer diese behebt.
 
Zurück