Checkboxen im PHP-Formular

Harzteufel

Erfahrenes Mitglied
Hallo, ich habe hier ein PHP-Script, welches ich an meine Bedürfnisse angepasst habe, nur leider werden bei der Verarbeitung des Formulars nicht die Namen der angeklickten Checkboxen in der E-Mail angezeigt, sondern einfach nur "Array"! Alles andere funktioniert soweit, nur eben das Anzeigen der angeklickten Checkboxen nicht...

Ich habe mir bereits Hilfeseiten dazu angeschaut, bin aber absoluter PHP-Anfänger und finde den Fehler einfach nicht :confused:

Könnt Ihr mal bitte schauen und mir helfen?

PHP:
<?php 
 
if (isset($_POST["senden"])) { 
	$prospekte = $_POST["prospekt"];  
	$vorname = $_POST["vorname"]; 
	$name    = $_POST["name"]; 
	$str    = $_POST["str"]; 
	$plz    = $_POST["plz"]; 
	$ort = $_POST["ort"]; 
	$tel  = $_POST["tel"]; 
	$mail = $_POST["mail"]; 
	
 
	# Spammschutz  
	# vom Aufruf bis zum Abschicken dürfen nur 1800 Sekunden vergangen sein 
	# alles andere ist Spam 
		if (time() - $zugang > 1800){ 
			echo "Spammer!"; 
			exit; 
		} 
	# Spammschutz Ende 
 
	$fehler = 0; 

	# checkbox prüfen 
	$prospektfehler = "<b>Fehler</b>"; 
	$anzahl = 8; #  Anzahl der Checkboxen 
	for ($i = 0; $i < $anzahl; $i++){ 
		if ($prospekte[$i] != ""){ 
			$prospektfehler = ''; 
			last; 
		} 
	} 
	if ($prospektfehler){ 
		$fehler = 1; 
	} 
	# ende checkboxprüfung

	if ($vorname == "") { 
		$vornamefehler = "<b>Fehler</b>"; 
		$fehler = 1; 
	}		 
	if( $name == "") { 
		$namefehler = "<b>Fehler</b>"; 
		$fehler = 1; 
	} 
	if( $str == ""){ 
		$strfehler = "<b>Fehler</b>"; 
		$fehler = 1; 
	}		 
	if( $plz == "") { 
		$plzfehler = "<b>Fehler</b>"; 
		$fehler = 1; 
	} 
	if( $ort == "") { 
		$ortfehler = "<b>Fehler</b>"; 
		$fehler = 1; 
	} 
	if( $mail == "") { 
		$mailfehler = "<b>Fehler</b>"; 
		$fehler = 1; 
	} 
	 
	 
	if ($fehler){  
		echo " 
		<font color='#FF0000'> 
		<b>Ihre Angaben sind unvollständig. Bitte füllen Sie alle Pflichtfelder aus!</b> 
		</font> 
		<br><br>"; 
	} 
	else { 
		 
		$empfaenger = "mail@domain.com";
		$absender = $_POST['mail'];
		$betreff = "Ihr Anfrage";
		$nachricht  = "Bitte zusenden:\n
		$prospekte \n\n
		Meine Anschrift:\n
		Vorname: $vorname \n 
		Name: $name \n 
		Straße, Hausnr.: $str \n
		PLZ, Ort: $plz $ort \n
		Telefon: $tel \n\n 
		E-Mail: $mail \n";
		mail($empfaenger, $betreff, $nachricht, "From: $vorname $name <$mail>"); 
		header("Location: danke.php"); 
		exit; 
	} 
} 
 
?>


Und im Formular steht es dann so:

