PHP 7 | Checkboxen in Datenbank speichern (implode/explode)
In diesem Tutorial zeige ich dir wie du die Werte mehrerer Checkboxen in einer Datenbank Tabelle speicherst.
Dabei prüfen wir welche Checkbox gecheckt ist und welche nicht.
Zuallererst das SQL für die Datenbank. Das führt ihr zum Beispiel in Phpmyadmin aus.
CREATE DATABASE IF NOT EXISTS `checkboxes` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE DATABASE IF NOT EXISTS `checkboxes` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE TABLE `checked` (
`id` int(11) NOT NULL,
`checked_values` text NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `checked` (`id`, `checked_values`) VALUES (1, '');
ALTER TABLE `checked` ADD PRIMARY KEY (`id`);
ALTER TABLE `checked` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2
Die Datenbank für unser Skript steht somit.
Formular mit unseren Checkboxen
<form action="" method="post">
<input type="checkbox" name="checkbox[]" value="Checkbox1">Checkbox1<br />
<input type="checkbox" name="checkbox[]" value="Checkbox2">Checkbox2<br />
<input type="checkbox" name="checkbox[]" value="Checkbox3">Checkbox3<br />
<input type="checkbox" name="checkbox[]" value="Checkbox4">Checkbox4<br />
<input name="abschicken" type="submit" value="Speichern">
</form>
Datenbankverbindung aufbauen
$username = 'DEIN_MYSQL_BENUTZERNAME';
$password = 'DEIN_MYSQL_PASSWORT';
try {
$pdo = new PDO('mysql:host=localhost;dbname=checkboxes;charset=utf8', $username, $password);
} catch (PDOException $e) {
echo 'Verbindung fehlgeschlagen: ' . $e->getMessage();
}
Werte in Datenbank speichern
Als nächstes speichern wir unsere Werte aus den Checkboxen in unsere Datenbank.
$id = 1; // ID 1 für unser Formular
if ( isset( $_POST[ 'abschicken' ] ) ) : // Wenn wir unser Formular speichern
$checked = implode(',', $_POST['checkbox']); // Implode trennt alle Werte durch ein Komma
// Unsere ID und die Werte aus den Checkboxen in unsere Datenbank speichern
$statement = $pdo->prepare("REPLACE INTO checked (id, checked_values) VALUES (?, ?)");
$statement->execute(array($id, $checked));
endif;
Werte aus Datenbank auslesen
Damit die Checkboxen auch nach dem speichern markiert bleiben, müssen wir die übermittelten Werte überprüfen. Dass machen wir am besten indem wir die gespeicherten Werte wieder auslesen.
$abfrage = $pdo->prepare("SELECT checked_values FROM checked WHERE id=1");
$abfrage->execute(array());
Abfrage ob Checkboxen „checked“ sind
Um unser Formular bauen wir eine while-Schleife damit wir die Werte aus der Datenbank vergleichen können.
<?php
while($row = $abfrage->fetch()) :
$result = explode(",", $row['checked_values']); // explode entfernt die gesetzten Kommas wieder.
?>
...
### FORMULAR ###
...
<?php
endwhile;
?>
Die Checkboxen bekommen auch noch eine if Abfrage: (Der Wert Checkbox1 muss natürlich für alle weiteren Checkboxen angepasst werden)
<?php if (in_array("Checkbox1", $result)) : echo 'checked'; endif; ?>
Getestet ist das Skript mit PHP 7.2
Kommentare
Danke Dir für deine Mühe. Dein Tutorial hat mir sehr geholfen. 🙂
Bitte, gern geschehen 🙂
Weitere Beiträge
Wordpress | Benutzerdefinierte Felder in Sidebar anzeigen
Contact Form 7 Formular als Beitrag in WordPress speichern
TYPO3 Backend Editor in eigener Extension nutzen
Vom Außenseiter zum Insider: Wie du als Quereinsteiger eine Karriere im IT-Bereich starten kannst.