Checkbox

stephandziurla

Erfahrenes Mitglied
Hallo!
Ich hab mal eine Frage, bei der ich auch aus bestehenden Threads hier nicht schlau geworden bin.

Ich habe auf einer Webseite ca. 30 Checkboxen, die dann an eine .php-Datei übergeben und ausgewertet werden sollen. Nun ist an sich die einfachste Möglichkeit, per if-Abfrage zu überprüfen, ob eine Checkbox angeklickt ist oder nicht.
Nun ist das ja bei 30 Checkboxes ziemlich müssig, gibt es da nicht eine einfachere Art und Weise, wie ich Checkboxes auswerten und danach mit einzelnen (egal, ob angeklickt oder nicht) Werten arbeiten kann?!
Also wichtig ist schon, dass ich mit einzelne Werte heraussuchen (bspw. Checkbox14, 7 und 28) und dann auch mit denen arbeiten kann.

Danke schonmal für die Hilfe...
 
Hmm....ich hab mich für die for-Schleife entschieden, komm da aber nicht so recht weiter.
Ich hab das daraus gemacht...:

HTML:
<html>
<head>
<title>Unbenanntes Dokument</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<form name="form1" method="post" action="auswert.php">
<p>
<input type="checkbox" name="checkbox[]" value="0">
Test1
<br>
<input type="checkbox" name="checkbox[]" value="1"> 
Test2<br>
<input type="checkbox" name="checkbox[]" value="2">
Test3<br>
<input type="checkbox" name="checkbox[]" value="3">
Test4<br>
<input type="checkbox" name="checkbox[]" value="4"> 
Test5
</p>
<p>
<input type="submit" name="Submit" value="Senden">
</p>
</form>
</body>
</html>


Und die Datei auswert.php:
PHP:
<?
for ($i=0; $i<=5; $i++) {
  if (isset($_REQUEST['checkbox[i]'])) {
echo "Test". $i;
}
else echo $i. "nicht angeklickt.";
}
?>

Kommt zwar kein Fehler, aber selbst nach dem Anklicken von mehreren Checkboxes geht die PHP-Datei nur in den else-Pfad und gibt bei allen aus: ......nicht angeklickt.
Wieso das?! :confused:
 
Hm, das funkioniert nich so ganz.

Ich hab das so eingefügt und ausprobiert. Wenn ich jetzt jedoch 3 und 5 anklicke, kommt als Resultat 0 und 1 angeklickt......
wo könnte denn der Fehler sein?
 
HTML:
<html> 
<head>
<title>Unbenanntes Dokument</title> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
</head> 
<body> 
<form name="form1" method="post" action="auswert.php"> <p> 
<input type="checkbox" name="checkbox[0]" value="1"> Test1 <br> 
<input type="checkbox" name="checkbox[1]" value="1"> Test2<br> 
<input type="checkbox" name="checkbox[2]" value="1"> Test3<br> 
<input type="checkbox" name="checkbox[3]" value="1"> Test4<br> 
<input type="checkbox" name="checkbox[4]" value="1"> Test5 </p> 
<p> <input type="submit" name="Submit" value="Senden"> </p> 
</form> 
</body> 
</html>

PHP:
<?
foreach($_REQUEST[checkbox] AS $k=>$v){
  if($v==1){
    echo "$k select";
  }
}
?>
 
Zuletzt bearbeitet:
Du gibst ja den Inhalt von $i aus und nicht den Inhalt von $_POST['checkbox'][$i].
Mach mal ein
PHP:
print_r($_POST);
in die auswert.php und öffne dann via Rechtsklick den HTML-Quellcode.
Dann wird dir die Array-Struktur verdeutlicht.
 
Hmm...stimmt irgendwie. Ich hatte das Beispiel von dr-alex ausprobiert, welches auch klappt. Aber da kann ich ja dann nur innerhalb der foreach-Schleife auf die Elemente zugreifen, oder?
Also wenn bspw. checkbox3 angeklickt ist, kann ich nur in der Schleife was mit anstellen oder?
 
Könntest schon, aber mit Workaround.
Hast du Struktur des muli-dimensionalen Arrays _POST verstanden?

Dann dürfte es mittels for jetzt ja keine Probleme mehr geben, oder?!
 
Hmmmm...mein Problem ist nämlich, ich möchte gern bei 30 Checkboxen (bei denen können, keine, eine, beliebig viele oder auch alle angekreuzt sein) schauen, ob diese angeklickt sind und wenn ja soll in einer Variable eine 1 gespeichert werden. Wenn nicht, dann eine 0.

Bsp:

[ ] Checkbox1
[x] Checkbox2
[ ] Checkbox3
[x] Checkbox4
[ ] Checkbox5

Hier soll dann in der Variable die Zahl 01010 gespeichert werden, welche ich dann in der DB speichern kann.
Deshalb meine Frage mit der Auswertung dieser Boxen....aber ich glaub da komm ich nich so richtig weiter.....


_POST? Hmm...ich bin mir nich sicher, ich sage mal vorsichtshalber, dass ich das nicht 100%ig verstanden habe, bevor Mißverständnisse aufkommen :-)
 
Zurück