Seite 1 von 1

Checkboxen mit PHP prüfen

Verfasst: 23.06.2007, 18:03
von Neno
Hallo,
es geht um ein Bestellformular mit 20 Checkboxen. Es soll geprüft werden, ob mindestens eine Checkbox angeklickt ist, bevor das Formular abgeschickt wird. Das Formular bekomme ich per Email. Jede Checkbox steht für einen Excelrechner, der bestellt werden kann. Nachfolgend die Codeabschnitte, leider funktioniert es nicht. Kann jemand den Fehler entdecken?

Gruß
Neno

<?php
$vorname = $_POST['vorname'];
$name = $_POST['name'];
$email = $_POST['email'];
$auftrag = $_POST['rechner'];

...
if(isset($_POST['rechner'])) foreach($_POST['rechner'] as $value) if(!empty($value)) $check = true;
if(isset($check)) echo "ja";
...
<input type="checkbox" name="rechner[]" value="Gehaltumwandlung">Gehaltumwandlung<br>
<input type="checkbox" name="rechner[]" value="Kapitalaufbau">Kapitalaufbau<br>
<input type="checkbox" name="rechner[]" value="Versorgungslücke">Versorgungslücke<br>
<input type="checkbox" name="rechner[]" value="Zinskontrolle">Zinskontrolle<br>
...
$text = "Bestellung Excelrechner\n";
$text.= "- - - - - - - - - - - - - - - - - - - - - - - - - - - - \n";
$text.= "Vorname. . . . . . . . . . .$vorname\n";
$text.= "Name.. . . . . . . . . . . .$name\n";
$text.= "Email. . . . . . . . . . . .$email\n\n";
$text.= "- Excelrechner: . . . . . . $auftrag\n";

Verfasst:
von

Verfasst: 23.06.2007, 19:20
von semtex
Formularauswertung mit PHP ist eine Sache für sich, denn direkte klicks kann man mit PHP nicht so einfach auswerten.
Man kann höchstens in einer Schleife über den Inhalt des Arrays gehen, so wie Du es versucht hast.
Ich würde die Sache mit Javascript machen, oder sehr einfach so :


for ($i = 0; $i<=20; $i++) {
if (isset($_POST['rechner'][$i])) {

Verfasst: 24.06.2007, 02:36
von revilo
Hallo!

Wenn Du auf jeden Fall alle "Rechner" in der Mail stehen haben, und einfach die gewählten mit "ja" kennzeichnen möchtest, funzt es freilich nicht.

Code: Alles auswählen

$_Post&#91;"rechner"&#93;
wird nur dann übergeben, wenn mind. ein Array Element besetzt ist.

Code: Alles auswählen

if&#40;isset&#40;$_POST&#91;'rechner'&#93;&#41;&#41; &#123;foreach&#40;$_POST&#91;'rechner'&#93; as $value&#41; $auftrag.=$value. "\n"; &#125; else &#123;$auftrag="";&#125;
...
if &#40;$auftrag==""&#41; &#123;$error="Nix ausgewählt";&#125;
...
Irgendwo&#58; print&#40;$error&#41;;
...
$text.= "- Excelrechner&#58;\n";
$text.= $auftrag. "\n";
...
Die letzte Zeile,... naja, ich weiß nicht, wie Du Fehlermeldungen / Hinweise ausgeben möchtest.

Möglichkeit 2: Im Gegensatz zu den radios, können Checkboxen ja voneinander unabh. betrachtet werden--> differente names (und ids), der Code würde sich über sämtliche Einzelchecks natürlich wesentlich verlängern.

LG O

Verfasst: 25.06.2007, 12:42
von Neno
Hallo,
das klappt jetzt schon mal mit der Prüfung der Checkboxen. So sieht es aus:

if(isset($_POST['rechner'])) {foreach($_POST['rechner'] as $value) $auftrag.=$value. "\n"; } else {$auftrag="";}
if ($auftrag=="") {$err_text.="Nix ausgewählt";}

if(($send=="1") && (isset($err_text))) {
echo "<p><big><b>Fehlermeldung:</b></big><br>";
echo "$err_text</p>";
}
if(($send!="1") || (isset($err_text)))
{

Was mir jetzt noch fehlt ist die Ausgabe des Value-Wertes der Checkbox. Bisher habe ich das so gemacht:
$text = "Bestellung Excelrechner\n";
$text.= "- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \n";
$text.= "Vorname. . . . . . . . . . .$vorname\n";
$text.= "Name.. . . . . . . . . . . . .$name\n";
$text.= "Email. . . . . . . . . . . . . .$email\n\n";
$text.= "- Excelrechner: $auftrag1\n";
$text.= "- Excelrechner: $auftrag2\n";
$text.= "- Excelrechner: $auftrag3\n";
$text.= "- Excelrechner: $auftrag4\n";
$text.= "- Excelrechner: $auftrag5\n";
...
Also insgesamt 20 mal. Jede Checkbox hat eine eigene Variable gehabt, die einzeln ausgeben wurde. Da ich das jetzt mit einem Array mache, frage ich mich, wie die angeklickten Checkboxen in die Email über die das Kontaktformular ankommt, geschrieben werden. Kann jemand hier weiterhelfen?

gruß
Neno