HTML:
<fieldset>
<legend>Material</legend>
<input type="checkbox" id="box" name="prospekt[0]" value="Material1" <? echo ($prospekt[0]) ? "CHECKED" : "" ?>> Material1<br />
<input type="checkbox" id="box" name="prospekt[1]" value="Material2" <? echo ($prospekt[1]) ? "CHECKED" : "" ?>> Material2<br />
<input type="checkbox" id="box" name="prospekt[2]" value="Material3" <? echo ($prospekt[2]) ? "CHECKED" : "" ?>> Material3<br />
<input type="checkbox" id="box" name="prospekt[3]" value="Material4" <? echo ($prospekt[3]) ? "CHECKED" : "" ?>> Material4<br />
<input type="checkbox" id="box" name="prospekt[4]" value="Material5" <? echo ($prospekt[4]) ? "CHECKED" : "" ?>> Material5<br />
<input type="checkbox" id="box" name="prospekt[5]" value="Material6" <? echo ($prospekt[5]) ? "CHECKED" : "" ?>> Material6<br />
<input type="checkbox" id="box" name="prospekt[6]" value="Material7" <? echo ($prospekt[6]) ? "CHECKED" : "" ?>> Material7<br />
<input type="checkbox" id="box" name="prospekt[7]" value="Material8" <? echo ($prospekt[7]) ? "CHECKED" : "" ?>> Material8<br />
<? echo $prospektfehler ?></td> 
</fieldset>
 
Die Lösung heisst implode
PHP:
$nachricht  = "Bitte zusenden:\n";
$nachricht .=  implode(',' ,$prospekte)."\n\n";
$nachricht .= "Meine Anschrift:\n
        Vorname: $vorname \n 
        Name: $name \n 
        Straße, Hausnr.: $str \n
        PLZ, Ort: $plz $ort \n
        Telefon: $tel \n\n 
        E-Mail: $mail \n";
        mail($empfaenger, $betreff, $nachricht, "From: $vorname $name <$mail>"); 
        header("Location: danke.php");

Achja
daraus
PHP:
$prospektfehler = "<b>Fehler</b>"; 
    $anzahl = 8; #  Anzahl der Checkboxen 
    for ($i = 0; $i < $anzahl; $i++){ 
        if ($prospekte[$i] != ""){ 
            $prospektfehler = ''; 
            last; 
        }
mach mal bitte
PHP:
$prospektfehler = "<b>Fehler</b>"; 
    $anzahl = ; #  Anzahl der Checkboxen -1 da ein array, bzw dein array bei null beginnt
    for ($i = 0; $i < $anzahl; $i++){ 
        if ($prospekte[$i] != ""){ 
            $prospektfehler = ''; 
            last; 
        }
 
Dafür brauchst Du kein Array.
HTML:
<fieldset>
<legend>Material</legend>
<input type="checkbox" id="box" name="prospekt0" value="Material1" <? echo ($_POST["prospekt0"]) ? "CHECKED" : "" ?>> Material1<br />
<input type="checkbox" id="box" name="prospekt1" value="Material2" <? echo ($_POST["prospekt1"]) ? "CHECKED" : "" ?>> Material2<br />
<input type="checkbox" id="box" name="prospekt2" value="Material3" <? echo ($_POST["prospekt2"]) ? "CHECKED" : "" ?>> Material3<br />
<input type="checkbox" id="box" name="prospekt3" value="Material4" <? echo ($_POST["prospekt3"]) ? "CHECKED" : "" ?>> Material4<br />
<input type="checkbox" id="box" name="prospekt4" value="Material5" <? echo ($_POST["prospekt4"]) ? "CHECKED" : "" ?>> Material5<br />
<input type="checkbox" id="box" name="prospekt5" value="Material6" <? echo ($_POST["prospekt5"]) ? "CHECKED" : "" ?>> Material6<br />
<input type="checkbox" id="box" name="prospekt6" value="Material7" <? echo ($_POST["prospekt6"]) ? "CHECKED" : "" ?>> Material7<br />
<input type="checkbox" id="box" name="prospekt7" value="Material8" <? echo ($_POST["prospekt7"]) ? "CHECKED" : "" ?>> Material8<br />
<? echo $prospektfehler ?></td> 
</fieldset>
Abfrage dann mit
PHP:
    for ($i = 0; $i < $anzahl; $i++){
        if (!empty($_POST['prospekt'.$i])){ 
            $prospekte .= $_POST['prospekt'.$i].'<br />';
        } 
    } 
print $prospekte;
 
Zuletzt bearbeitet:
Vielen Dank Euch beiden. Ohne Eure Hilfe wäre ich immer noch keinen Schritt weiter... außerdem ist es schön zu sehen, dass mehrere Wege zur Lösung führen! :)
 
Zurück