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

* Werbung/Affiliate Link
Rabatt Osmoseanlagen

Kommentare

  • Dennis
    01.09.2021 - 19:13 Uhr

    Danke Dir für deine Mühe. Dein Tutorial hat mir sehr geholfen. 🙂

    Antworten
    • Markus
      01.09.2021 - 19:34 Uhr

      Bitte, gern geschehen 🙂

      Antworten

Schreibe einen Kommentar

Erforderliche Felder sind entsprechend markiert.

Wird nicht veröffentlicht.