- RobertKrah.de

Werbung
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
Herunterladen