Email versand! Checkboxes?!

  • Themenstarter Themenstarter freakassault
  • Beginndatum Beginndatum
F

freakassault

HI LEUTZ,

habe ein kleines Problem.

vielleicht kann mir jemand helfen. Ich steh grad auf dem schlauch.

okay, habe ein kontakt.php mit folgender FORM
PHP:
<form method="post" action="formmailer.php"> 

//Hier sind jetzt 6 checkboxes mit verscheidenen Variablen (den emailadressen              
             <input name="checkbox[]" input type="checkbox" value="email1@test.de">                     
             <input name="checkbox[]" input type="checkbox" value="email2@test2.de"> 
             <input name="checkbox[]" input type="checkbox" value="email3@test3.de"> 
             <input name="checkbox[]" input type="checkbox" value="email4@test4.de">                                    
             <input name="checkbox[]" input type="checkbox" value="email5@test5.de"> 
             <input name="checkbox[]" input type="checkbox" value="email6@test6.de"> 
             
//Hier kommen noch die Angaben des Ansender hinein und dann sollte die ganze sache an den formmailer gesendet werden          
              Dein Name: 
              <input name="name" type="text" size="45"> 
              Deine E-Mail Adresse: 
              <input name="emailtest" type="text" id="emailtest" size="45"> 
              Betreff: 
              <input name="betreff" type="text" size="45"> 
              Deine Nachricht: 
              <textarea name="nachricht" cols="100" rows="10"></textarea> 
              <input type="submit" name="senden" value="Senden"> 
            
</form>

So, das wird an die formailer.php übergeben und hier steht folgender Code:
PHP:
<?php 
$email=""; // $Email leeren 
sort($checkbox); // Keys von 0-n neu setzrn 
for($i=0;$i<count(checkbox);$i++){ 
    $email = $checkbox[$i].", "; // Emails (checkbox[] value) mit Komma aneinanderhängen  UND HIER SPUCKT ER MIR EINEN PARSE ERROR AUS?! 
} 
$email=substr($email,0,strlen($Email)-1); // letztes Komma löschen 
mail("$email",$betreff,$nachricht,"From:".$emailabsender); 
echo "Ihre E-Mail wurde erfolgreich versendet."; 
} 

?>

So Mein Problem Ist dass er mir beim "sort($checkbox); " folgenden Fehler bringt.
sort() expects parameter 1 to be array, null given in

Falls ihr mir helfen könnt bitte bitte tut das, auch wenn ihr woanders noch fehler seht. ICh sitze schon ne ewigkeit vor dem zeugs und brings net auf die reihe..


Bye,

Freak
 
PHP:
$email .= $checkbox[$i].", ";

Du hast den . vorm = vergessen.

[edit]
Kann man Checkboxen eigentlich in dieser Form als Array benutzen?
[/edit]
 
Zuletzt bearbeitet:
danke erstmal für den gefundenen Fehler, nur gibt er mir immernoch den WARNING: SORT EXPECTS Fehler aus. weißt du da auch Rat?!

Bye,

Freak
 
Ja hab das mal eben probiert. Das geht doch mit Checkboxen gar nicht :/ (oder doch?)

Nimm lieber ein DropDown Menü mit einem multiple Attribut im form-Tag :)
 
das hab ich schonmal programiert, aber das muss doch mit den Checkboxes gehen.. das einzige prob ist halt das sort() ..

Bye,

Freak
 
so wie du das hier gepostet hast müssten register_globals in der php.ini on sein.

Das vermute ich nicht, daher liefert er dir auch den Fehler zurück dass Sort mind. 1 Parameter erwartet...

das einzige was du machen solltest ist :

PHP:
sort($_POST['checkbox']);

zu schreiben.

Zur Erklärung wenn du Formulardaten über method="post" versendest dann gibt es in PHP ein globales Server Array $_POST in dem sich die Daten des Formulars befinden.

Wenns nicht klappt meldest dich halt nochmal =)

achja kleiner Tipp:

mit substr($mail,0,-1);
kannst du auch deinen letzten buchstaben,ziffer oder was auch immer entfernen, dazu brauchst du nicht die strlen funktion.
 
Zuletzt bearbeitet:
oder ums noch weiter zu verkürzen, anstatt strlen und substr kannst du es mit implode zusammenbauen

PHP:
  mail(implode(", ",$_POST['checkbox'],$betreff,$nachricht,"From:".$emailabsender);

 //oder mit ner extra variable wofür auch immer
 $to = implode(", ",$_POST['checkbox']); 
  mail($to,$betreff,$nachricht,"From:".$emailabsender);

mit der Sache mit den register_globals = off kann ich meinem Vorredner zustimmen. Verwende einfach in Zukunft $_POST, $_GET oder $_REQUEST ($_POST und $_GET zusammen).

Und noch was wegen deinem HTML ich meine das input deiner Checkbox ist zu viel:
PHP:
 <input name="checkbox[]" type="checkbox" value="email1@test.de">
 
Zurück