Checkbox (Mehrfachauswahl) und DB-Ausgabe

Mit den Checkboxen lassen sich mehrere Einträge von der DB-Tabelle auswählen, auswerten und ausgeben.

Anwendungsbeispiel


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(0count($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.

QuelltextKopierenAusblendenZeilen

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->price2","".") .
  
' €</label><br>';
}
?>

<p><input type="submit" value="Absenden"></p>

</form>

<?php
if (isset($_POST["id"])) {

 
$params $_POST["id"];
 
$placeholder implode(','array_fill(0count($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->price2","".") . ' €<br>';
  
$endprice += $result->price;
 }

 echo 
'<p id="summe">Summe: ' number_format($endprice2","".") . ' €</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

Tipps

Text-Dateien über PHP laden und bearbeiten
Über PHP lassen sich Text-Dateien in ein Formular laden und bearbeiten. Der geänderte Text wird, nach dem absenden des Formulars, wieder in der Datei gespeichert.
.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.
Artikel über Checkboxen auswählen
Hier können Artikel (Bilder) ausgewählt werden die bestimmte Kriterien der Checkboxen erfüllen. Die Daten werden in einer CSV-Datei gespeichert und können individuell angepasst werden.
Diese Schlagwörter könnten Sie interessieren:
Favicon AJAX Mimetypen EVA-Prinzip Floodsperre Zeichenkodierung Quelltext Linkliste Gästebuch Fotoalbum Chatroom ASCII CSS-Counter SQLite Key Codes Sortierung Formulare Keyframes Sprachumschaltung Zeichnen RSS Feed Suchmaschine Seitenformatierung Eselsohren Zebra-Tabelle