Checkbox (Mehrfachauswahl) und DB-Ausgabe
![[Bildschirmfoto]
Checkbox (Mehrfachauswahl) und DB-Ausgabe [Bildschirmfoto]
Checkbox (Mehrfachauswahl) und DB-Ausgabe](img/checkbox_mehrfachauswahl_db-ausgabe.png)
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
7
8
9
10
11
<label> <input type="checkbox" name="id[]" value="1"> Apfel - 0,79 € </label>
<label> <input type="checkbox" name="id[]" value="2"> Birne - 1,22 € </label>
<label> <input type="checkbox" name="id[]" value="3"> Banane - 0,56 € </label>
</form>
<?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
11
12
13
14
15
<label> <input type="checkbox" name="id[]" value="1"> Apfel - 0,79 € </label>
<label> <input type="checkbox" name="id[]" value="2"> Birne - 1,22 € </label>
<label> <input type="checkbox" name="id[]" value="3"> Banane - 0,56 € </label>
</form>
<?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);
?>
Script: Unser Angebot
Hier das Script wie es im Anwendungsbeispiel funktioniert hat.
Quelltext: Ausblenden ❘ Kopieren ❘ Link ❘ 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
73
74
75
76
77
78
79
80
81
<!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;
}
input[type="checkbox"] {
accent-color: Royalblue;
}
</style>
</head>
<body>
<h1>Checkbox (Mehrfachauswahl) und DB-Ausgabe</h1>
<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>
<button type="submit">Absenden</button>
</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);
Siehe auch: Löschen von mehreren Einträgen aus einer DB-Tabelle
Tipps
- Zeitbalken
- Dieses Script zeigt die vergangene Zeit mit einem farbigen Fortschrittsbalken an. Mit JavaScript oder PHP kann man die vergangene Zeit berechnen lassen und mit CSS wird dann der Fortschrittsbalken farbig angezeigt.
- Hinzufügen von Wasserzeichen beim hochladen eines Bildes
- Ein Wasserzeichen ist die beste Option, um das Bild vor Diebstahl oder der Wiederverwendung durch eine andere Person zu schützen. Sie können den Besitz anzeigen, indem Sie dem Bild Wasserzeichen hinzufügen. Das Wasserzeichen hilft, den Ersteller zu identifizieren.
- Zeitansage in JavaScript
- Dieses JavaScript gibt die aktuelle Uhrzeit in Worten aus.
- Mit PHP schreiben und lesen
- Hier möchte ich an Beispielen zeigen, wie eine .txt-Datei mit PHP erstellt wird und wie diese ausgelesen werden kann.
Abonniere meinen RSS-Feed
um über aktuelle Seiten benachrichtigt zu werden.
Keyframes Zeitbalken Kalenderwoche Dynamische Seiten Audio-Player Zoom Funktion Sitemaps-Protokoll Favicon Mimetypen Blätterfunktion Zufallsfarbe JSON Hover-Effekt Key Codes CSRF-Token Zeichnen Operatoren Sprachumschaltung Webseitenschutz Floodsperre Metaphone Linkliste Arithmetische Operatoren Marquee ASCII