/ / PHP: Aktivierte Kontrollkästchen in Elementlisten für Datenbanktabellen und Kontrollkästchen umwandeln, die auf den in der Datenbanktabelle beim Laden der Seite gespeicherten Werten basieren - php

PHP: Aktivieren Sie die Kontrollkästchen in der Liste der Elemente für die Datenbanktabelle und die Kontrollkästchen, die auf den Werten basieren, die in der Datenbanktabelle beim Laden der Seite - php gespeichert sind

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>"
}
?>