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
BISON Kryptowährungen

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.

Datenschutz
Programmier-Tipps - Programmieren lernen ist nicht schwer!

Wir verwenden Cookies, um unsere Webseite für Dich optimal zu gestalten, fortlaufend zu verbessern und die Zugriffe auf unsere Webseite zu analysieren. Cookie-Informationen werden in deinem Browser gespeichert und helfen uns zu verstehen, welche Abschnitte der Website für dich am interessantesten und nützlichsten sind. Genauere Informationen findest du in unserer Datenschutzerklärung.

Notwendige Cookies

Notwendige Cookies sollten jederzeit aktiviert sein, damit wir deine Einstellungen für die Cookie-Einstellungen speichern können. Details findest du in unserer Datenschutzerklärung.

Google AdSense

Diese Website benutzt Google AdSense, einen Dienst zum Einbinden von Werbeanzeigen der Google Inc. ("Google"). Google AdSense verwendet sogenannte „Cookies“, Textdateien, die auf Ihrem Computer gespeichert werden und die eine Analyse der Benutzung der Website ermöglichen. Genauere Informationen findest du in unserer Datenschutzerklärung.

Diesen Cookie aktiviert zu lassen, unterstützt uns ohne dass du Geld ausgeben musst.

Google Analytics

Diese Website nutzt den Webanalysedienst Google Analytics, der sogenannte Cookies einsetzt. Dies sind kleine Textdateien, die auf Ihrem Device gespeichert werden und eine Analyse der Website-Nutzung ermöglichen. Die erzeugten Informationen werden in der Regel an einen Server von Google in den USA übertragen und dort gespeichert. Weitere Informationen findest du in unserer Datenschutzerklärung.

Das aktivieren ermöglicht es uns unsere Webseite für dich noch attraktiver zu machen.