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 | Nutze Shortcode für Anzeige von Beiträgen einer Kategorie
PHP 7 | Ein einfacher Fileupload mit PHP
REST-API von Wordpress - So kannst du sie verwenden.
TYPO3 sys-category in Flexform auf ID beschränken