Ich speichere Inhalte in einer Datenbanktabelle. Eine Tabellenspalte wird aufgerufen attrbutes
und hat eine Liste von Werten wie (zB: 1, 3, 5
) basierend auf den angekreuzten Ankreuzfeldern.
<form>
<input type="checkbox" name="attribute" value="1">Attr 1<br>
<input type="checkbox" name="attribute" value="2">Attr 2<br>
<input type="checkbox" name="attribute" value="3">Attr 3<br>
<input type="checkbox" name="attribute" value="4">Attr 4<br>
<input type="checkbox" name="attribute" value="5">Attr 5<br>
<form>
Einige Fragen zur Integration von Checkboxen in PHP ...
1) Wie überprüfe ich, ob mindestens 1 Kontrollkästchen beim Absenden des Formulars aktiviert ist?
2) Wie verwandle ich die markierten Kontrollkästchen in eine Liste wie 1, 3, 5
wenn die Kontrollkästchen 1, 3 und 5 aktiviert sind.
3) Umgekehrt zu # 2 muss ich beim Laden der Seite herausfinden, wie die einzelnen Kontrollkästchen aktiviert werden, deren Wert in der Datenbankspalte aufgeführt ist. If 1, 3, 5
Ist in der Tabellenspalte aufgeführt, muss ich die Kontrollkästchen 1, 3 und 5 beim Laden der Seite aktivieren.
Ich weiß, wie man die grundlegenden Abfragen zum Einfügen, Aktualisieren und Entfernen usw. codiert, aber ich habe noch nie mit Kontrollkästchen und Speichern von Werten aus Kontrollkästchen mit PHP gearbeitet.
Antworten:
1 für die Antwort № 1Ändere dein HTML:
<input type="checkbox" name="attribute[]" value="1">Attr 1<br>
<input type="checkbox" name="attribute[]" value="2">Attr 2<br>
<input type="checkbox" name="attribute[]" value="3">Attr 3<br>
<input type="checkbox" name="attribute[]" value="4">Attr 4<br>
<input type="checkbox" name="attribute[]" value="5">Attr 5<br>
1)
$checkedAttr = $_POST["attribute"];
if(count($checkedAttr) > 0)
echo "At least one checkbox is selected";
2)
$checkboxList = implode(",", $checkedAttr);
3)
$checkedAttr = explode(",", $yourQueryResultStringContainingTheCheckedList);
<input type="checkbox" name="attribute[]" value="1" <?php if(in_array("1", $checkedAttr)) echo "checked="checked""; ?>Attr 1<br>
...
1 für die Antwort № 2
1, 2) Sie können Formularelemente als Arrays mit behandeln name="attribute[]"
dann durchlaufe die geposteten werte in deinem php als array.
Beispielsweise:
<?php
$attributes = $_POST["attribute"];
if(empty($attributes)) {
echo "No attributes selected";
} else {
// echo whole array
print_r($attributes);
// loop through array
foreach($attributes as $attribute) {
echo $attribute." ";
}
// create list as one whole string
$list = implode(",", $attributes);
}
?>
3) Wenn Sie das Formular erstellen (mit PHP), können Sie jeden Wert in einer Schleife überprüfen. Beachten Sie, dass ich Ihren Etiketten auch die richtigen Bezeichnungen gegeben habe, damit sie auch das Kontrollkästchen aktivieren, wenn sie angeklickt werden.
<?php
// need some code to get db values into array
$attributes = array(1,3,5); // your list
// loop through the amount of checkboxes you want
for($i=1; $i <= 5; $i++) {
if(in_array($i, $attributs) { // check for a match with current checkbox
$checked = " checked";
} else {
$checked = "";
}
echo"<input type="checkbox" name="attribute[]" id="attribute".$i."" value="".$i.""".$checked."><label for="attribute".$i."">Attr 1</label><br>"
}
?>