MySQL, PHP und HTML Dynamische Website mit Datenbankanbindung Die Verwendung der Datenbank MySQL macht am meisten Sinn, wenn sie als WebDatenbank eingesetzt wird. Dies geschieht in der Form, dass Besucher einer Website etwas in ein Formular eintragen und absenden. Das Formular ist auf herkömmliche Weise mit HTML als Teil einer Seite erstellt. Die in Variablen eingelesenen Werte werden dann an PHP übergeben. Hier muss eine Verbindung zur Datenbank aufgebaut werden, und dann werden entweder Daten eingegeben – hier kommt dann SQL zum Einsatz (insert into ...) oder ausgegeben (select ....) Mittels PHP müssen die Werte dann wieder in HTML zurückgegeben werden, damit der Besucher der Website die Daten auf dem Browser sehen kann. 10 Demo: Datenbank Personen Die Möglichkeit, eine MySQL-Datenbank über PHP zu pflegen, soll an einem möglichst einfachen Beispiel demonstriert werden. Eine Datenbank mit dem Namen personen soll nur eine Tabelle namen enthalten. Diese Tabelle enthält nur zwei Felder: Ein Primärschlüsselfeld namens ID, welches die Eigenschaft auto_increment hat, und das Feld nachname. Aufgabe: Erstellen Sie die Datenbank personen über PHPmyAdmin. Struktur der Tabelle namen im PHPmyAdmin: 11 Konzept: Datenbankanbindung Hier sollen nun insgesamt fünf Dateien zum Einsatz kommen, die den HTML- und PHP-Code beinhalten. Der Aufbau der Verbindung zur Datenbank (Datei db_verbindung.php) erfolgt hier separat durch Anklicken des Hyperlinks, aber nur, um diesen Vorgang deutlich hervorzuheben; später wird dies automatisiert. index.php Die Startseite soll Links enthalten, über die die einzelnen PHP-Module per Mausklick aufgerufen werden db_verbindung.php Aufbau der Verbindung zur Datenbank eingabe.php namen_auf.php Eingabe-Formular Eintrag der Daten in die Datenbank db_ausgabe.php Ausgabe im HTML-Code 45 MySQL, PHP und HTML Dynamische Website mit Datenbankanbindung 11.1 Index-Datei zum Aufruf der Module erstellen Die Datei index.php steuert die Angelegenheit und bietet die Möglichkeit, die Module einzeln zu testen. Jedes der kleinen Programme soll einen Hyperlink enthalten, mit dem man zur Index-Seite zurückgelangen kann. Auf dem Browser soll die Indexseite folgendermaßen aussehen. Wir erstellen diese Seite mit HTML-Code zuerst, auch wenn die verlinkten Dateien noch nicht da sind. Der vollständige Code der Datei index.php: <!--index.php --> <html><head> <link rel="stylesheet" href="standard.css" type="text/css"> <title></title> </head><body> <h1>Testseite Datenbank</h1> <table border=2> <tr> <td width=300> <a href="http://localhost/db/db_verbindung.php">Verbindung zur Datenbank <br> Personen herstellen</a><br>Datei db_verbindung.php<br> </td> <td width=300> <a href="http://localhost/phpmyadmin/index.php">PHPMYAdmin<br> </td> </tr> <tr> <td width=300><a href="http://localhost/db/eingabe.php"> Formular zur Aufnahme von Namen</a> <br> Datei eingabe.php </td> <td width=300><a href="http://localhost/db/db_ausgabe.php"> Auflistung der Daten</a><br> Datei db_ausgabe.php </td> </tr> <tr> <td width=300><a href="http://localhost/db/auswahl_select.php"> Namen zum Suchen </a> <br> Datei auswahl_select.php </td> <td width=300><a href="http://localhost/db/auswahl_loesch.php"> Namen zum Löschen eingeben </a> <br> Datei auswahl_loesch.php </td></tr> </table> </body> </html> 46 MySQL, PHP und HTML Dynamische Website mit Datenbankanbindung 12 Verbindung zur Datenbank Zunächst soll die Verbindung zur Datenbank aufgebaut werden. Dazu wird die Datei db_verbindung erstellt. In dieser Datei werden zwei PHP-Funktionen verwendet: mysql_connect(hostname, user, password) und mysql_select_db(datenbank) (Die Datenbank-Zugriffsfunktionen sind auch möglich als @MYSQL_CONNECT bzw. @MYSQL_SELECT_DB ;die Angabe des @-Zeichens kann entfallen, es verhindert, dass Standard-Fehlermeldungen zu PHP-Funktionen ausgegeben werden. Besser ist es, eigene Meldungen einzubauen) 12.1 Verbindung zur Datenbank über die Datei: db_verbindung.php Die Syntax der zweiten hier verwendeten Funktion ist einfach: Mit mysql_select_db wird die Verbindung zur Datenbank hergestellt. hier muss der Ausdruck also lauten: mysql_select_db("personen") or die ("Die Datenbank existiert nicht"); Mit dem Zusatz (or die = "oder sterbe") geben Sie an, was geschieht, wenn die Verbindung nicht aufgebaut werden kann. Durch die selbst definierte Fehlermeldung ("Die Datenbank existiert nicht") ist die Kontrolle besser, als wenn eine standardisierte Meldung (in Englisch) erscheint. Datei db_verbindung.php <!--db_verbindung.php --> <html> <head> <title>Verbindung zur Datenbank</title> </head> <body> <?php mysql_connect("localhost","root","bfw") or die ("Keine Verbindung möglich"); echo "Verbindung zum Server erfolgreich<br>"; mysql_select_db("personen") or die ("Die Datenbank existiert nicht"); echo "Verbindung zur Datenbank erfolgreich<br>"; ?> <a href="http://localhost/index.php">Zurück zur Startseite</a> </body> </html> 12.2 Datei zum Verbinden mit der Datenbank einbinden Die Vebindung zur Datenbank muss immer wieder (in jeder Datei neu) aufgebaut werden. Hier ist es sinnvoll, eine Datei über den include-Befehl einzubinden. Aufgabe: Erstellen Sie die Datei verbindung.php <? mysql_connect("localhost","root","bfw"); mysql_select_db("personen"); ?> Nachdem einmal die Verbindung getestet worden ist, werden hier die Fehlermeldungen fortgelassen. In jeder weiteren Datei müssen nun diese Datei über den folgenden Befehl eingebunden werden: include("verbindung.php"); 47 MySQL, PHP und HTML Dynamische Website mit Datenbankanbindung 13 Eingabe-Formular: eingabe.php Das Eingabe-Formular ist konventionell mit HTML zu erstellen, es übergibt den Wert der Variable aufvar an die php-Datei namen_auf.php. Dies geschieht in der folgenden Zeile <form action="namen_auf.php" method="POST"> Übrigens gibt es zwei Methoden der Übergabe, nämlich method=post und method=get. Die letztere Methode ist es, die zu den ganz langen Ausdrücken in der Adresszeile des Browsers führt, darin werden die gesamten Informationen gewissermaßen im Klartext übertragen, auch Passwörter; deshalb ist diese Methode für PHP nicht die richtige Wahl! Auf dem Bildschirm erscheint die Datei so: Datei eingabe.php <!--eingabe.php--> <html><head> <link rel="stylesheet" href="standard.css" type="text/css"> <html><head> <title>Datenbank-Eingabe</title> </head> <body> <h1>Datenbank-Eingabe</h1> <p>Geben Sie einen Namen in die Datenbank <b>Personen, Tabelle Namen</b>, ein: <form action="namen_auf.php" method="POST"> <input type="text" name="aufvar" size=20><input type="Submit" value="OK"> <br><br> <input type="reset" value="Abbrechen"><br><br> Zeige die Namensliste an: <a href="db_ausgabe.php">Ergebnis</a></p> <p><a href="index.php">Zurück zur Startseite</a></p> </form></body></html> 14 Aufnahme der Daten in die Datenbank – Datei namen_auf. php Bisher ist der Stand der Dinge folgender: Die Verbindung zum Host und zur Datenbank ist erfolgt, und anschließend ist über ein HTML-Formular ein Name zur Neuaufnahme in die Datenbank personen eingelesen worden. Der Name befindet sich in der Variable mit dem Namen aufvar . Nun muss der Eintrag des Namens in die Datenbank erfolgen. Zu diesem Zweck wird die Datei namen_auf.php erstellt. Hier wird erst deutlich, wie die DatenbankSprache SQL ins Spiel kommt: 48 MySQL, PHP und HTML Dynamische Website mit Datenbankanbindung $abfrage="INSERT INTO namen(nachname) values ('$aufvar')"; Wenn Sie diese Zeile betrachten, dann sehen Sie, dass der Eingabe-Befehl insert into in eine Variable eingelesen wird: $abfrage An der Stelle, an der im insert into-Befehl die Werte stehen (in der Klammer hinter values) sehen Sie hier values ('$aufvar') Es wird also die vorher im HTML-Formular gebrauchte bzw. definierte Variable aufvar, mit einem $-Zeichen versehen und damit PHP-konform, eingelesen. in der nächsten Zeile wird eine weitere Variable eröffnet: $res = mysql_query($abfrage); In die neue Variable $res wird das übergeben, was vorher in $abfrage stand (res=result= Ergebnis). Sie können die Variable nennen, wie Sie möchten, sie könnte also beispielsweise auch $ergebnis heißen. Nach der Aufnahme wird der Name noch einmal auf dem Browser angezeigt (echo "$aufvar";) Datei namen_auf.php <!--namen_auf. php --> <html><head> <link rel="stylesheet" href="standard.css" type="text/css"> <title>Namen in der Datenbank</title> </head> <h1>Der neue Name in der Datenbank</h1> <?php include("verbindung.php"); $abfrage="INSERT INTO namen(nachname) values ('$aufvar')"; $res = mysql_query($abfrage); if(!$res) {echo mysql_error(); } echo "$aufvar"; ?> <a href="index.php">Zurück zur Startseite</a></p> </body></html> 15 Ausgabe der Daten Um zu sehen, dass sich die eingegebenen Daten (also die erfassten Namen) auch tatsächlich in der Datenbank befinden, können Sie natürlich auch PHPMyAdmin einsetzen. Aber für den Einsatz im Web ist es sicherlich besser – und auch Sinn und Zweck der vorliegenden Übungen), wenn man die Ausgabe der Daten wieder über HTML bewerkstelligen kann. Zur Ausgabe der Daten gilt folgendes: Der SQL-Befehl zur Ausgabe aller Namen ist folgender: SELECT ID,NACHNAME from namen Wenn PHP ins Spiel kommt, dann muss allerdings etwas anders gearbeitet werden. Sie benötigen zwei PHP-Funktionen zur Ausgabe der Daten: mysql_fetch_row()[wörtlich: “hole die Reihen“) „Mit mysql_fetch_row() kann man sich anhand einer Ergebnis-Kennung einen Datensatz in Form eines indizierten Arrays übergeben lassen. 49 MySQL, PHP und HTML Dynamische Website mit Datenbankanbindung Im Erfolgsfall liefert diese Funktion den aktuellen Datensatz, sonst wird false zurückgegeben.“ (aus: Selfphp) list() „Die Funktion list() weist den als Argumente übergebenen Variablen die Werte aus einem Array zu.“ (aus: Selfphp) Das Ganze muss zusätzlich in Form einer while-Schleife erfolgen. Auf Deutsch übersetzt, könnte man das Ganze so zusammenfassen: Solange die Auflistung der Daten aus der Tabelle (list) noch einen Wert ergibt, gebe die Daten aus (mysql_fetch_row) und mache einen Zeilenwechsel, gebe dann wieder einen Feldinhalt aus, usw, bis keine Daten mehr vorhanden sind. Dem entsprechen die folgenden Zeilen aus der Datei: while (list($ID,$NACHNAME) = mysql_fetch_row($erg)) { echo "$ID $NACHNAME <BR>\n"; } Aufgabe: Erstellen sie die folgende Datei und speichern Sie wieder im Verzeichnis C:\xampplite\htdocs ab. Testen Sie dann Ihr Datenbanksystem! Datei db_ausgabe.php <!-db_ausgabe.php--> <link rel="stylesheet" href="standard.css" type="text/css"> <html> <head> <title>Verbindung zur Datenbank</title> </head> <body> <h1>Personen in der Datenbank</h1> <?php include("verbindung.php"); $abfrage = "SELECT ID,NACHNAME from namen"; $erg = mysql_db_query("personen",$abfrage,$verbindung); while (list($ID,$NACHNAME) = mysql_fetch_row($erg)) { echo "$ID $NACHNAME <BR>\n"; } // Verbindung beenden mysql_close($verbindung); ?> <a href="index.php">Zurück zur Startseite</a></p> </body> </html> 50 MySQL, PHP und HTML Dynamische Website mit Datenbankanbindung 16 Erweiterung: a) Suchen und b) Löschen von Namen Jetzt soll das Testsystem so ausgebaut werden, dass damit Daten gelöscht und gezielt gesucht werden können. 16.1 Suchen von Daten Im nächsten Schritt soll nun die Datei programmiert werden, mitr deren Hilfe wir die Daten gezielt suchen. Zunächst muss dabei das Formular aufgerufen werden, ähnlioch wie das, über das wir vorher die Daten aufgenomen haben. Das ist wieder reiner HTML-Code; wenn der Inhalt der Variablen an PHP übergeben wird, erfolgt wieder der Zugriff auf die Datenbank. Wenn die Datei auswahl_select.php aufgerufen wird, sehen Sie auf dem Bildschirm: Dem entspricht der HTML-Code: auswahl_select.php <!--auswahl_select.php--> <html><head> <link rel="stylesheet" href="standard.css" type="text/css"> <title>Datenbank-Eingabe</title> </head> <body> <h2>Datenbank-Eingabe</h2> <p>Geben Sie einen Namen zum Suchen für <b>Personen, Tabelle Namen</b>, ein: <form action="namen_such.php" method="POST"> <input type="text" name="such" size=20><br> <br> <p><input type="Submit" value="OK"> <p><input type="reset" value="Abbrechen"> Zeige die Namensliste an:<a href="db_ausgabe.php">Ergebnis</a></p> <p><a href="index.php">Zurück zur Startseite</a></p> </form> </body></html> Die Variable bekommt also den Namen such und kann dann später in PHP über $such angesprochen werden. Mit dieser Zeile ist die Variable aufgenommen worden: <input type="text" name="such" size=20><br> 51 MySQL, PHP und HTML Dynamische Website mit Datenbankanbindung In der Form-action-Zeile ist schon bestimmt worden, welche PHP-Datei die Aufgabe bekommt, die Daten zu suchen: <form action="namen_such.php" method="POST"> Das Formular hat nun die Aufgabe an die PHP-Datei namen_such übergeben. Diese Datei muss den Select-Befehl beinhalten, über den wir die Daten suchen. In eine neue Variable $erg (erg =Ergebnis) wird die Funktion mysql_query aufgerufen: $erg = mysql_query("SELECT ID,NACHNAME from namen where nachname='$such'"); Die Auflistung der Daten erfolgt wieder wie vorher über die while-Schleife, in die die Funktion mysql_fetch_row eingebettet ist: while (list($ID,$NACHNAME) = mysql_fetch_row($erg)) { echo "$ID $NACHNAME <BR>\n"; } Der komplette Code zum Vergleich: (Datei namen_such.php) <!--namen_such. php --> <link rel="stylesheet" href="standard.css" type="text/css"> <html> <head> <title>Namen in der Datenbank</title> </head> <? include("verbindung.php"); $erg = mysql_query("SELECT ID,NACHNAME from namen where nachname='$such'"); while (list($ID,$NACHNAME) = mysql_fetch_row($erg)) { echo "$ID $NACHNAME <BR>\n"; } ?> <a href="index.php">Zurück zur Startseite</a></p> </body> </html> Aufgabe: Erstellen Sie die Datei und testen Sie, ob die Daten aufgelistet werden. Bei folgendem Beispiel erfolgt dann (vorausgesetzt, der Name – hier Parson – ist in der Datenbank:): Das Ergebnis ist natürlich nicht spektakulär, aber es zeigt, dass das Suchen funktioniert hat. 16.2 Löschen von Datensätzen Nach genau demselben Schema kann dann das Löschen von Namen erfolgen. Hier wird wieder eine Formular-Datei benötigt, die den Namen aufnimmt, der gelöscht werden soll. Die folgende Datei ist nur eine Abwandlung des bestehenden Formulars, mit dem Unterschied, dass die Variable hier loesch heißt. 52 MySQL, PHP und HTML Dynamische Website mit Datenbankanbindung Aufgabe: Erstellen Sie die Datei auswahl_loesch.php. <!--auswahl_loesch.php--> <link rel="stylesheet" href="standard.css" type="text/css"> <html><head> <title>Datenbank-Eingabe</title> </head> <body> <h2>Datenbank-Eingabe</h2> <p>Geben Sie einen Namen zum Löschen für <b>Personen, Tabelle Namen</b>, ein: <form action="namen_loesch.php" method="POST"> <input type="text" name="loesch" size=20><br> <br> <p><input type="Submit" value="OK"> <p><input type="reset" value="Abbrechen"> Zeige die Namensliste an:<a href="db_ausgabe.php">Ergebnis</a></p> <p><a href="index.php">Zurück zur Startseite</a></p> </form> </body> </html> Die aufgerufene Datei namen_loesch.php ist ähnlich den vorigen PHP-Dateien. Sie ist bis auf den Inhalt der Funktion mysql_query gleich: $erg = mysql_query("delete from namen where nachname='$loesch'"); In die Variable $erg wird der delete-Befehl mit der Bedingung aufgenommen. Aufgabe: Erstellen Sie die Datei namen_loesch.php <link rel="stylesheet" href="standard.css" type="text/css"> <!--namen_loesch. php --> <html> <head> <title>Namen in der Datenbank</title> </head> <? include("verbindung.php"); $erg = mysql_query("delete from namen where nachname='$loesch'"); echo "Der Datensatz wurde gelöscht<br>" ?> <a href="index.php">Zurück zur Startseite</a></p> </body> </html> Aufgabe: Testen Sie nun das gesamte System. 53 MySQL, PHP und HTML Dynamische Website mit Datenbankanbindung 17 Ausgabe einer größeren Tabelle Zur Datenbank verkauf soll jetzt die Ein- und Ausgabe von Daten realisiert werden. Dabei werden wir auch den Einsatz von Tabellen anwenden, damit die ausgegebenen Daten in ansprechenderer Form wiedergegeben werden. Die Datenbank verkauf soll zunächst im PHPMyADMIN angelegt werden, die Tabelle kunden mit den dazugehörigen Datensätzen wird über eine Textdatei (kunden.txt) als Dump eingelesen. Aufgabe: Erzeugen Sie die Datenbank verkauf. In die noch leere Datenbank wird jetzt die Tabelle eingelesen. Klicken Sie dazu auf SQL (bei geöffneter Datenbank verkauf) und anschließend auf die Schaltfläche Durchsuchen, um die Textdatei einzulesen. (hier muss natürlich der Pfad bekannt sein, an dem sich die Datei befindet) PHPMyAdmin meldet dann: 54 MySQL, PHP und HTML Dynamische Website mit Datenbankanbindung Die Tabelle Kunden hat folgende Felder: Die Inhalte (auszugsweise aus PHPmyAdmin wiedergegeben:) In einem Formular, ähnlich wie schon erstellt, soll eine Kundennummer abgefragt werden. Die Datei mit dem Namen connect_verkauf.php stellt die Verbindung zur Datenbank her. connect_verkauf.php <!--connect_verkauf.php --> <? mysql_connect("localhost","root","bfw") or die ("Keine Verbindung moeglich"); mysql_select_db("verkauf") or die ("Die Datenbank existiert nicht"); ?> Das Formular: Datei form_kunden.php <!--form_kunden.php --> <html><head> <link rel="stylesheet" href="standard.css" type="text/css"> <title>Formular zur Abfrage</title> </head> <body> <h1>Kundendaten abrufen</h1> <form action = "kunden_ausgabe.php" method="post"> Bitte Kundennummer eingeben <input type="text" name="knr" size=5><br><br> <input type="Submit" value="OK"> <input type="reset" value="Abbrechen"> </form> </body></html> 55 MySQL, PHP und HTML Dynamische Website mit Datenbankanbindung Das Formular schickt die Daten an die Datei kunden_ausgabe.php <html><head> <link rel="stylesheet" href="standard.css" type="text/css"> <title>Kunden aus Verkauf</title> </head> <body> <h1>Kundendaten</h1> <?php include("connect_verkauf.php"); $abfrage="select knr,vorname,name,strasse,nr,plz,ort,telefon from kunden where knr ='$knr'"; $sql=mysql_query($abfrage); while ($row = mysql_fetch_array($sql)) { echo echo echo echo echo echo echo } $row["knr"]." "; $row["vorname"]." "; $row["name"]." "; $row["strasse"]." "; $row["plz"]." "; $row["ort"]." "; $row["telefon"]." "; ?> </body></html> Ausgabe auf dem Bildschirm: Besser ist es, Zeilenumbrüche zwischen die Zeilen zu setzen. Die Ausgabe soll stattdessen so aussehen: Aufgabe: Ändern Sie den Code so um, dass Sie diese Ausgabe erreichen. 56 MySQL, PHP und HTML Dynamische Website mit Datenbankanbindung Lösung: <!-kunden_ausgabe2.php--> <html><head> <link rel="stylesheet" href="standard.css" type="text/css"> <title>Kunden aus Verkauf</title> </head> <body> <h1>Kundendaten</h1> <pre> <?php include("connect_verkauf.php"); $abfrage="select knr,vorname,name,strasse,nr,plz,ort,telefon from kunden where knr ='$knr'"; $sql=mysql_query($abfrage); while ($row = mysql_fetch_array($sql)) { echo echo echo echo echo echo echo "Kundennummer: "Vorname: "Name: "Straße: "PLZ: "Ort: "Telefon: } ".$row["knr"]."<br>"; ".$row["vorname"]."<br>"; ".$row["name"]."<br>"; ".$row["strasse"]."<br>"; ".$row["plz"]."<br>"; ".$row["ort"]."<br>"; ".$row["telefon"]; ?> </pre> </body></html> Noch ansprechender ist allerdings die Ausgabe in Tabellenform. Die Frage nach der Kundennummer soll wie vorher gezeigt erfolgen, dann soll die Ausgabe sein: Dazu muss die Datei, die die Werte ausgibt, so verändert werden, dass eine Tabelle definiert wird und anschließend die Werte ausgegeben werden. Aufgabe: Rufen Sie mit dem PHP-Coder wieder die Datei so1.php auf. Hier muss nur eine Zeile verändert werden, damit eine veränderte Kundenausgabe aufgerufen werden kann: <form action = "kunden_ausgabe2.php" method="post"> Speichern Sie dann die Datei mit dem veränderten Namen kunden_ausgabe2.php ab. <table> <tr> <td> </td> <td> </td> <td> </td> <td> </td> <td> </td> <td> </td> </tr> </table> Die Definition einer Tabelle mit 6 Spalten sieht in HTML bekanntlich so aus: 57 MySQL, PHP und HTML Dynamische Website mit Datenbankanbindung Dieses Tabellengerüst muss entsprechend in den PHP-Code eingebaut werden. Datei kunden_ausgabe2.php <!--kunden_ausgabe2.php--> <html><head> <link rel="stylesheet" href="standard.css" type="text/css"> <title>Ausgabe des gesuchten Kunden</title> </head> <body> <h2>Der gewünschte Kunde ist:</h2> <? include("connect_verkauf.php"); $abfrage="select knr,vorname,name,strasse,nr,plz,ort,telefon where knr ='$knr'"; $erg=mysql_query($abfrage); $row = mysql_fetch_array($erg); ?> <table border="1" cellspacing="2" <? while($row["knr"]) { echo ("<tr>") ; echo ("<td bgcolor=\"#eeffee\">") echo ($row["vorname"]."</td>") ; echo ("<td bgcolor=\"#ffffee\">") echo ($row["name"]."</td>") ; echo ("<td bgcolor=\"#eeffff\">") echo ($row["strasse"]."</td>") ; echo ("<td bgcolor=\"#eeffee\">") echo ($row["plz"]."</td>") ; echo ("<td bgcolor=\"#eeeeff\">") echo ($row["ort"]."</td>") ; echo ("<td bgcolor=\"#ffeeee\">") echo ($row["telefon"]."</td>") ; echo ("</tr>") ; $row=mysql_fetch_array($erg); } ?> </tr> </table> </body></html> cellpadding="2"> ; ; ; ; ; ; Jetzt soll die Ausgabe so erfolgen: 58 from kunden MySQL, PHP und HTML Dynamische Website mit Datenbankanbindung Die Tabellenzellen stehen also untereinander statt nebeneinander. Dazu ist ein etwas anderer Aufbau der HTML-Zeilen erforderlich. Für jede Zeile wird das <tr>-Tag gesetzt und mit </tr> wieder geschlossen. Dazwischen stehen die <td>-Tags zur Definition der Tabellenzeile (td=table data) Grundaufbau einer HTML-Tabelle mit 3 Zeilen untereinander: <table > <tr> <td> </td> </tr> <tr> <td> </td> </tr> <tr> <td> </td> </tr> </table> Das heißt, dass Sie jetzt nur jeweils das Öffnen und Schließen der Zeile dazwischen setzen müssen. Der Code der veränderten Datei kunden_ausgabe3.php: <!--kunden_ausgabe3.php--> <html><head> <link rel="stylesheet" href="standard.css" type="text/css"> <title>Ausgabe des gesuchten Kunden</title> </head> <body> <h2>Der gewünschte Kunde ist:</h2> <? include("connect_verkauf.php"); $abfrage="select knr,vorname,name,strasse,nr,plz,ort,telefon where knr ='$knr'"; $erg=mysql_query($abfrage); $row = mysql_fetch_array($erg); ?> <table border="1" cellspacing="2" <? while($row["knr"]) { echo ("<tr>") ; echo ("<td bgcolor=\"#eeffee\">") echo ($row["vorname"]."</td>") ; echo ("</tr>") ; echo ("<tr>") ; echo ("<td bgcolor=\"#ffffee\">") echo ($row["name"]."</td>") ; echo ("</tr>") ; echo ("<tr>") ; echo ("<td bgcolor=\"#eeffff\">") echo ($row["strasse"]."</td>") ; echo ("</tr>") ; echo ("<tr>") ; echo ("<td bgcolor=\"#eeffee\">") echo ($row["plz"]."</td>") ; echo ("</tr>") ; echo ("<tr>") ; echo ("<td bgcolor=\"#eeeeff\">") echo ($row["ort"]."</td>") ; echo ("</tr>") ; cellpadding="2"> ; ; ; ; ; 59 from kunden MySQL, PHP und HTML Dynamische Website mit Datenbankanbindung echo ("<tr>") ; echo ("<td bgcolor=\"#ffeeee\">") ; echo ($row["telefon"]."</td>") ; echo ("</tr>") ; $row=mysql_fetch_array($erg); } ?> </tr> </table> </body></html> </html> Aufgabe: Erstellen Sie die erforderlichen HTML-Dokumente, mit denen Sie folgendes ermöglichen: Die Tabelle Blumenliste liegt als Dump vor (blumenliste.sql) Sie soll in die Datenbank verkauf importiert werden. Die Daten sollen über ein Formular abrufbar sein. Das heißt, dass der Benutzer der Website die gewünschte Artikelnummer (oder eventuell alternativ dazu den Namen der Pflanze) eingibt und dann in Tabellenform angezeigt bekommt, was an Informationen über die Pflanze verfügbar ist. Aufgabe: Verwenden Sie die txt-Datei schulungen.sql, um eine Datenbank im Internet zu Seminarveranstaltungen zu ermöglichen. Die Tabellen müssen dazu in eine MySQL-Datenbank übertragen werden. Dann soll über HTML und PHP der Aufbau der Website geleistet werden. Aus einem Formular soll abgerufen werden können, welche Seminare an welchem Termin usw. stattfinden. 60 MySQL, PHP und HTML Dynamische Website mit Datenbankanbindung 17.1 Übungsaufgaben Der folgende Ausschnitt aus einer Datei mit PHP-Code zeigt, wie zuerst die Verbindung zur Datenbank schulungen hergestellt wird und dann ein neuer Schüler aufgenommen wird: $verbindung = mysql_connect("localhost","root","bfw"); mysql_select_db("schulungen") or die ("Die Datenbank existiert nicht"); $abfrage="insert into teilnehmer (name,vorname, strasse,plz, ort, telefon, email) values ('$name','$vorname','$strasse','$plz','$ort','$telefon','$email' )"; Aufgabe: Formulieren Sie den PHP Code um: In eine Datenbank jobs soll in die Tabelle kenntnisse aufgenommen werden, was vorher über ein Formular abgefragt wurde (kenntnis, erfahrung, referenzen). Hier wurde zunächst über ein Formular eine Nummer eingegeben und dann danach in der Datenbank gesucht. Name und Vorname des gefundenen Datensatzes wird dann ausgegeben. $sql=("select vorname,name from teilnehmer where s_nr=$nr"); $ergibt=mysql_query($sql); $row=mysql_fetch_assoc($ergibt); echo "Vorname ".$row["vorname"]." "; echo "Name ".$row["name"]."<br>"; Aufgabe: Formulieren Sie den PHP Code um: Aus der Datenbank jobs soll aus der Tabelle kenntnisse ausgegeben werden, was vorher aus dem Datensatz gelesen wurde (Felder kenntnis, erfahrung, referenzen). 61 MySQL, PHP und HTML 17.2 Dynamische Website mit Datenbankanbindung Übungsaufgaben 2 1. Starten Sie PHPMyADMIN und erzeugen Sie eine neue Datenbank mit dem Namen schulungen. 2. Erstellen Sie eine Tabelle namens schueler mit den Feldern s_nr, name, vorname, strasse, ort, telefon, email. 3. Geben Sie drei Schüler ein. 4. Erzeugen Sie die Tabelle dozenten aus dem Dump der Datei dozenten.sql . 5. Es soll möglich sein, dass ein Schüler mehr als einen Kurs besucht. Ein Kurs hat natürlich auch mehr als einen Schüler. Welche Datenbanktabellen brauchen Sie dazu noch? Bitte erstellen! 6. Nehmen Sie jetzt noch einige Daten auf, um die Kursteilnahme der erfassten Schüler zu dokumentieren. 7. Erstellen Sie jetzt einen Dump der kompletten Datenbank in eine Datei. 8. Testen Sie diesen Dump, indem Sie eine weitere Datenbank mit dem Namen VHS erzeugen und darin mit dem eben erstellten Dump alle Daten wie in der ersten Datenbank wiederherstellen. 9. Jetzt soll ein PHP-Programm (Name: neuschueler.php) mit einem HTML-Formular neuschueler_form.php geschrieben werden, mit dem Sie Schüler in die Datenbank über eine Webschnittstelle aufnehmen. 10. Ein weiteres PHP-Skript (Name: schueler_loesch.php) soll dazu dienen, Schüler über die Eingabe der Nummer zu löschen. 62