Checkbox (Mehrfachauswahl) und DB-Ausgabe
Mit den Checkboxen lassen sich mehrere Einträge von der DB-Tabelle auswählen, auswerten und ausgeben.
Demo
Bei der PHP mysql()
-Funktion war es relativ leicht gesetzte Checkboxen (über $_POST
) in den SQL-String einzufügen:
1
2
3
4
5
6
<?php
/* Datensätze über Checkbox-Auswählen (mysql()) */
$sql = "SELECT id, fruit, price FROM fruits
WHERE id IN (" . implode(",", mysql_real_escape_string($_POST["id"])) . ")";
?>
Da jedoch seit PHP 7 die mysql()
-Funktionen nicht mehr vorhanden sind, musste eine neue (und sichere) Lösung her.
Wenn mit den PDO()
-Funktionen gearbeitet wird, bietet es sich an die gesetzten Checkboxen über den „Prepared Statements”
(zu deutsch: vorbereitete Anweisung) in den SQL-String einzufügen:
1
2
3
4
5
6
7
8
9
10
<?php
/* Datensätze über Checkbox-Auswählen (PDO()) */
$params = $_POST["id"];
$placeholder = implode(',', array_fill(0, count($params), '?'));
$stmt = $db->prepare("SELECT id, fruit, price FROM fruits
WHERE id IN (" . $placeholder . ")");
$stmt->execute($params);
?>
Hier das komplette Script wie es im Anwendungsbeispiel funktioniert hat.
Quelltext Kopieren ❘ Ausblenden ❘ Zeilen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<title>Checkbox (Mehrfachauswahl) und DB-Ausgabe</title>
<style>
body {
font-family: Verdana, Arial, Sans-Serif;
}
input[type=checkbox]:checked + label {
color: Royalblue;
}
p#summe {
border-top: Double Thick Black;
width: 150px;
}
</style>
</head>
<body>
<h1>Checkbox (Mehrfachauswahl) und DB-Ausgabe</h1>
<form name="Form" method="post">
<h4>Unser Angebot:</h4>
<?php
$db = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', '');
$stmt = $db->query("SELECT id, fruit, price FROM fruits");
$results = $stmt->fetchAll(PDO::FETCH_OBJ);
foreach ($results as $z => $result) {
echo '<input type="checkbox" name="id[]" value="' . $result->id . '" id="u' . $z . '"> ' .
'<label for="u' . $z . '">' . $result->fruit . ' - ' . number_format($result->price, 2, ",", ".") .
' €</label><br>';
}
?>
<p><input type="submit" value="Absenden"></p>
</form>
<?php
if (isset($_POST["id"])) {
$params = $_POST["id"];
$placeholder = implode(',', array_fill(0, count($params), '?'));
$stmt = $db->prepare("SELECT id, fruit, price FROM fruits WHERE id IN (" . $placeholder . ")");
$stmt->execute($params);
echo '<h4>Ihre Auswahl:</h4>';
$results = $stmt -> fetchAll(PDO::FETCH_OBJ);
$endprice = 0;
foreach ($results as $result) {
echo $result->fruit . ' - ' . number_format($result->price, 2, ",", ".") . ' €<br>';
$endprice += $result->price;
}
echo '<p id="summe">Summe: ' . number_format($endprice, 2, ",", ".") . ' €</p>';
}
?>
</body>
</html>
DB-Tabelle
Folgende DB-Tabelle wurde im Anwendungsbeispiel verwendet:
CREATE TABLE `fruits` ( `id` int(11) NOT NULL AUTO_INCREMENT, `fruit` varchar(30) COLLATE utf8_unicode_ci NOT NULL, `price` float NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; INSERT INTO `fruits` (`id`, `fruit`, `price`) VALUES (1, 'Apfel', 0.79), (2, 'Birne', 1.22), (3, 'Banane', 0.56), (4, 'Melone', 3.74), (5, 'Orange', 1.22), (6, 'Ananas', 2.54), (7, 'Kiwi', 0.45);
Voraussetzung
PHP 5.6+, MySQL/MariaDB - Datenbank
Siehe auch: Löschen von mehreren Einträgen aus einer DB-Tabelle
Tipps
- Erster Eintrag in eine MySQL-Datenbank mit PHP
- Eine Anleitung wie man ein Nachrichten-System mit einer MySQL (oder MariaDB)-Datenbank über PHP realisieren kann. Komplett mit Formularen zum eintragen, anzeigen und bearbeiten der Daten.
- Verkettete Auswahllisten dynamisch aus einer DB-Tabelle generieren
- Dieses Beispiel zeigt, wie man eine HTML-Auswahlliste (Drop-Down-Liste) dynamisch generiert, die auf den Werten einer Spalte in einer Datenbank-Tabelle beruht.
- .htaccess - Passwortschutz für Webseiten
- Mit einer
.htaccess
Datei und einer.htpasswd
Passwort-Datei lassen sich bestimmte Verzeichnisse und die darin enthaltenen Dateien vor unerlaubtem Zugriff schützen.
Diese Schlagwörter könnten Sie interessieren:
Parallax Scrolling-Effekt Counter Key Codes Sortierkasten Zeitbalken Wecker Berechnungen Blätterfunktion Rahmen CSS-Counter Zeit-Differenz Audio-Player Metaphone Bausteine Dynamische Seiten Arithmetische Operatoren Sitemaps-Protokoll Blend-Mode Marquee JSON Inhaltsverzeichnis Mausrad Modal-Fenster Zoom Funktion Zeitansage
Parallax Scrolling-Effekt Counter Key Codes Sortierkasten Zeitbalken Wecker Berechnungen Blätterfunktion Rahmen CSS-Counter Zeit-Differenz Audio-Player Metaphone Bausteine Dynamische Seiten Arithmetische Operatoren Sitemaps-Protokoll Blend-Mode Marquee JSON Inhaltsverzeichnis Mausrad Modal-Fenster Zoom Funktion Zeitansage