Dieses Beispiel soll einige wichtige Tätigkeiten im Zusammenhang mit PHP und MySQL demonstrieren.
<!DOCTYPE html> <html lang="de"> <head> <meta charset="UTF-8" /> <title>Title</title> </head> <body> <h1>Webinterface für Online-Apfelshop</h1> <hr> <ul> <li><a href="apfeldb_bestellformular.html">Bestellformular</a></li> <li><a href="apfeldb_anzeige.php">Bestellungen anzeigen</a></li> <li><a href="apfeldb_aendern.php">Bestellungen ändern</a></li> <li><a href="apfeldb_loeschen.php">Bestellungen löschen</a></li> <li><a href="apfeldb_sortieren.php">Bestellungen sortieren</a></li> </ul> Bitte wählen Sie! </body> </html>
<html> <body> Bitte geben Sie folgende Daten für Ihre Bestellung ein: <form action = "apfeldb_schreiben.php" method = "post"> <p><input size="20" name="name"> Vorname und Nachname</p> <p><input size="20" name="strasse"> Strasse</p> <p><input size="20" name="ort"> PLZ und Ort</p> Apfelsorte:<br> <input type="radio" name="sorte" value="Jonagold">Jonagold <input type="radio" name="sorte" value="Gala">Gala <input type="radio" name="sorte" value="Elstar">Elstar <p><input size="10" name="menge"> kg (Menge)</p> <input type="submit" name="Senden" value="Absenden"> <input type="reset"> </form> </body> </html>
<?php // apfeldb_schreiben.php // Fehlerbericht aktivieren error_reporting(E_ALL); // Datenbankverbindung aufbauen include("connect.inc.php"); // connect.inc.php sollte PDO verwenden (wie zuvor gezeigt) $tblname = "bestellung"; echo ' - Schreiben in <font color="#FF0000">' . $dbname . "->" . $tblname . "</font>"; echo "<hr>"; // -------------------------- if (isset($_POST["Senden"])) { echo "Schreibe neuen Eintrag...<br />"; // Formulardaten übernehmen $name = $_POST["name"]; $strasse = $_POST["strasse"]; $ort = $_POST["ort"]; $sorte = $_POST["sorte"]; $menge = $_POST["menge"]; try { // SQL-Anweisung mit Platzhaltern für sichere Datenübergabe $eintrag = "INSERT INTO bestellung (Name, Strasse, Ort, Sorte, Menge) VALUES (:name, :strasse, :ort, :sorte, :menge)"; // SQL-Anweisung vorbereiten $stmt = $db->prepare($eintrag); // Daten an die Platzhalter binden $stmt->bindParam(':name', $name); $stmt->bindParam(':strasse', $strasse); $stmt->bindParam(':ort', $ort); $stmt->bindParam(':sorte', $sorte); $stmt->bindParam(':menge', $menge); // Ausführen der SQL-Anweisung if ($stmt->execute()) { echo "Eintrag in der Datenbank wurde erfolgreich vorgenommen!<br>"; echo "<p>Folgende Angaben wurden gespeichert:</p>"; echo "$name<br>"; echo "$strasse<br>"; echo "$ort<br>"; echo "$menge kg $sorte<br>"; } else { echo "Es gab ein Problem beim Einfügen der Daten."; } } catch (PDOException $e) { die("SQL-Fehler: " . $e->getMessage()); } } // -------------------------- // Die Verbindung zur Datenbank muss nicht manuell geschlossen werden // PDO schließt die Verbindung automatisch am Ende des Skripts echo "<br> Verbindung beendet!"; // Weiteres Menü echo "<hr>"; echo '<a href="appleshop.html">Verwaltungskonsole</a><br>'; ?>
connect.inc.php findet sich hier.<?php // apfeldb_anzeige.php // Fehlerbericht aktivieren error_reporting(E_ALL); // Datenbankverbindung aufbauen include("connect.inc.php"); // connect.inc.php sollte PDO verwenden $tblname = "bestellung"; try { // SQL-Abfrage, um alle Einträge aus der Tabelle 'bestellung' zu holen $abfrage = "SELECT * FROM $tblname;"; // Abfrage vorbereiten und ausführen $stmt = $db->query($abfrage); // Anzahl der Datensätze ermitteln $dszahl = $stmt->rowCount(); echo ' - Ausgabe von <font color="#FF0000">' . $dbname . "->" . $tblname . "</font>"; echo " Der Abfrage entsprechen $dszahl Datensätze!<hr>"; // Tabelle öffnen echo "<table>"; // Daten in der Tabelle ausgeben foreach ($stmt as $i => $row) { // Werte aus der Datenbank holen $name = $row['Name']; $strasse = $row['Strasse']; $ort = $row['Ort']; $sorte = $row['Sorte']; $menge = $row['Menge']; // Zeilenfarbe wechseln (Zebra-Streifen-Effekt) if ($i % 2 == 0) { echo '<tr bgcolor="lightgrey">'; } else { echo '<tr bgcolor="white">'; } // Daten in die Tabelle einfügen echo "<td>$name</td><td>$strasse</td><td>$ort</td><td>$sorte</td><td>$menge</td>"; echo '</tr>'; } // Tabelle schließen echo "</table>"; } catch (PDOException $e) { // Fehlerbehandlung bei SQL-Abfragen echo "<br>Die SQL-Anweisung schlug fehl!<br>Fehler: " . $e->getMessage(); } // Verbindung muss nicht explizit geschlossen werden, PDO schließt sie automatisch echo "<br> Verbindung beendet!"; // Weiteres Menü echo "<hr>"; echo '<a href="appleshop.html">Verwaltungskonsole</a><br>'; ?>
<?php // apfeldb_anzeigen (Ändern) // Fehlerberichterstattung aktivieren require("connect.inc.php"); // PDO-Verbindung $tblname = "bestellung"; echo "- Ändern von <font color='#ff0000'>$tblname</font> möglich<hr>"; // Daten speichern if (isset($_POST["speichern"])) { $ID = $_POST['ID']; $name = $_POST['Name']; $strasse = $_POST['Strasse']; $ort = $_POST['Ort']; $sorte = $_POST['Sorte']; $menge = $_POST['Menge']; // SQL-Abfrage zum Aktualisieren der Daten $abfrage = "UPDATE bestellung SET Name = :name, Strasse = :strasse, Ort = :ort, Sorte = :sorte, Menge = :menge WHERE Name = :ID"; $stmt = $db->prepare($abfrage); $stmt->bindParam(':name', $name); $stmt->bindParam(':strasse', $strasse); $stmt->bindParam(':ort', $ort); $stmt->bindParam(':sorte', $sorte); $stmt->bindParam(':menge', $menge); $stmt->bindParam(':ID', $ID); if ($stmt->execute()) { echo "Änderung erfolgreich übernommen <br><br>"; } else { echo "SQL-Fehler."; } } // Daten aus der Datenbank holen $abfrage = "SELECT * FROM $tblname"; $stmt = $db->query($abfrage); $dsz = $stmt->rowCount(); // Ausgabe der Daten echo "<table border='#000000'>"; echo "<tr align='center' bgcolor='#C0C0C0'><td><b>Name</b></td><td><b>Strasse</b></td><td><b>Ort</b></td><td><b>Sorte</b></td><td><b>Menge</b></td></tr>"; foreach ($stmt as $i => $row) { $id = $row['id']; $name = $row['Name']; $strasse = $row['Strasse']; $ort = $row['Ort']; $sorte = $row['Sorte']; $menge = $row['Menge']; echo ($i % 2 == 1) ? "<tr bgcolor='#C0C0C0'>" : "<tr>"; echo "<td>$name</td><td>$strasse</td><td>$ort</td><td>$sorte</td><td>$menge</td></tr>"; } echo "</table>"; // Ändern ermöglichen if (isset($_POST["Aendern"])) { $id = $_POST['ID']; $abfrage = "SELECT * FROM $tblname WHERE Name = :id"; $stmt = $db->prepare($abfrage); $stmt->bindParam(':id', $id); $stmt->execute(); $row = $stmt->fetch(); if ($row) { $name = $row['Name']; $strasse = $row['Strasse']; $ort = $row['Ort']; $sorte = $row['Sorte']; $menge = $row['Menge']; ?> <form action="apfeldb_aendern.php" method="POST"> <input type='Hidden' name="id" value="<?php echo $id; ?>"> <input type='Text' name='Name' value='<?php echo $name; ?>'> <input type='Text' name='Strasse' value='<?php echo $strasse; ?>'> <input type='Text' name='Ort' value='<?php echo $ort; ?>'> <input type='Text' name='Sorte' value='<?php echo $sorte; ?>'> <input type='Text' name='Menge' value='<?php echo $menge; ?>'> <input type="Submit" name="speichern" value="Speichern"> </form> <?php } } else { ?> <br> <b>Daten eines Kunden ändern:</b><hr> Geben Sie die id des Kunden ein, um seine/ihre Daten zu ändern:<br> <form action="apfeldb_aendern.php" method="POST"> <pre> Name: <input type="Text" name="id"> <input type="Submit" name="Aendern" value="Ändern"> </pre> </form> <?php } ?>
<?php // apfeldb_anzeigen (Löschen) // Fehlerberichterstattung aktivieren require("connect.inc.php"); // PDO-Verbindung $tblname = "bestellung"; echo "- Löschen von <font color='#ff0000'>$tblname</font> möglich<hr>"; // Daten löschen if (isset($_POST["Loeschen"])) { $ID = $_POST["ID"]; // SQL-Abfrage zum Löschen der Daten $abfrage = "DELETE FROM bestellung WHERE Name = :ID"; $stmt = $db->prepare($abfrage); $stmt->bindParam(':ID', $ID); if ($stmt->execute()) { echo "Daten erfolgreich gelöscht.<br><br>"; } else { echo "SQL-Fehler."; } } else { ?> <br> <b>Daten eines Kunden löschen:</b><br> Geben Sie den Namen des Kunden ein, um seine/ihre Daten zu löschen:<br> <form action="apfeldb_loeschen.php" method="POST"> <pre> Name: <input type="Text" name="ID"> <input type="Submit" name="Loeschen" value="Löschen"> </pre> </form> <hr> <?php } // Daten aus der Datenbank holen $abfrage = "SELECT * FROM $tblname"; $stmt = $db->query($abfrage); $dsz = $stmt->rowCount(); // Ausgabe der Daten echo "<br><table border='#000000'>"; echo "<tr align='center' bgcolor='#C0C0C0'><td><b>Name</b></td><td><b>Straße</b></td><td><b>Ort</b></td><td><b>Sorte</b></td><td><b>Menge</b></td></tr>"; foreach ($stmt as $i => $row) { $name = $row['Name']; $strasse = $row['Strasse']; $ort = $row['Ort']; $sorte = $row['Sorte']; $menge = $row['Menge']; echo ($i % 2 == 1) ? "<tr bgcolor='#C0C0C0'>" : "<tr>"; echo "<td>$name</td><td>$strasse</td><td>$ort</td><td>$sorte</td><td>$menge</td></tr>"; } echo "</table>"; ?>
<?php // MySQL-Verbindung aufbauen require("connect.inc.php"); // PDO-Verbindung $tblname = "bestellung"; echo "- Sortieren von <font color='#ff0000'>$tblname</font> möglich<hr>"; // Daten aus der Datenbank holen $abfrage = "SELECT * FROM $tblname"; $stmt = $db->query($abfrage); $dsz = $stmt->rowCount(); // Wenn "Sortieren" geklickt wurde, nach Auswahl sortieren if ($_POST["Sortieren"] == "Sortieren") { $wahl = $_POST["wahl"]; // SQL-Abfrage mit ORDER BY für die ausgewählte Spalte $abfrage = "SELECT * FROM $tblname ORDER BY $wahl"; $stmt = $db->query($abfrage); } ?> <!-- Formular zur Sortierung --> <form action="apfeldb_sortieren.php" method="POST"> <?php echo "<table border='#000000'>"; // Radiobuttons für die Spaltenauswahl echo "<tr align='center'><td><input type='Radio' name='wahl' value='Name'></td> <td><input type='Radio' name='wahl' value='Strasse'></td> <td><input type='Radio' name='wahl' value='Ort'></td> <td><input type='Radio' name='wahl' value='Sorte'></td> <td><input type='Radio' name='wahl' value='Menge'></td></tr>"; // Tabellenüberschriften echo "<tr align='center' bgcolor='#C0C0C0'><td><b>Name</b></td> <td><b>Straße</b></td> <td><b>Ort</b></td> <td><b>Sorte</b></td> <td><b>Menge</b></td></tr>"; // Ausgabe der Datensätze foreach ($stmt as $i => $row) { $name = $row['Name']; $strasse = $row['Strasse']; $ort = $row['Ort']; $sorte = $row['Sorte']; $menge = $row['Menge']; // Wechselnde Hintergrundfarbe für jede zweite Zeile echo ($i % 2 == 1) ? "<tr bgcolor='#C0C0C0'>" : "<tr>"; echo "<td>$name</td><td>$strasse</td><td>$ort</td><td>$sorte</td><td>$menge</td></tr>"; } echo "</table>"; ?> <br> <input type="Submit" name="Sortieren" value="Sortieren"> </form> <?php // MySQL-Verbindung schließen $db = null; echo "<br>Verbindung beendet!"; echo "<br><br><a href='appleshop.html'>Zurück</a>"; ?>