Die Open-Source-Skriptsprache PHP 5.2 Stand: Januar 2011

Werbung
Die Open-Source-Skriptsprache PHP 5.2
Stand: Januar 2011
1.1. Installation von Apache Friends XAMPP Lite (Basis Package) Version 1.7.3
X
A
M
P
P
x-beliebiges internetfähiges Betriebssystem
Apache-Webserver
MySQL
PHP
Perl
System-Voraussetzungen:
128 MB RAM
160 MB freier Speicherplatz
Windows 2000, XP, Vista, Windows 7, alle Systeme 32 bit (64 bit
sollte auch funktionieren)
Installationsschritte
(1) Link: http://www.apachefriends.org/de/xampp-windows.html
(2) XAMPP Lite XAMPP Lite 1.7.3 EXE (28 MB Selbst-extrahierendes RAR-Archiv)
(3) Download von xampplite-win32-1.7.3.exe in das Hauptverzeichnis
(4) Entpacken im Hauptverzeichnis C:\ oder D:\ oder anderes Festplattenlaufwerk oder einfach
auf dem USB-Stick (Destination folder (Laufwerksbuchstabe) anpassen!
(5) Fenstermeldungen abschließen mit
shortcuts n locate y portable n Return Timezone Return Exit mit x
(6) Nach dem Entpacken ist der Ordner xampplite angelegt
(7) Im Ordner xampplite das Programm xampp-control.exe starten. Nach Start Apache und
Start, MySQL sollte Running wie unten im Fenster angezeigt werden.
Soll beim Hochfahren des PC der Apache-Webserver automatisch starten, dann muss Svc
aktiviert werden.
______________________________________________________________________________________
Tress
PHP
Seite 1
MySQL
phpMyAdmin
22.02.2011
1.2. Apache Webserver als lokalen Webserver aufrufen
Jeder Webserver im Internet ist über einen eindeutigen Domain-Namen zu erreichen beispielsweise
www.google.de
Der lokale Webserver wird im Internetbrowser über die Adresse http://localhost oder über die IP-Adresse
http://127.0.0.1 aufgerufen.
Bei erfolgreicher Installation und gestartetem Webserver (Running muss im XAMPP-Control-Panel)
angezeigt werden) erscheint die Startseite des installierten XAMPP. Beim erstmaligen Start muss noch
die Landessprache gewählt werden.
1.3. Standardspeicherort (root directory) für PHP-Dateien und ihr Aufruf
Der Standardordner für alle Webdokumente lautet bei einer Standardinstallation C:\xampplite\htdocs, bei
Installation z.B. auf einem USB-Stick F:\xampplite\htdocs, wenn der Laufwerksbuchstabe vom USBStick F: ist.
In diesem Ordner dürfen auch Unterordner gebildet werden z.B. ein Unterordner formulare. Befinden
sich in diesem Ordner z.B. die HTML-Seite formular.html und das Formular auswertende Skript
auswertung.php, so folgt der Aufruf im Browser wie folgt:
http://localhost/formulare/formular.html
Hinweis: Das Skript auswertung.php wird aus der HTML-Seite aufgerufen.
Soll z.B. nur das Programm quadrat.php ausgeführt werden so erfolgt der Aufruf wie folgt:
http://localhost/formulare/quadrat.php
1.4. Standardspeicherort (root directory) für MySQL-Datenbanken
Der Standardordner für MySQL-Datenbanken beim Aufruf von phpMyAdmin lautet bei einer
Standardinstallation: C:\xampplite\mysql\data, in der Schule nur C:\xampplite\mysql
Beim Aufruf von phpMyAdmin muss der Apache-Webserver gestartet sein.
1.5. Start Apache-Webserver und MySQL-Server im Schülernetz (ab 23.02.10)
Start Apache-Webserver: Programme Programmierung  apache_start
Im Laufwerk H: wird das Verzeichnis XAMPPLITE mit Unterordner htdocs erstellt, in dem die PHPProgramme gespeichert werden.
MySQL-Server: Programme Programmierung  mysql_start
Im Laufwerk H: wird das Verzeichnis XAMPPLITE mit Unterordner mysql erstellt, in dem die MySQLDatenbanken gespeichert werden. Installationsfenster bitte nicht schließen, sonst wird der MySQL-Server
beendet.
XAMPP Control Panel: Programme Programmierung  XAMPP control
Apache-Webserver und MySQL-Server wird gestartet angezeigt.
______________________________________________________________________________________
Tress
PHP
Seite 2
MySQL
phpMyAdmin
22.02.2011
2. Formulare mit PHP auswerten
2.1. Einfaches Formular
formular1a.html
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" >
<head>
<title>einfaches Formular</title>
</head>
<body>
<h3>Anmeldung</h3>
<p>Bitte füllen Sie die nachfolgenden Eingabefelder aus: </p>
<form action="formular_auswertung-1a.php" method="POST">
<table>
<tr><td>Vorname:</td><td><input type="text" name="vorname"></td></tr>
<tr><td>Nachname:</td><td><input type="text" name="nachname"></td></tr>
<tr><td>Wohnort:</td><td><input type="text" name="ort"></td></tr>
<tr><td><input type="submit" value="Abschicken"></td>
<td><input type="reset" value="Zurücksetzen"></td></tr>
</table>
</form>
</body>
</html>
formular_auswertung-1a.php Ausgabe entspricht nicht XHTML 1.1 Standard
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" >
<head>
<title>Formularauswertung</title>
</head>
<body>
<?php
echo "<p>Folgende Daten wurden übermittelt:</p>";
echo "Vorname: " .$_POST["vorname"] ."<br />";
echo "Nachname: " .$_POST["nachname"] ."<br />";
echo "Wohnort: " .$_POST["ort"];
?>
</body>
</html>
formular1a.html
Vom PHP-Skript erzeugte HTML-Seite
______________________________________________________________________________________
Tress
PHP
Seite 3
MySQL
phpMyAdmin
22.02.2011
formular_auswertung-1b.php Ausgabe entspricht dem XHTML 1.1 Standard
...
<body>
<?php
$vorname=$_POST["vorname"];
$nachname=$_POST["nachname"];
$ort=$_POST["ort"];
echo "<p>Folgende Daten wurden übermittelt:</p>";
echo "<p>Vorname:$vorname</p>";
echo "<p>Nachname:$nachname</p>";
echo "<p>Wohnort:$ort</p>";
?>
</body>
</html>
formular1b.html
Vom PHP-Skript erzeugte HTML-Seite
_______________________________________________________________________
formular_auswertung-1c.php Ausgabe entspricht dem XHTML 1.1 Standard
...
<body>
<?php
$vorname=$_POST["vorname"];
$nachname=$_POST["nachname"];
$ort=$_POST["ort"];
echo "<p>Folgende Daten wurden übermittelt:<br />
Vorname:$vorname <br />
Nachname:$nachname <br />
Wohnort:$ort</p>";
?>
</body>
</html>
______________________________________________________________________________________
Tress
PHP
Seite 4
MySQL
phpMyAdmin
22.02.2011
formular1c.html
Vom PHP-Skript erzeugte HTML-Seite
_______________________________________________________________________
formular_auswertung-1d.php Ausgabe entspricht nicht dem XHTML 1.1 Standard
Programm dient zum Testen der Übergabedaten!
...
<body>
<?php
echo "<p>Folgende Daten wurden übermittelt:</p>";
echo "Vorname: " .$_POST["vorname"] ."<br />";
echo "Nachname: " .$_POST["nachname"] ."<br />";
echo "Wohnort: " .$_POST["ort"];
echo "<hr>Informationen über Variablen mit <b>print_r()</b>:<br>
<pre>";
print_r($_POST);
echo "</pre>
<hr>Informationen über Variablen mit <b>var_dump()</b>:<br><pre>";
var_dump($_POST);
echo "</pre>";
?>
</body>
</html>
formular1c.html
Vom PHP-Skript erzeugte HTML-Seite
______________________________________________________________________________________
Tress
PHP
Seite 5
MySQL
phpMyAdmin
22.02.2011
2.2. Formular mit mehreren Absende-Schaltflächen
Mit PHP kann festgestellt werden, welche Submit-Schaltfläche in einem Formular gedrückt
wurde.
Datei: form_multiv1.html
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" >
<head>
<title>Formular mit mehreren Submit-Schaltflächen</title>
</head>
<body>
<h3>Berechnungen mit zwei Zahlen</h3>
<p>Bitte geben Sie zwei Zahlen ein: </p>
<form action="form_multi-auswertungv1.php" method="POST">
<table>
<tr><td>Erste Zahl:</td><td><input type="text" name="zahl1"></td></tr>
<tr><td>Zweite Zahl:</td><td><input type="text" name="zahl2"></td></tr>
<tr><td><input type="submit" name="mal" value="Zahlen multiplizieren"></td>
<td><input type="submit" name="plus" value="Zahlen addieren"></td></tr>
</table>
</form>
</body>
</html>
form_multi-auswertungv1.php Ausgabe entspricht dem XHTML 1.1 Standard
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" >
<head>
<title>Rechenergebnis</title>
</head>
<body>
<?php
echo "<h3>Rechenergebnis</h3>";
$zahl1=$_POST["zahl1"];
$zahl2=$_POST["zahl2"];
if (isset($_POST["mal"]))
{
$ergebnis = $zahl1 * $zahl2;
echo "<p>$zahl1 mal $zahl2 ist gleich $ergebnis.</p>";
}
if (isset($_POST["plus"]))
{
$ergebnis = $zahl1 + $zahl2;
echo "<p>$zahl1 plus $zahl2 ist gleich $ergebnis.</p>";
}
?>
</body>
</html>
______________________________________________________________________________________
Tress
PHP
Seite 6
MySQL
phpMyAdmin
22.02.2011
form_multi-auswertungv2.php Ausgabe entspricht nicht dem XHTML 1.1 Standard
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" >
<head>
<title>Rechenergebnis</title>
</head>
<body>
<?php
echo "<h3>Rechenergebnis</h3>";
if (isset($_POST["mal"]))
{
$ergebnis = $_POST["zahl1"] * $_POST["zahl2"];
echo $_POST["zahl1"] ." mal " .$_POST["zahl2"] . " ist gleich $ergebnis.";
}
if (isset($_POST["plus"]))
{
$ergebnis = $_POST["zahl1"] + $_POST["zahl2"];
echo $_POST["zahl1"] ." plus " .$_POST["zahl2"] . " ist gleich $ergebnis.";
}
?>
</body>
</html>
Ausgabe im Browser
Vom PHP-Skript erzeugte HTML-Seiten
______________________________________________________________________________________
Tress
PHP
Seite 7
MySQL
phpMyAdmin
22.02.2011
2.3. Formulare mit Checkboxen und Radiobuttons
Die Variablen bei den Checkboxen, Radiobuttons und Schaltflächen werden bei der Auswertung
mit PHP nur dann übermittelt, wenn sie ausgewählt bzw. angeklickt werden.
formular-2a.html
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" >
<head>
<title>einfaches Formular</title>
</head>
<body>
<h3>Formular mit Checkboxen, Radiobuttons</h3>
<form action="formular_auswertung-2a.php" method="POST">
<p>Interessen:
<input type="checkbox" name="interesse[]" value="Kultur">Kultur
<input type="checkbox" name="interesse[]" value="Musik">Musik
<input type="checkbox" name="interesse[]" value="Natur">Natur
<input type="checkbox" name="interesse[]" value="Sport">Sport
</p>
<p>Zahlungsart:
<input type="radio" name="zahlung" value="bar">bar
<input type="radio" name="zahlung" value="Scheck">Scheck
<input type="radio" name="zahlung" value="Überweisung">Überweisung
</p>
<p><input type="submit" name="absenden" value="Abschicken">
<input type="reset" value="Zurücksetzen">
</p>
</form>
</body>
</html>
Programmdatei: formular_auswertung-2a.php
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" >
<head>
<title>Formularauswertung</title>
</head>
<body>
<?php
$interesse=$_POST["interesse"];
if (!empty($_POST["interesse"]))
{
echo "1. Ausgabeform der ausgewählten Interessen:";
echo "<p>$interesse[0],$interesse[1],$interesse[2],$interesse[3]</p>";
echo "2. Ausgabeform der ausgewählten Interessen:<br>";
echo implode(", ", $_POST["interesse"])."<br />";
echo "3. Ausgabeform der ausgewählten Interessen:<br>";
echo implode("<br />", $_POST["interesse"])."<br />";
}
echo "Gewünschte Zahlungsart gewählt mit Radiobutton: ".$_POST["zahlung"];
?>
</body>
</html>
______________________________________________________________________________________
Tress
PHP
Seite 8
MySQL
phpMyAdmin
22.02.2011
Ausgabe im Webbrowser
Vom PHP-Skript erzeugte HTML-Seite
Bemerkungen:
Die 1. Ausgabeform bringt Nachteile (zu viele Kommas), wenn nicht alle Checkboxen gewählt werden. Im
obigen Beispiel wurden nur 2 Checkboxen aktiviert, also sind in der Bereichsvariablen $Interessen[] nur die
ersten beiden Felder wie folgt belegt:
Im Feld $Interessen[0] ist Kultur, im Feld $Interessen[1] ist Sport gespeichert aber nicht Musik.
In der 2. und 3. Ausgabeform wird die Feldfunktion implode(Trennzeichen,Feld) verwendet.
formular-2b.html und das PHP-Programm formular_auswertung-2b.php
…
<body>
<?php
echo "<pre>";
print_r($_POST);
echo "</pre>";
if (!empty($_POST["interesse"]))
{
echo "Folgende Interessen wurden angegeben:<br>";
echo implode(", ", $_POST["interesse"]) ."<br>";
}
?>
</body>
</html>
Formular formular-2b.html
Vom PHP-Skript erzeugte HTML-Seite
______________________________________________________________________________________
Tress
PHP
Seite 9
MySQL
phpMyAdmin
22.02.2011
2.4. Formular und Programm in einer PHP-Datei
Bisher wurden das XHTML-Formular und das PHP-Programm in getrennten Dateien gespeichert. In
vielen Fällen erweist es sich als günstiger, sowohl das Formular als auch das Formular ausgebende PHPProgramm innerhalb der gleichen PHP-Datei unterzubringen. Ein Programm kann sich auf diese Weise
selbst Daten zusenden. Dieses Verfahren kann auch verwendet werden als Eingabemaske einer
Datenbank.
Programmstart Version 1:
http://localhost/08formulare/selbstverweis_a.php
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" >
<head>
<title>Formular mit Selbstverweis</title>
</head>
<body bgcolor="<?php echo $_POST["hintergrund"]; ?>">
<h3>Hintergrundfarbe wählen</h3>
Wählen Sie eine Hintergrundfarbe für die Datei aus:
<form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="POST">
1
<p><input type="radio" name="hintergrund" value="#FFFF00">gelb
<input type="radio" name="hintergrund" value="#8FEC95">hellgrün
<input type="radio" name="hintergrund" value="#58EBE4">hellblau
<input type="radio" name="hintergrund" value="#FFFFFF">weiß </p>
<p><input type="submit" name="absenden" value="Absenden"></p>
</form>
<?php
2
if(isset($_POST["absenden"]) && isset($_POST["hintergrund"]))
{
echo "<i>Ihre Auswahl wird als Hintergrundfarbe angezeigt.</i>";
}
?>
</body>
</html>
Programmstart Version 2: Einfachere Version
http://localhost/08formulare/selbstverweis_b.php
1
Die Zeile wird mit folgender Zeile ersetzt:
<form action="selbstverweis_b.php" method="POST">
2
Es wird geprüft, ob die Variablen absenden und hintergrund aus dem Formular übermittelt
wurden. Die echo-Anweisung zur Farbauswahl wird nur ausgeführt, wenn das Formular
abgesendet und eine Farbe ausgewählt wurde.
______________________________________________________________________________________
Tress
PHP
Seite 10
MySQL
phpMyAdmin 22.02.2011
3. Datum und Zeit in PHP und in MySQL-Datenbanken
3.1. Datum und Zeit ermitteln mit der Funktion getdate()
PHP verwendet das Datum und die Uhrzeit des Webservers, auf dem das PHP-Programm läuft. Die
Funktion getdate() ruft vom Server die Informationen zum Datum und Zeit ab und liefert das Ergebnis in einem
assoziativen Feld (Array) zurück. Folgende Datums- und Zeiteinheiten sind in diesem Array abrufbar:
Datums/Zeiteinheit
seconds
minutes
hours
mday
wday
mon
year
yday
weekday
month
0
Erklärung
Sekunden der aktuellen Uhrzeit
Minuten der aktuellen Uhrzeit
Stunde der aktuellen Uhrzeit
Monatstag
Numerischer Tag der Woche
Monat als Zahl
Jahreszahl
Numerischer Tag des Jahres
Wochentag in Englisch
Monat in Englisch
Sekunden seit 01.01.1970
Rückgabewerte
0 bis 59
0 bis 59
0 bis 23
1 bis 31
0=Sonntag, 1=Montag, ... , 6=Samstag
1=Januar, 2=Februar, ..., 12=Dezember
1970 bis 2038
0 bis 365
Sunday, Monday, ... , Saturday
January, February, ... , December
http://localhost/09datum_zeit/aktuell_1.php
1. Testlauf am Montag, 01.03.2010, 21:05:11
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" >
<head>
<title>Aktuelles Datum mit Zeit ausgeben</title>
</head>
<body>
<?php
$jetzt = getdate();
print_r($jetzt);
?>
</body>
</html>
http://localhost/09datum_zeit/aktuell_2.php
2. Testlauf am Montag, 01.03.2010, 21:46:38
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" >
<head>
<title>Aktuelles Datum und Zeit ausgeben</title>
</head>
<body>
<?php
$jetzt = getdate();
print_r($jetzt);
echo "<p>Stunde: " .$jetzt["hours"];
echo "<br />Minute: " .$jetzt["minutes"];
echo "<br />Sekunde: " .$jetzt["seconds"];
echo "<br />Tag der Woche: " .$jetzt["wday"] ." = " .$jetzt["weekday"];
echo "<br />Tag des Monats: " .$jetzt["mday"];
echo "<br />Tag des Jahres: " .$jetzt["yday"];
echo "<br />Monat: " .$jetzt["mon"] ." = " .$jetzt["month"];
echo "<br />Jahr: " .$jetzt["year"];
echo "<br />Zeitstempel: " .$jetzt["0"] ."</p>";
?>
</body>
</html>
Ausgabe im Webbrowser
Array ( [seconds] => 11
[minutes] => 5
[hours] => 21
[mday] => 1
[wday] => 1
[mon] => 3
[year] => 2010
[yday] => 59
[weekday] => Monday
[month] => March
[0] => 1267473911 )
Ausgabe im Webbrowser
Array ( [seconds] => 38
[minutes] => 46
[hours] => 21
[mday] => 1
[wday] => 1
[mon] => 3
[year] => 2010
[yday] => 59
[weekday] => Monday
[month] => March
[0] => 1267476398 )
Stunde: 21
Minute: 46
Sekunde: 38
Tag der Woche: 1 = Monday
Tag des Monats: 1
Tag des Jahres: 59
Monat: 3 = March
Jahr: 2010
Zeitstempel: 1267476398
Hinweis: Die Ausgabe des Arrays wird normalerweise im Browser in einer Zeile ausgegeben.
______________________________________________________________________________________
Tress
PHP
Seite 11
MySQL
phpMyAdmin 22.02.2011
Der Zeitstempel (UNIX-Timestamp) gibt die Sekunden an, die seit dem 01.01.1970 vergangen sind. Am
01.01.1970 begann die UNIX-Epoche. Im obigen Beispiel wird das aktuelle Datum und die Zeit in der
Variablen $jetzt als assoziatives Feld (Array) gespeichert: $jetzt = getdate();
Beispielsweise können gemäß 2. Testlauf die Datums- Zeitfunktionen wie folgt abgerufen und gespeichert
werden:
$Tag
$Monat
$Jahr
$Stunden
$Minute
$Sekunde
=
=
=
=
=
=
$jetzt["mday"];
$jetzt["mon"];
$jetzt["year"];
$jetzt["hours"];
$jetzt["minutes"];
$jetzt["seconds"];
1
3
 2010
 21
 46
 38
Bei einem assoziativen Feld (Array) dürfen als Feldnamen keine Zahlen außer die Ziffer 0 verwendet werden.
Z.B. funktioniert die Ausgabe von $jetzt[1] nicht.
Englische Monatsbezeichnung an deutsche anpassen
http://localhost/09datum_zeit/monat_dt.php
Testlauf am Dienstag, 02.03.2010
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" >
<head>
<title>Monatsangabe auf deutsch</title>
</head>
<body>
<h3>Monatsangabe in deutscher Sprache</h3>
<?php
$monat = array("Januar", "Februar", "März", "April", "Mai",
"Juni", "Juli", "August", "September",
"Oktober", "November", "Dezember");
$datum = getdate();
echo "Heute ist der " .$datum["mday"] .". "
.$monat[$datum["mon"]-1] ." " .$datum["year"] .".";
?>
3
- 1=2
</body>
</html>
Das Array für deutsche
Monate reicht von
Speicherstelle 0 bis 11.
$monat[0]  Januar
$monat[2]  März
$monat[11]  Dezember
3.2. Datum und Zeit formatiert ausgeben mit der Funktion date()
Hinweis: date() funktioniert nur für Zeiten zwischen 01.01.1970 bis 18.01.2038
Auswahl an Formatanweisungen (vollständig siehe: http://de2.php.net/manual/de/function.date.php)
Angabe
d (kleines d)
D
F
g (kleines g)
G
h (kleines h)
H
i (kleines i)
j (kleines j)
l (kleines 'L')
m (kleines m)
M
n (kleines n)
s (kleines s)
t (kleines t)
y (kleines y)
Y (großes Y)
Erläuterung
Tag des Monats, 2-stellig mit führender Null
Tag der Woche gekürzt auf drei Buchstaben
Monat als ganzes Wort, wie January oder March
12-Stunden-Format, ohne führende Nullen
24-Stunden-Format, ohne führende Nullen
12-Stunden-Format, mit führenden Nullen
24-Stunden-Format, mit führenden Nullen
Minuten mit führenden Nullen
Tag des Monats ohne führende Nullen
Ausgeschriebener Tag der Woche
Monat als Zahl, mit führenden Nullen
Monatsname mit drei Buchstaben
Monatszahl, ohne führende Nullen
Sekunden, mit führenden Nullen
Anzahl der Tage des angegebenen Monats
Jahreszahl, zweistellig
Jahreszahl, vierstellig
Resultat
01 bis 31
Mon bis Sun
January bis December
1 bis 12
0 bis 23
01 bis 12
00 bis 23
00 bis 59
1 bis 31
Sunday bis Saturday
01 bis 12
Jan bis Dec
1 bis 12
00 bis 59
28 bis 31
Bsp.: 99 oder 03
Bsp.: 1999 oder 2003
______________________________________________________________________________________
Tress
PHP
Seite 12
MySQL
phpMyAdmin 22.02.2011
http://localhost/09datum_zeit/date.php
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" >
<head>
<title>Datum formatiert ausgeben</title>
</head>
<body>
<h3>Einige Formatanweisungen der Funktion <i>date()</i></h3>
<?php
echo date("d.m.y");
echo "<br>" . date("d.m.Y", time() + 86400);
echo "<br>Tag: " . date("d.m.Y") .", Uhrzeit: " .date("H:i:s");
echo "<br>" . date("j.n.y");
?>
</body>
</html>
86400 Sekunden
entsprechen
einen Tag ,
deshalb wird
das Datum
einen Tag
später ausgegeben.
Ausgabe im Webbrowser
3.3. Datum und Zeit in der Datenbank MySQL
In der Datenbank MySQL wird bei der Wahl des Felddatentyps Date das Datum im amerikanischen Format
JJJJ-MM-TT ausgegeben. Mit den folgenden Varianten kann z.B. das Bestelldatum automatisch mit PHP in
die Datenbank geschrieben werden:
Variante 1:
$jetzt = getdate();
$BestellDatum = $jetzt["year"]."-".$jetzt["mon"]."-".$jetzt["mday"];
Variante 2:
$BestellDatum = date("Y.m.d");
(Hinweis: y ist hier groß)
______________________________________________________________________________________
Tress
PHP
Seite 13
MySQL
phpMyAdmin 22.02.2011
4. MySQL als Open Source Datenbank mit phpMyAdmin verwalten
4.1. Einleitung
Zur Verwaltung von MySQL-Datenbanken wird häufig die Bedienoberfläche
phpMyAdmin verwendet. Im XAMPP Control Panel müssen sowohl der Apache
Webserver als auch der MySQL-Datenbankserver gestartet sein, damit PHP mit MySQL
arbeiten kann. Als Datenbanksprache wird SQL (Structured Query Language) eingesetzt,
mit deren Anweisungen Datenbanken, Tabellen und die darin enthaltenen Datensätze
verwaltet werden. MySQL speichert Daten in Tabellen. Eine Tabelle ist über Attribute
(Datenfeldnamen) organisiert. Ein Datensatz wird eindeutig durch einen Primärschlüssel
gekennzeichnet. Mehrere Tabellen werden über Fremdschlüssel untereinander verknüpft.
Datenbankbeispiel Firma mit 2 Tabellen und 3 Datensätzen
Datenbank Firma
Tabelle Personal
Personalnr (PK)
1
2
3
Name
Ott
Erz
Böhm
Vorname
Rudi
Bernd
Silke
Tabelle Ort
Ortnr (PK)
1
2
3
Ort
Bietigheim-B.
Sachsenheim
Bönnigheim
Strasse
Seeweg 1
Turmstr. 5
Hauptstr. 8
Gehalt
5010.34
3444.00
2567.56
Gebtag
1955-10-30
1970-08-24
1988-11-01
Ortnr (FK)
1
1
2
PLZ
74321
74343
74357
PK=Primärschlüssel
Jede Datenbanktabelle benötigt ein Attribut, das der eindeutigen Identifikation eines Datensatzes in
einer Tabelle dient. Dieses Attribut wird als Primärschlüssel bezeichnet. Der Inhalt des Primärschlüssels darf sich in den anderen Zeilen nicht wiederholen (eindeutiger Schlüssel), z.B. eine
bestimmte Personalnr darf nicht zweimal vorkommen.
FK=Fremdschlüssel
FK ist ein Attribut mit PK in einer anderen Tabelle.
Datenbankstruktur Firma
Tabelle Personal
Tabelle Ort
Personalnr
INT(5)
PK
Name
Vorname
Strasse
Gehalt
Gebtag
Ortnr
VARCHAR(20)
VARCHAR(15)
VARCHAR(30)
Double
Date
INT(10)
FK
Ortnr INT(10)
PK
Ort VARCHAR(20)
PLZ VARCHAR(10)
______________________________________________________________________________________
Tress
PHP
Seite 14
MySQL
phpMyAdmin 22.02.2011
4.2. Starten der Benutzeroberfläche phpMyAdmin
Voraussetzung: Apache- und MySQL-Server sind gestartet
1. Möglichkeit:
Browser starten Eingabe localhost
Klick auf phpMyAdmin
2. Möglichkeit: http://localhost/phpmyadmin/index.php
3. Möglichkeit: Klick auf Admin bei MySQL
4.3. Anlegen der Datenbank firma in der Oberfläche phpMyAdmin
Neue Datenbank
anlegen:
Datenbank: firma
Kollation:
latin1_german2_ci
Auswahl der Kollation wegen der Sortierreihenfolge:
latin1_swedish_ci
latin1_german1_ci
latin1_german2_ci
Muffler
MX Systems
Müller
MySQL
Sortierung falsch
Muffler
Müller
MX Systems
MySQL
Sortierung falsch
Müller
Muffler
MX Systems
MySQL
Sortierung richtig
Hinweis: Bei den Namen von Datenbanken, Tabellen und Feldern sollen keine Umlaute, kein ß, kein
Leerzeichen sowie keine Sonderzeichen verwendet werden.
4.4. Anlegen der Tabellen mit der Eingabe der Tabellenstruktur
4.4.1 Anlegen der Tabelle personen
______________________________________________________________________________________
Tress
PHP
Seite 15
MySQL
phpMyAdmin 22.02.2011
Tabellenstruktur personen
Wegen der Tabellenbeziehung bzw. dem Fremdschlüssel ist
als Tabellenformat InnoDB zu wählen!
Hinweis zur Spalte Null:
Null aktiviert mit Häkchen bedeutet, dass bei der Dateneingabe z.B. kein Gehalt bzw. kein Geburtsdatum eingegeben
werden muss. Die Felder Gehalt und Gebtag dürfen leer bleiben bei der Dateneingabe.
Hinweis zur Spalte A_I (auto_increment):
Bei Aktivierung wird die Personalnummer bei der Dateneingabe eines neuen Mitarbeiters automatisch um 1 erhöht.
Hinweis zur Spalte Index: Jede Tabelle hat nur ein Datenfeld als Primärschlüssel(Primary), hier die PersonalNr.
Dieses Feld enthält nur eindeutige Werte (keine Doppeleintragungen) und darf keine Nullwerte haben. Will man in
den anderen Datenfelder auch eindeutige Werte erreichen, dann ist als Index Unique zu wählen. In einer Tabelle
können für mehrere Datenfelder der Index Unique definiert werden. Beim Fremdschlüssel OrtsNr ist Index zu wählen.
Datentypen (Spalte Typ):
INT  ganze Zahlen
Double  alle Zahlen, Dezimalzahlen sind mit Punkt einzugeben.
VARCHAR()  fast alle Leerzeichen benötigen keinen Speicherplatz
CHAR()  jedes Leerzeichen benötigt Speicherplatz
Date  amerikanisches Eingabeformat JJJJ-MM-TT (Bsp. 2010-02-28)
Speichern wählen
(nicht OK, sonst wird eine leere Spalte hinzugefügt)
4.4.2 Anlegen der Tabelle ort
 Klick auf Datenbankname Firma
Tabellenstruktur ort
______________________________________________________________________________________
Tress
PHP
Seite 16
MySQL
phpMyAdmin 22.02.2011
Hinweis zur Spalte Ortsnr: OrtsNr ist hier der Primärschlüssel, Auto_Increment bedeutet, dass die
Datenbank automatisch die OrtsNr um 1 erhöht bei jedem neuen Datensatz. Bei der Dateneingabe braucht man dann
keine Ortsnummer eingeben.
Speichern wählen
4.4.3
(nicht OK, sonst wird eine leere Spalte hinzugefügt)
Indizes
Indizes der Tabelle personen: Klick auf tabelle personen Details
Fremdschlüssel
Index der Tabelle ort: Klick auf tabelle ort Details
4.4.4 Beziehungsübersicht
Beziehungsübersicht: Klick auf Tabelle personen Beziehungsübersicht  beim
Fremdschlüssel OrtsNr ist als Bezugstabelle "firma.ort.OrtsNr" zu wählen
speichern
4.5. Eingeben (Einfügen) der Daten
Tabelle ort
Klick links auf Tabelle ort  Menü oben Einfügen
OrtsNr nicht eingeben, wird automatisch ausgefüllt
______________________________________________________________________________________
Tress
PHP
Seite 17
MySQL
phpMyAdmin 22.02.2011
Tabelle personen
Klick links auf Tabelle Personen  Menü oben Einfügen
PersonalNr nicht eingeben, wird automatisch ausgefüllt
Tabelle personen
4.6. Sicherung der Datenbank in einem SQL-Script Exportieren
Klick Server localhost!  Klick Exportieren im Menü  firma wählen im Bereich Exportieren
 Zeichencodierung: iso-8859-1 Klick OK unten rechts  Speichern unter dem Dateinamen firma.sql
Vorteil: Datenbank kann an einem anderen
Arbeitsplatz importiert werden.
Vorteil von iso-8859-1:
Umlaute werden in die SQL-Datei
übernommen.
4.7. Erzeugen der Datenbank mit einem SQL-Script Importieren
Klick Importieren im Menü oben  Durchsuchen  SQL-Script-Datei wählen und öffnen OK
4.8. Sicherung einzelner Datenbanktabellen in einem SQL-Script Exportieren
Klick auf den Datenbankname Firma  Klick auf Exportieren im Menü oben  Tabelle(n) auswählen im
Bereich Exportieren Klick OK unten rechts  Speichern unter dem Dateinamen Firma.sql
4.9. Erzeugen einer Datenbanktabelle mit einem SQL-Script Importieren
Klick auf den Datenbankname Firma Klick Importieren im Menü oben  Durchsuchen  SQL-ScriptDatei wählen und öffnen OK
______________________________________________________________________________________
Tress
PHP
Seite 18
MySQL
phpMyAdmin 22.02.2011
5. PHP und MySQL
5.1. Das Grundprinzip der dynamischen Webseiten
Client und Server
1. Anfrage z.B. www.google.de
2. XHTML-Datei mit Formular
z.B. zur Eingabe des Suchtextes
6. Webserver sendet XHTML-Datei an
Webbrowser
Client
PHP
4. Abfrage
und Auswertung
der Daten
D atenbankserver
3. Daten/Formular
W ebserver
Webbrowser
Datenbank
5. PHP erstellt eine
neue XHTML-Seite
Webserver
z.B. ApacheServer
Datenbankserver
z.B. MySQLDatenbankserver
XAMPP
Webserver und Datenbankserver
laufen auf dem lokalen Rechner jeweils
unter dem Hostnamen localhost
Die Begriffe "Client" und "Server" bezeichnen nicht nur die entsprechenden Computer (Hardware), sondern
auch die erforderlichen Computerprogramme (Software).
5.2. Das Client-Server-Umgebung
Beispiele für Client–Server–Architekturen:
Client
Browser, z. B. Internetexplorer
E-Mailprogramm, z. B. Outlook
FTP-Client, z.B. Wise Ftp
Datenbank-Frontend
- MySQL Query Browser
- Eclipse/SQLExplorer
- phpMyAdmin
:
Programm Server
Webserver
Mailserver
Ftp- Server
Datenbankserver, z. B. MySQL
Als Frontend ist eine Eingabemaske zu verstehen, mit der ein User Daten eingeben und an
das für ihn nicht sichtbare "Backend" - in diesem Fall eine Datenbank auf einem Server - zur
Weiterverarbeitung weiterleitet.
______________________________________________________________________________________
Tress
PHP
Seite 19
MySQL
phpMyAdmin 22.02.2011
(1) In einer Client–Server–Umgebung nehmen die Clients mit Hilfe geeigneter Software
(Client–Software) Serverdienste in Anspruch.
(2) Die Serverdienste können im lokalen Netz (LAN) oder im Internet zur Verfügung stehen.
(3) Die Kommunikation mit dem Datenbankserver MySQL erfolgt mit Hilfe der Datenbanksprache
SQL . Die SQL-Befehle werden mit Hilfe einer geeigneten Clientsoftware wie beispielsweise
MySQL Query Browser oder PHP oder phpMyAdmin zum Datenbankserver gesandt und
dort bearbeitet.
(4) Der Datenbankserver liefert dann dem Client das Ergebnis.
(5) Bevor die Clientsoftware zum Arbeiten mit dem Datenbankserver MySQL genutzt werden
kann, muss der MySQL-Datenbankserver gestartet sein.
______________________________________________________________________________________
Tress
PHP
Seite 20
MySQL
phpMyAdmin 22.02.2011
5.3. Grundgerüst PHP - Programm zur Ausgabe von Daten in einer Tabelle
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" >
<head>
<title>Daten aus MySQL-Datenbank auswerten</title>
</head>
<body>
1. PHP-Programm
<?php
$server = "localhost";
$user = "root";
$pass = "";
Zugangsdaten für
Datenbankserver MySQL
festlegen
$verbindung = mysql_connect($server, $user, $pass);
Datenverbindung herstellen PHP  MySQL
mysql_select_db("datenbankname");
Datenbank auf dem
MySQL-Server wählen
$sql = "SQL-Abfrage …";
Formulierung der Abfrage
wird unter $sql
gespeichert. Abfrage wird
noch nicht ausgeführt!
$ergebnis = mysql_query($sql);
Datenbankabfrage wird
ausgeführt und als
Ergebnistabelle unter
$ergebnis gespeichert
?>
<table>
<tr>
<th>Spaltennamen 1</th>
<th>Spaltenname 2</th>
<th>Spaltenname 3</th>
…
</tr>
<?php
while ($zeile = mysql_fetch_array($ergebnis))
{ echo "<tr><td> $zeile[Feldname 1] </td>";
echo "<td> $zeile[Feldname 2] </td>";
…
echo "</tr>";
}
echo "</table>";
mysql_close($verbindung);
Ausgabe der Spaltenüberschriften der Tabelle
Bei jedem Durchlauf wird
aus der Ergebnistabelle
eine Zeile (Datensatz)
ermittelt und in einer
Tabelle zeilenweise
ausgegeben
Verbindung zum
verbundenem MySQLServer beenden
?>
</body>
</html>
2. PHP-Programm
______________________________________________________________________________________
Tress
PHP
Seite 21
MySQL
phpMyAdmin 22.02.2011
5.4. Ausgabe der MySQL-Tabelle Bestellung in einer XHTML-Tabelle mit PHP
Vorbereitung: Kopieren Sie den Ordner obstdaten_lesen nach H:\XAMPPLITE/htdocs
 Start Webserver Apache über XAMPP Control Panel
Start Datenbankserver MySQL über XAMPP Control Panel
Importieren im Menü oben  Durchsuchen
 H:\XAMPPLITE/htdocs/10obstdaten_lesen/obstladen.sql
 obstladen.sql öffnen rechts unten OK
 http://localhost/obstdaten_lesen/obstdaten_lesen.html
obstdaten_lesen.html
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" >
<head>
<title>Daten aus MySQL-Datenbank lesen</title>
</head>
<body>
<h3>Datenbank Obstladen mit der Tabelle Bestellung</h3>
<form action="obstdaten_lesen.php" method="post">
<p><input type="submit" value="Bestelldaten vollst ändig abrufen"></p>
</form>
</body>
</html>
______________________________________________________________________________________
Tress
PHP
Seite 22
MySQL
phpMyAdmin 22.02.2011
obstdaten_lesen.php
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" >
<head>
<title>Daten lesen</title>
<link rel="stylesheet" href="format.css" type="text/css" />
</head>
<body>
<h3>Folgende Bestelldaten sind vorhanden:</h3>
<?php
//Zugangsdaten für Datenbankserver festlegen
$server = "localhost";
$user = "root";
$pass = "";
//Datenbankverbindung zu MySQL herstellen
$verbindung = mysql_connect($server, $user, $pass);
//Datenbank "obstladen" wählen
mysql_select_db("obstladen");
// SQL-Abfrage (gesamte Daten der Tabelle Bestellung)
$sql = "SELECT * FROM bestellung";
// Ergebnistabelle mit der Ausführung der Abfrage $sql bilden
$ergebnis = mysql_query($sql);
//Anzahl der Zeilen (Datensätze) ermitteln und Ausgabe
$anzahl=mysql_num_rows($ergebnis);
echo "<p>In der Tabelle befinden sich $anzahl Bestellungen.</p>";
//Ausgabe der Spaltenüberschriften der Tabelle
?>
<table>
<tr>
<th>Bestell-Nr.</th>
<th>Vorname</th>
<th>Name</th>
<th>Wohnort</th>
<th>Sorte</th>
<th>Menge</th>
<th>Bestelldatum</th>
</tr>
<?php
//Zeilenweise Erzeugung der XHTML-Tabelle mit PHP
while ($zeile = mysql_fetch_array($ergebnis))
{ echo "<tr><td> $zeile[ID] </td>";
echo "<td> $zeile[Vorname] </td>";
echo "<td> $zeile[Nachname] </td>";
echo "<td> $zeile[Ort] </td>";
echo "<td> $zeile[Sorte] </td>";
echo "<td> $zeile[Menge] </td>";
echo "<td> $zeile[BestellDatum] </td>";
echo "</tr>";
}
echo "</table>";
//MySQL-Verbindung beenden
mysql_close($verbindung);
?>
</body>
</html>
______________________________________________________________________________________
Tress
PHP
Seite 23
MySQL
phpMyAdmin 22.02.2011
Von PHP erzeugte XHTML-Seite mit Quelltext
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" >
<head>
<title>Daten lesen</title>
<link rel="stylesheet" href="Format.css" type="text/css" />
</head>
<body>
<h3>Folgende Bestelldaten sind vorhanden:</h3>
<p>In der Tabelle befinden sich 8 Bestellungen.</p>
<table>
<tr>
<th>Bestell-Nr.</th>
<th>Vorname</th>
<th>Name</th>
<th>Wohnort</th>
<th>Sorte</th>
<th>Menge</th>
<th>Bestelldatum</th>
</tr>
<tr>
<td> 1 </td><td> Arndt </td><td> Hoffmann </td><td> Stuttgart </td>
<td>Elstar </td><td> 15 </td><td> 2010-01-20 </td>
<tr>
<td> 2 </td><td> Corinna </td><td> Delphi </td><td> Hamburg </td>
<td> Jonagold </td><td> 3 </td><td> 2010-01-25 </td>
<tr>
<td> 3 </td><td> Petra </td><td> Meyer </td><td> Wien </td>
<td> Gala </td><td> 5 </td><td> 2010-01-29 </td>
<tr>
<td> 4 </td><td> Peter </td><td> Schmidt </td><td> Berlin </td>
<td> Elstar </td><td> 25 </td><td> 2010-02-01 </td>
<tr>
<td> 5 </td><td> Oskar </td><td> Weber </td><td> Stuttgart </td>
<td> Gala </td><td> 18 </td><td> 2010-02-12 </td>
<tr>
<td> 6 </td><td> Susanne </td><td> Ahorn </td><td> Bern </td>
<td> Jonagold </td><td> 6 </td><td> 2010-02-15 </td>
<tr>
<td> 7 </td><td> Sila </td><td> Zimmermann </td><td> Köln </td>
<td> Elstar </td><td> 10 </td><td> 2010-02-23 </td>
<tr>
<td> 8 </td><td> Lea </td><td> Bäuerle </td><td> Bissingen </td>
<td> Gala </td><td> 20 </td><td> 2010-02-26 </td>
</table>
</body>
</tr>
</tr>
</tr>
</tr>
</tr>
</tr>
</tr>
</tr>
______________________________________________________________________________________
Tress
PHP
Seite 24
MySQL
phpMyAdmin 22.02.2011
5.5. Auswahl von Daten über ein Suchformular
Vorbereitung: Kopieren Sie den Ordner obstdaten_suchen nach H:\XAMPPLITE/htdocs
 Start Webserver Apache und MySQL über XAMPP Control Panel
1. Lösungsweg:Aufruf des Verzeichnis obstdaten_suchen im Webbrowser
 http://localhost/11obstdaten_suchen/
Klick auf
2. Lösungsweg: http://localhost/11obstdaten_suchen/obstsorte_suchen.html
obstdaten_suchen.html
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" >
<head><title>Daten suchen in der MySQL-Datenbank</title></head>
<body>
<h3>Bestellungen mit einer bestimmten Obstsorte in der Obstdatenbank suchen</h3>
<form action="obstsorte_suchen.php" method="post">
<p><input type="radio" name="sorte" value="Jonagold" />Jonagold<br />
<input type="radio" name="sorte" value="Gala" />Gala<br />
<input type="radio" name="sorte" value="Elstar" />Elstar</p>
<p><input type="submit" value="Daten abrufen" /></p>
</form>
</body>
</html>
Ausgabe XHTML-Seite im Webbrowser
______________________________________________________________________________________
Tress
PHP
Seite 25
MySQL
phpMyAdmin 22.02.2011
obstsorte_suchen.php
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" >
<head>
<title>Daten suchen</title>
<link rel="stylesheet" href="Format.css" type="text/css" />
</head>
<body>
<h3>Folgende Bestelldaten sind vorhanden:</h3>
<?php
$server
= "localhost";
$user
= "root";
$pass
= "";
$sorte
= $_POST["sorte"];
$verbindung = mysql_connect($server, $user, $pass)
or die ("Keine Verbindung zum Server... Abbruch des Skripts.");
mysql_select_db("obstladen")
or die ("Fehler beim Zugriff auf die Datenbank");
$sql = "SELECT * FROM bestellung WHERE SORTE='$sorte'";
$abfrage = mysql_query($sql);
if(!$abfrage)
{
echo "<p>Die SQL-Anweisung ist fehlgeschlagen...</p>";
}
$anzahl=mysql_num_rows($abfrage);
echo "<p>In der Tabelle befinden sich $anzahl Bestellungen.</p>";
?>
<table>
<tr>
<th>Bestell-Nr.</th>
<th>Vorname</th>
<th>Name</th>
<th>Wohnort</th>
<th>Sorte</th>
<th>Menge</th>
<th>Bestelldatum</th>
</tr>
<?php
while ($zeile = mysql_fetch_array($abfrage))
{ echo "<tr><td> $zeile[ID] </td>";
echo "<td> $zeile[Vorname] </td>";
echo "<td> $zeile[Nachname] </td>";
echo "<td> $zeile[Ort] </td>";
echo "<td> $zeile[Sorte] </td>";
echo "<td> $zeile[Menge] </td>";
echo "<td> $zeile[BestellDatum] </td>";
echo "</tr>";
}
echo "</table>";
mysql_close($verbindung);
?>
</body>
</html>
______________________________________________________________________________________
Tress
PHP
Seite 26
MySQL
phpMyAdmin 22.02.2011
Von PHP erzeugte XHTML-Seite mit Quelltext
Folgende Bestelldaten sind vorhanden:
In der Tabelle befinden sich 3 Bestellungen.
Bestell-Nr.
3
5
8
Vorname
Petra
Oskar
Lea
Name
Meyer
Weber
Bäuerle
Wohnort
Wien
Stuttgart
Bissingen
Sorte
Gala
Gala
Gala
Menge
5
18
20
Bestelldatum
2010-01-29
2010-02-12
2010-02-26
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" >
<head>
<title>Daten suchen</title>
<link rel="stylesheet" href="Format.css" type="text/css" />
</head>
<body>
<h3>Folgende Bestelldaten sind vorhanden:</h3>
<p>In der Tabelle befinden sich 3 Bestellungen.</p>
<table>
<tr>
<th>Bestell-Nr.</th>
<th>Vorname</th>
<th>Name</th>
<th>Wohnort</th>
<th>Sorte</th>
<th>Menge</th>
<th>Bestelldatum</th>
</tr>
<tr> <td> 3 </td><td> Petra </td><td> Meyer </td><td> Wien </td>
<td> Gala </td><td> 5 </td><td> 2010-01-29 </td>
</tr>
<tr> <td> 5 </td><td> Oskar </td><td> Weber </td><td> Stuttgart </td>
<td> Gala </td><td> 18 </td><td> 2010-02-12 </td>
</tr>
<tr> <td> 8 </td><td> Lea </td><td> Bäuerle </td><td> Bissingen </td>
<td> Gala </td><td> 20 </td><td> 2010-02-26 </td></tr>
</table>
</body>
</html>
5.6. Aufnahme eines neuen Datensatzes (Bestellung) über XHTML-Formular
Vorbereitung: Kopieren Sie den Ordner obstdaten_speichern nach H:\XAMPPLITE/htdocs
 Start Webserver Apache und MySQL über XAMPP Control Panel
 http://localhost/12obstdaten_speichern/obstdaten_speichern.html
Hinweis zum Bestelldatum:
Die Tabelle Bestellung in der Datenbank Obstladen enthält das Datenfeld BestellDatum. Das Bestelldatum
wird nicht manuell im XHTML-Formular eingegeben. Im PHP-Programm bestellung.php wird mit Hilfe der
Funktion getdate() das aktuelle Systemdatum als Bestelldatum automatisch in der Datenbank gespeichert (weitere
Informationen siehe Kapitel 3).
______________________________________________________________________________________
Tress
PHP
Seite 27
MySQL
phpMyAdmin 22.02.2011
obstdaten_speichern.html
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" >
<head>
<title>Daten in MySQL-Datenbank speichern</title>
<link rel="stylesheet" href="format.css" type="text/css" />
</head>
<body>
<h3>Apfelbestellung im Obstladen</h3>
<p>Bitte geben Sie folgende Daten für Ihre Bestellung ein:</p>
<form action="obstdaten_speichern.php" method="post">
<table>
<tr><td>Vorname:</td><td><input type="text" name="vorname" /></td></tr>
<tr><td>Nachname:</td><td><input type="text" name="nachname" /></td></tr>
<tr><td>Wohnort:</td><td><input type="text" name="ort" /></td></tr>
<tr><td>Menge (in kg): </td><td><input type="text" size="5" name="menge" /></td></tr>
<tr><td>Apfelsorte: </td><td>
<input type="radio" name="sorte" value="Jonagold" />Jonagold<br />
<input type="radio" name="sorte" value="Gala" />Gala<br />
<input type="radio" name="sorte" value="Elstar" />Elstar</td></tr>
<tr><td><input type="submit" value="Abschicken" /></td><td>
<input type="reset" value="Zurücksetzen" /></td></tr>
</table>
</form>
</body>
</html>
XHTML-Seite im Webbrowser
______________________________________________________________________________________
Tress
PHP
Seite 28
MySQL
phpMyAdmin 22.02.2011
obstdaten_speichern.php
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" >
<head>
<title>Daten speichern</title>
<link rel="stylesheet" href="format.css" type="text/css" />
</head>
<body>
<h3>Daten werden in die Tabelle Bestellung der Datenbank obstladen eingefügt.</h3>
<?php
$server
= "localhost";
Logindaten zur Anmeldung beim Datenbankserver
$user
= "root";
$pass
= "";
$vorname
= $_POST["vorname"];
$nachname
= $_POST["nachname"];
$ort
= $_POST["ort"];
$sorte
= $_POST["sorte"];
$menge
= $_POST["menge"];
Bestelldaten werden aus dem
XHTML-Formular
übernommen.
$jetzt
= getdate();
Abruf Systemdatum
$bestelldat = $jetzt["year"]."-".$jetzt["mon"]."-".$jetzt["mday"];
//$bestelldat =date("Y.m.d");
 weitere Lösung zum Speichern des Bestelldatums
$verbindung = mysql_connect($server, $user, $pass)
or die ("Keine Verbindung zum Server... Abbruch des Skripts.");
mysql_select_db("obstladen")
or die ("Fehler beim Zugriff auf die Datenbank");
$sql = "INSERT INTO bestellung (Vorname,Nachname,Ort,Sorte,Menge,BestellDatum)";
$sql .= " VALUES ('$vorname', '$nachname', '$ort', '$sorte', '$menge', '$bestelldat')";
$abfrage = mysql_query($sql);
if($abfrage)
{
echo "<p>Vielen Dank, Ihre Bestellung wurde gespeichert...</p>";
}
else
{
echo "<p>Die SQL-Anweisung ist fehlgeschlagen...</p>";
}
mysql_close($verbindung);
?>
</body>
</html>
Von PHP erzeugte XHTML-Seite mit Quelltext
______________________________________________________________________________________
Tress
PHP
Seite 29
MySQL
phpMyAdmin 22.02.2011
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" >
<head>
<title>Daten speichern</title>
<link rel="stylesheet" href="format.css" type="text/css" />
</head>
<body>
<h3>Daten werden in die Tabelle Bestellung der Datenbank obstladen
eingefügt.</h3>
<p>Vielen Dank, Ihre Bestellung wurde gespeichert...</p>
</body>
</html>
Tabelle Bestellung in MySQL nach der Bestellung durch den Kunden Otto Hölz
ID 26: Programm vergibt die ID 26, weil inzwischen Datensätze aus der Tabelle gelöscht
wurden. Diese ID kann aber manuell auf 9 abgeändert werden.
5.7. Änderung eines bestimmten Datensatzes
Vorbereitung: Kopieren Sie den Ordner 13obstdaten_anpassen nach H:\XAMPPLITE/htdocs
 Start Webserver Apache und MySQL über XAMPP Control Panel
 http://localhost/13obstdaten_anpassen/obstdaten_dSatzupdate1.php
Vorgehensweise
(1)
Anzeige aller Datensätze
der Tabelle Bestellung
und einer zusätzlichen
Spalte mit Radiobuttons,
in der ein bestimmter
Datensatz zur Änderung
gewählt werden kann.
Übergabe der Kundennummer des ausgewählten
Datensatzes:
Variable auswahl.
obstdaten_dSatzupdate1.php
(2)
(3)
Anzeige des
ausgewählten
Datensatzes innerhalb
eines Formulars. Der
Benutzer kann die
Inhalte teilweise oder
insgesamt ändern. Da
auch die Kundennr (ID)
geändert werden kann,
wird ein verstecktes
Formularfeld mit der
Originalkundennummer
übermittelt.
Die Daten des
ausgewählten
Datensatzes werden nur
bei einer Datenänderung
gespeichert (Update).
Eine Änderung wird nicht
durchgeführt, wenn die
geänderte
Kundennummer schon
vorhanden ist bzw. wenn
keine Daten geändert
wurden.
obstdaten_dSatzupdate2.php
obstdaten_dSatzupdate3.php
______________________________________________________________________________________
Tress
PHP
Seite 30
MySQL
phpMyAdmin 22.02.2011
(1) Anzeige aller Datensätze mit der Spalte Radiobutton für die Auswahl eines Datensatzes
Programm: obstdaten_dSatzupdate1.php
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" >
<head><title>Daten lesen in der MySQL-Datenbank</title>
<link rel="stylesheet" href="format.css" type="text/css" />
</head>
<body>
<p>Wählen Sie aus, welcher Datensatz geändert werden soll:</p>
<form action = "obstdaten_dSatzupdate2.php" method = "post">
<?php
$server
= "localhost";
$user
= "root";
$pass
= "";
$verbindung = mysql_connect($server, $user, $pass)
or die ("Keine Verbindung zum Server... Abbruch des Skripts.");
mysql_select_db("obstladen");
$ergebnis = mysql_query("select * from bestellung");
// Tabellenbeginn
echo "<table>";
// Überschrift
echo "<tr> <th>Auswahl</th> <th>Kunden-Nr</th>";
echo "<th>Nachname</th> <th>Vorname</th> ";
echo "<th>Ort</th> <th>Sorte</th>";
echo "<th>Menge</th> <th>Bestelldatum</th></tr>";
while ($dsatz = mysql_fetch_array($ergebnis))
{
echo "<tr>";
echo "<td class='radio'><input type='radio' name='auswahl'";
echo "value='" . $dsatz["ID"] . "' /></td>";
echo "<td>" . $dsatz["ID"] . "</td>";
echo "<td>" . $dsatz["Nachname"] . "</td>";
echo "<td>" . $dsatz["Vorname"] . "</td>";
echo "<td>" . $dsatz["Ort"] . "</td>";
echo "<td>" . $dsatz["Sorte"] . "</td>";
echo "<td>" . $dsatz["Menge"] . "</td>";
echo "<td>" . $dsatz["BestellDatum"] . "</td>";
echo "</tr>";
}
Alle Radiobuttons in
der ersten Spalte
bilden eine Gruppe,
und alle haben den
gleichen Namen
'auswahl' . Als Wert für
die Radio-Buttons wird
die jeweilige
Kundennummer (ID)
verwendet.
Beim Klick auf den Submit-Button wird die Variable auswahl an
// Tabellenende
das PHP-Programm obstdaden_dSatzupdate2.php übermittelt.
echo "</table>";
?>
<p><input type="submit" value="Datensatz anzeigen" /></p>
</form>
</body>
</html>
______________________________________________________________________________________
Tress
PHP
Seite 31
MySQL
phpMyAdmin 22.02.2011
(2) Anzeige und Änderung des Datensatzes in einem Formular
Vor der Änderung der Daten
Vor dem Speichern in der Datenbank
Datenänderung
Nach dem Speichern des geänderten Datensatzes mit der Kundennummer 8
Änderung
format.css
body {font-family: Arial;
font-size: 10pt;}
form.ds {width:33%;}
input {background-color:yellow;}
table { border-collapse:collapse;
border-color: #FF0000;
border-width: 1px;
border-style: solid;
}
td,th {width:100px;
border-color: blue;
border-width: 1px;
border-style: solid;
text-align:center;}
th {background-color:#53E6EA;
}
td.radio {background-color:#53E6EA;
text-align:center;}
}
form { border-color: #FF0000;
border-width: 3px;
border-style: solid;
background-color:silver;
width:65%;
}
______________________________________________________________________________________
Tress
PHP
Seite 32
MySQL
phpMyAdmin 22.02.2011
Programm: obstdaten_dSatzupdate2.php
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" >
<head><title>Datenänderung bestimmter Datensatz</title>
<link rel="stylesheet" href="format.css" type="text/css" />
</head>
<body>
Es wird in der IF-Bedingung überprüft, ob der
<?php
Rückgabewert der Funktion isset() den Wert
if (isset($_POST["auswahl"]))
true besitzt. Nur bei true wird das Programm
{
in der Verzweigung ausgeführt. Wenn im
$server
= "localhost";
Formular der Radiobutton nicht angeklickt
wird, gibt die Funktion isset() nicht true
$user
= "root";
zurück.
$pass
= "";
$verbindung = mysql_connect($server, $user, $pass)
or die ("Keine Verbindung zum Server... Abbruch des Skripts.");
Die SQL-Abfrage führt nur dann zu
einem Ergebnis, wenn die ID mit
der Kundennummer des ausgewählten Datensatzes (auswahl)
übereinstimmt. Das Ergebnis
besteht nur aus einem Datensatz.
mysql_select_db("obstladen");
$sqlab = "select * from bestellung where ID = " . $_POST["auswahl"];
$ergebnis = mysql_query($sqlab);
$dsatz = mysql_fetch_array($ergebnis);
echo "<p>Führen Sie die Änderungen durch, betätigen Sie anschließend den Button.</p>";
echo "<form class='ds' action = 'obstdaten_dSatzupdate3.php' method = 'post'>";
echo "<p><input name='nn' value='" . $dsatz["Nachname"] . "' /> Nachname</p>";
echo "<p><input name='vn' value='" . $dsatz["Vorname"] . "' /> Vorname</p>";
echo "<p><input name='kdnr' value='" . $_POST["auswahl"] . "' /> Kundennummer</p>";
echo "<p><input name='ort' value='" . $dsatz["Ort"] . "' /> Ort</p>";
echo "<p><input name='sorte' value='" . $dsatz["Sorte"] . "' /> Sorte</p>";
echo "<p><input name='me' value='" . $dsatz["Menge"] . "' /> Menge</p>";
echo "<p><input name='bestdat' value='" . $dsatz["BestellDatum"] . "' /> Bestelldatum</p>";
echo "<input type='hidden' name='orikdnr' value='" . $_POST["auswahl"] . "' />";
echo "<p><input type='submit' value='Änderungen in der Datenbank speichern' />";
Verstecktes
Formularfeld
echo " <input type='reset' /></p>";
echo "</form>";
}
Wenn kein Radio-Button angeklickt wurde,
else
dann gibt die Funktion isset() false aus und
echo "<p>Es wurde kein Datensatz ausgewählt</p>";
es gilt der else-Fall. Das Programm gibt dann
?>
nur die Meldung "Es wurde kein Datensatz
ausgewählt" aus. Es können keine Daten
</body>
geändert werden.
</html>
Funktion isset():
Die Funktion isset() erkennt, ob die ihr übergebene Variable überhaupt existiert und gibt true oder false zurück.
SQL-Abfrage zur Auswahl eines bestimmten Datensatzes über die Kundennummer:
Die vorhandene Kundennumer (ID) in der Datenbanktabelle bestellung wird verglichen (WHERE) mit der vom
ausgewählten Datensatz über den Radiobutton. * bedeutet, dass alle Datenfelder ausgewählt werden. Das Ergebnis
wird in der PHP-Variablen $sqlab gespeichert.
$sqlab = "select * from bestellung where ID = " . $_POST["auswahl"];
Hochkommata und Anführungszeichen an einem Beispiel:
Nur HTML:
HTML in PHP: echo
" " value="..." /> Menge</p>
<p><input name= me
"<p><input name='me' value='" . $dsatz["Menge"] . "' /> Menge</p>";
Verstecktes Formularfeld:
echo
"<input type='hidden' name='orikdnr' value='" . $_POST["auswahl"] . "' />";
Obwohl dieses Formularfeld mit den Namen orikdnr nicht angezeigt wird (type="hidden"), wird trotzdem beim
Absenden der Formulardaten die Original-Kundennummer übermittelt, die zur eindeutigen Identifizierung benötigt
wird. Falls der Benutzer die Kundennummer geändert hat, stünde diese Original-Information andernfalls nicht
mehr zur Verfügung.
______________________________________________________________________________________
Tress
PHP
Seite 33
MySQL
phpMyAdmin 22.02.2011
(3) Speicherung des ausgewählten und geänderten Datensatzes
Programm: obstdaten_dSatzupdate3.php
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" >
<head><title>Datenänderung bestimmter Datensatz</title></head>
<body>
<?php
$server
= "localhost";
$user
= "root";
$pass
= "";
$verbindung = mysql_connect($server, $user, $pass)
or die ("Keine Verbindung zum Server... Abbruch des Skripts.");
mysql_select_db("obstladen");
$sqlab = "update bestellung set"
. " Nachname = '" . $_POST["nn"] . "',"
. " Vorname = '" . $_POST["vn"] . "',"
. " ID = " . $_POST["kdnr"] . ","
. " Ort = '" . $_POST["ort"] . "',"
. " Sorte = '" . $_POST["sorte"] . "',"
. " Menge = " . $_POST["me"] . ","
. " BestellDatum = '" . $_POST["bestdat"] . "'"
. " where ID = " . $_POST["orikdnr"];
mysql_query($sqlab);
$num = mysql_affected_rows();
if ($num <= 0)
echo "<p>Der Datensatz wurde nicht geändert</p>";
else
echo "<p>Der Datensatz wurde geändert</p>";
?>
<p>Zurück zur <a href="obstdaten_dSatzupdate1.php">Datensatzauswahl</a></p>
</body>
</html>
Funktion mysql_affected_rows():
Diese Funktion kann bei Aktionsabfragen (Erzeugen, Ändern und Löschen von Datensätzen) eingesetzt werden.
Sie ermittelt die Anzahl der von der Aktionsabfrage betroffenen (affected) Datensätze.
SQL-Abfrage zur Änderung eines bestimmten Datensatzes über die Kundennummer:
Update ändert die Werte des Datenfeldes unter Berücksichtigung der SET-Option. Ausgewählt werden die
Datensätze im WHERE-Teil der SQL-Anweisung.
SQL-Anweisung UPDATE mit Speicherung in der PHP-Variable $sqlab :
$sqlab = "UPDATE <tabellenname> SET "
. "Feldname = '".$_POST["name"]."',"
Feld-Stringvariable mit Anführungszeichen und Hochkommata
. "Feldname = '".$name."',"
Stringvariable mit Anführungszeichen und Hochkommata
. "Feldname = ".$_POST["menge"].","
numerische Feldvariable nur mit Anführungszeichen
. "Feldname = ".$menge.","
numerische Variable nur mit Anführungszeichen
...
. " Feldname = '" . $_POST["bestdat"] . "'"  kein Komma, da letzter Feldname vor WHERE
. " WHERE <indizierter Feldname> = " . <eindeutiger Wert>;
Allgemeine Regel für Hochkommata und Anführungszeichen:
"Stringvariable" mit Anführungszeichen gibt den Inhalt der Variable aus.
'Stringvariable' mit Hochkommata gibt den Namen der Variable aus.
______________________________________________________________________________________
Tress
PHP
Seite 34
MySQL
phpMyAdmin 22.02.2011
Beispiel 1a mit Anführungszeichen:
$Ort = "Bissingen";
$Ausgabe = "$Ort";
In der Variablen $Ausgabe wird das Wort Bissingen gespeichert.
$Ausgabe =' $Ort';
 In der Variablen $Ausgabe wird der Variablenname $Ort gespeichert.
$Ausgabe = $Ort;
In der Variablen $Ausgabe wird das Wort Bissingen gespeichert.
Beispiel 1b mit Hochkommata:
$Ort = 'Bissingen';
Da Bissingen keine Variable ist, wird der Text Bissingen gespeichert.
$Ausgabe = "$Ort";
In der Variablen $Ausgabe wird das Wort Bissingen gespeichert.
$Ausgabe = '$Ort';
 In der Variablen $Ausgabe wird der Variablenname $Ort gespeichert.
$Ausgabe = $Ort;
In der Variablen $Ausgabe wird das Wort Bissingen gespeichert.
5.8. Löschen eines bestimmten Datensatzes
Vorbereitung: Kopieren Sie den Ordner 14obstdaten_loeschenDSatz nach H:\XAMPPLITE/htdocs
 Start Webserver Apache und MySQL über XAMPP Control Panel
 http://localhost/14obstdaten_loeschenDSatz/obstdaten_dSatzloeschen1.php
Programm: obstdaten_dSatzloeschen1.php
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" >
<head><title>Daten lesen in der MySQL-Datenbank</title>
<link rel="stylesheet" href="format.css" type="text/css" />
</head>
<body>
<p>Wählen Sie aus, welcher Datensatz gelöscht werden soll:</p>
<form action = "obstdaten_dSatzloeschen2.php" method = "post">
<?php
$server
= "localhost";
$user
= "root";
$pass
= "";
$verbindung = mysql_connect($server, $user, $pass)
or die ("Keine Verbindung zum Server... Abbruch des Skripts.");
mysql_select_db("obstladen");
$ergebnis = mysql_query("select * from bestellung");
// Tabellenbeginn
echo "<table>";
// Überschrift
echo "<tr> <th>Auswahl</th> <th>Kunden-Nr</th>";
echo "<th>Nachname</th> <th>Vorname</th> ";
echo "<th>Ort</th> <th>Sorte</th>";
echo "<th>Menge</th> <th>Bestelldatum</th></tr>";
while ($dsatz = mysql_fetch_array($ergebnis))
{
echo "<tr>";
echo "<td class='radio'><input type='radio' name='auswahl'";
echo "value='" . $dsatz["ID"] . "' /></td>";
echo "<td>" . $dsatz["ID"] . "</td>";
echo "<td>" . $dsatz["Nachname"] . "</td>";
echo "<td>" . $dsatz["Vorname"] . "</td>";
echo "<td>" . $dsatz["Ort"] . "</td>";
echo "<td>" . $dsatz["Sorte"] . "</td>";
echo "<td>" . $dsatz["Menge"] . "</td>";
echo "<td>" . $dsatz["BestellDatum"] . "</td>";
echo "</tr>";
}
// Tabellenende
echo "</table>";
?>
<p><input type="submit" value="Datensatz löschen" /></p>
</form>
</body>
</html>
______________________________________________________________________________________
Tress
PHP
Seite 35
MySQL
phpMyAdmin 22.02.2011
Programm: obstdaten_dSatzloeschen2.php
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" >
<head><title>Datenänderung bestimmter Datensatz</title>
<link rel="stylesheet" href="format.css" type="text/css" />
</head>
<body>
<?php
if (isset($_POST["auswahl"]))
{
$server
= "localhost";
$user
= "root";
$pass
= "";
$verbindung = mysql_connect($server, $user, $pass)
or die ("Keine Verbindung zum Server... Abbruch des Skripts.");
mysql_select_db("obstladen");
$sqlab = "delete from bestellung where ID = " . $_POST["auswahl"];
$ergebnis = mysql_query($sqlab);
$num = mysql_affected_rows();
if ($num <= 0)
echo "<p>Der Datensatz wurde nicht gelöscht</p>";
else
echo "<p>Der Datensatz wurde gelöscht</p>";
}
else
echo "<p>Es wurde kein Datensatz ausgewählt</p>";
?>
<p>Zurück zur <a href="obstdaten_dSatzloeschen1.php">Datensatzauswahl</a></p>
</body>
</html>
$sqlab = "delete from bestellung where ID = " . $_POST["auswahl"];
Diese SQL-Abfrage löscht alle Datensätze, bei denen die Datensatznummer in der Datenbanktabelle
Bestellung im Datenfeld ID mit der Datensatznummer des ausgewählten Datensatzes im XHTMLFormular (auswahl) übereinstimmt. Normalerweise wird immer nur ein Datensatz gelöscht, weil jede
Datensatznummer (Kundennummer) nur einmal vorkommt.
______________________________________________________________________________________
Tress
PHP
Seite 36
MySQL
phpMyAdmin 22.02.2011
5.9. Löschen mehrerer Datensätze
Vorbereitung: Kopieren Sie den Ordner 15obstdaten_loeschenDSaetze nach H:\XAMPPLITE/htdocs
 Start Webserver Apache und MySQL über XAMPP Control Panel
 http://localhost/15obstdaten_loeschenDSaetze/obstdaten_DSaetzeloeschen1.php
Erzeugte Webseite durch das Programm obstdaten_DSaetzeloeschen1.php
Erzeugte Webseite durch das Programm obstdaten_DSaetzeloeschen2.php
Erzeugte Webseite nach dem Löschen durch das Programm obstdaten_DSaetzeloeschen1.php
______________________________________________________________________________________
Tress
PHP
Seite 37
MySQL
phpMyAdmin 22.02.2011
Programm: obstdaten_DSaetzeloeschen1.php
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" >
<head><title>Daten lesen in der MySQL-Datenbank</title>
<link rel="stylesheet" href="format.css" type="text/css" />
</head>
<body>
<p>Wählen Sie aus, welche Datensätze gelöscht werden sollen:</p>
<form action = "obstdaten_DSaetzeloeschen2.php" method = "post">
<?php
$server
= "localhost";
$user
= "root";
$pass
= "";
$verbindung = mysql_connect($server, $user, $pass)
or die ("Keine Verbindung zum Server... Abbruch des Skripts.");
mysql_select_db("obstladen");
$ergebnis = mysql_query("select * from bestellung");
// Tabellenbeginn
echo "<table>";
// Überschrift
echo "<tr> <th>Auswahl</th> <th>Kunden-Nr</th>";
echo "<th>Nachname</th> <th>Vorname</th> ";
echo "<th>Ort</th> <th>Sorte</th>";
echo "<th>Menge</th> <th>Bestelldatum</th></tr>";
while ($dsatz = mysql_fetch_array($ergebnis))
{
echo "<tr>";
echo "<td class='radio'><input type='checkbox' name='auswahl[]'";
echo "value='" . $dsatz["ID"] . "' /></td>";
echo "<td>" . $dsatz["ID"] . "</td>";
echo "<td>" . $dsatz["Nachname"] . "</td>";
echo "<td>" . $dsatz["Vorname"] . "</td>";
echo "<td>" . $dsatz["Ort"] . "</td>";
echo "<td>" . $dsatz["Sorte"] . "</td>";
echo "<td>" . $dsatz["Menge"] . "</td>";
echo "<td>" . $dsatz["BestellDatum"] . "</td>";
echo "</tr>";
}
// Tabellenende
echo "</table>";
?>
<p><input type="submit" value="Datensätze löschen" /></p>
</form>
</body>
</html>
______________________________________________________________________________________
Tress
PHP
Seite 38
MySQL
phpMyAdmin 22.02.2011
Programm: obstdaten_DSaetzeloeschen2.php
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" >
<head><title>Datenänderung bestimmter Datensatz</title>
<link rel="stylesheet" href="format.css" type="text/css" />
</head>
<body>
<?php
if (isset($_POST["auswahl"]))
{
$server
= "localhost";
$user
= "root";
$pass
= "";
$auswahl
= $_POST["auswahl"];
$verbindung = mysql_connect($server, $user, $pass)
or die ("Keine Verbindung zum Server... Abbruch des Skripts.");
mysql_select_db("obstladen");
$numloesch=0;
foreach ($auswahl as $loeschnr)
{
$sqlab = "delete from bestellung where ID=".$loeschnr;
$ergebnis = mysql_query($sqlab);
$num = mysql_affected_rows();
$numloesch=$numloesch+$num;
}
$num = mysql_affected_rows();
if ($num <= 0)
echo "<p>Der Datensatz wurde nicht gelöscht</p>";
else
echo "<p>$numloesch Datensätze wurden gelöscht</p>";
}
else
echo "<p>Es wurde kein Datensatz ausgewählt</p>";
?>
<p>Zurück zur <a href="obstdaten_DSaetzeloeschen1.php">Datensatzauswahl</a></p>
</body>
</html>
______________________________________________________________________________________
Tress
PHP
Seite 39
MySQL
phpMyAdmin 22.02.2011
5.10. Auswahl von Daten über ein Suchformular mit genauer Sucheingabe
Vorbereitung: Kopieren Sie den Ordner 16kunden_suchen nach H:\XAMPPLITE/htdocs
 Start Webserver Apache und MySQL über XAMPP Control Panel
 http://localhost/16kunden_suchen/kunde_suchen.html
Suchformular: kunde_suchen.html
Webseite: kunde_suchen.html
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" >
<head><title>Daten suchen in der MySQL-Datenbank</title>
<link rel="stylesheet" href="format.css" type="text/css" />
</head>
<body>
<h3>Bestellungen eines bestimmten Kunden suchen (exakter Nachname)</h3>
<form action="kunde_suchen.php" method="post">
<p>Kundenname  <input type="text" name="kdname" value="" /></p>
<p><input class="button" type="submit" value="Kundendaten abrufen" /></p>
</form>
</body>
</html>
Von PHP erzeugte XHTML-Seite mit Quelltext
______________________________________________________________________________________
Tress
PHP
Seite 40
MySQL
phpMyAdmin 22.02.2011
Programm: kunde_suchen.php
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" >
<head>
<title>Daten suchen</title>
<link rel="stylesheet" href="Format.css" type="text/css" />
</head>
<body>
<h3>Folgende Bestelldaten sind vorhanden:</h3>
<?php
$server
= "localhost";
$user
= "root";
$pass
= "";
$kdname
= $_POST["kdname"];
$verbindung = mysql_connect($server, $user, $pass)
or die ("Keine Verbindung zum Server... Abbruch des Skripts.");
mysql_select_db("obstladen")
or die ("Fehler beim Zugriff auf die Datenbank");
$sql = "SELECT * FROM bestellung WHERE Nachname='$kdname'";
$abfrage = mysql_query($sql);
if(!$abfrage)
{
echo "<p>Die SQL-Anweisung ist fehlgeschlagen...</p>";
}
$anzahl=mysql_num_rows($abfrage);
echo "<p>In der Tabelle befinden sich $anzahl Bestellungen.</p>";
?>
<table>
<tr>
<th>Bestell-Nr.</th>
<th>Vorname</th>
<th>Name</th>
<th>Wohnort</th>
<th>Sorte</th>
<th>Menge</th>
<th>Bestelldatum</th>
</tr>
<?php
while ($zeile = mysql_fetch_array($abfrage))
{ echo "<tr><td> $zeile[ID] </td>";
echo "<td> $zeile[Vorname] </td>";
echo "<td> $zeile[Nachname] </td>";
echo "<td> $zeile[Ort] </td>";
echo "<td> $zeile[Sorte] </td>";
echo "<td> $zeile[Menge] </td>";
echo "<td> $zeile[BestellDatum] </td>";
echo "</tr>";
}
echo "</table>";
mysql_close($verbindung);
?>
</body>
</html>
CSS-Datei: format.css
table { border-color: #FF0000;
border-width: 3px;
border-style: outset;
background-color:#99FFFF;
font-family: Arial;
font-size: 10pt;
}
td {width:100px;}
th { text-align: left;}
form {background-color:#FFFFAE;
border:3px solid red;
width:70%;}
input {background-color:#DBB7FF;
font-size:20px;
font-familiy:tahoma;}
input.button {background-color:red;
color:white;}
______________________________________________________________________________________
Tress
PHP
Seite 41
MySQL
phpMyAdmin 22.02.2011
5.11. Auswahl von Daten über ein Suchformular mit beliebiger Sucheingabe
Vorbereitung: Kopieren Sie den Ordner 17kunden_beliebigsuchen nach H:\XAMPPLITE/htdocs
 Start Webserver Apache und MySQL über XAMPP Control Panel
 http://localhost/17kunden_beliebigsuchen/kunde_beliebigsuchen.html
Suchformular: kunde_beliebigsuchen.html
Webseite: kunde_beliebigsuchen.html
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" >
<head><title>Daten suchen in der MySQL-Datenbank</title>
<link rel="stylesheet" href="format.css" type="text/css" />
</head>
<body>
<h3>Bestellungen eines bestimmten Kunden mit beliebiger Sucheingabe suchen</h3>
<form action="kunde_beliebigsuchen.php" method="post">
<p>Kundenname  <input type="text" name="kdname" value="" /></p>
<p><input type="submit" value="Kundendaten abrufen" /></p>
</form>
</body>
</html>
Vom PHP-Programm kunde_beliebigsuchen.php erzeugtes Suchergebnis
______________________________________________________________________________________
Tress
PHP
Seite 42
MySQL
phpMyAdmin 22.02.2011
PHP-Programm: kunden_beliebigsuchen.php
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" >
<head>
<title>Daten suchen</title>
<link rel="stylesheet" href="Format.css" type="text/css" />
</head>
<body>
<h3>Folgende Bestelldaten sind vorhanden:</h3>
<?php
$server
= "localhost";
$user
= "root";
$pass
= "";
$kdname
= $_POST["kdname"];
$verbindung = mysql_connect($server, $user, $pass)
or die ("Keine Verbindung zum Server... Abbruch des Skripts.");
mysql_select_db("obstladen")
or die ("Fehler beim Zugriff auf die Datenbank");
//sucht eingegebene Zeichen/Zeichenkette groß/klein an jeder Stelle – ist hier aktiviert
$sql = "SELECT * FROM bestellung WHERE Nachname like '%$kdname%'";
//sucht Nachnamen mit h oder H als Anfangsbuchstabe – ist hier nicht aktiviert
//$sql = "SELECT * FROM bestellung WHERE Nachname like 'h%'";
//sucht Nachnamen mit eingegebenen Anfangsbuchstaben – ist hier nicht aktiviert
//$sql = "SELECT * FROM bestellung WHERE Nachname like '$kdname%'";
//sucht Nachnamen mit eingegebenen Endbuchstaben – ist hier nicht aktiviert
//$sql = "SELECT * FROM bestellung WHERE Nachname like '%$kdname'";
//sucht Nachnamen mit eingegebenen Endbuchstaben – ist hier nicht aktiviert
//$sql = "SELECT * FROM bestellung WHERE Nachname like '$kdname'";
$abfrage = mysql_query($sql);
if(!$abfrage)
{
echo "<p>Die SQL-Anweisung ist fehlgeschlagen...</p>";
}
$anzahl=mysql_num_rows($abfrage);
echo "<p>In der Tabelle befinden sich $anzahl Bestellungen.</p>";
?>
<table>
<tr>
<th>Bestell-Nr.</th>
<th>Vorname</th>
<th>Name</th>
<th>Wohnort</th>
<th>Sorte</th>
<th>Menge</th>
<th>Bestelldatum</th>
</tr>
<?php
while ($zeile = mysql_fetch_array($abfrage))
{ echo "<tr><td> $zeile[ID] </td>";
echo "<td> $zeile[Vorname] </td>";
echo "<td> $zeile[Nachname] </td>";
echo "<td> $zeile[Ort] </td>";
echo "<td> $zeile[Sorte] </td>";
echo "<td> $zeile[Menge] </td>";
echo "<td> $zeile[BestellDatum] </td>";
echo "</tr>";
}
echo "</table>";
?>
</body>
</html>
mysql_close($verbindung);
______________________________________________________________________________________
Tress
PHP
Seite 43
MySQL
phpMyAdmin 22.02.2011
5.12. Auswahl von Daten über ein Suchformular nach verschiedenen Suchverfahren
Vorbereitung: Kopieren Sie den Ordner 18kunden_suchverfahren nach H:\XAMPPLITE/htdocs
 Start Webserver Apache und MySQL über XAMPP Control Panel
 http://localhost/18kunden_suchverfahren/kunde_suchverfahren.html
Suchformular: kunde_suchverfahren.html
Webseite: kunde_suchverfahren.html
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" >
<head><title>Daten suchen in der MySQL-Datenbank</title>
<link rel="stylesheet" href="format.css" type="text/css" />
</head>
<body>
<h3>Bestellungen bei bestimmten Kunden suchen </h3>
<form action="kunde_suchverfahren.php" method="post">
<p>Wählen Sie das Suchverfahren (Keine Unterscheidung Groß- und Kleinschreibung)</p>
<p><input type="radio" name="suche" value="genaue_suche" />
genauer Suchbegriff (vollständige Zeichenkette)<br />
<input type="radio" name="suche" value="genaue_linkssuche" />
Suchbegriff (Teilzeichenkette) links beginnend<br />
<input type="radio" name="suche" value="genaue_rechtssuche" />
Suchbegriff (Teilzeichenkette) rechts beginnend<br />
<input type="radio" name="suche" value="beliebige_suche" />
Zeichenkette (1 oder mehrere Zeichen) an beliebiger Stelle suchen<br />
</p>
<h3>Bei Wahl der letzten drei Suchverfahren ohne jegliche Eingabe werden alle Daten ausgegeben! </h3>
<p>Kundenname  <input class="farbe1" type="text" name="kdname" value="" /></p>
<p><input class="farbe2" type="submit" value="Kundenbestelldaten abrufen" /></p>
</form>
</body>
</html>
Vom PHP-Programm kunde_suchverfahren.php erzeugtes Suchergebnis
______________________________________________________________________________________
Tress
PHP
Seite 44
MySQL
phpMyAdmin 22.02.2011
PHP-Programm: kunden_suchverfahren.php
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" >
<head>
<title>Daten suchen</title>
<link rel="stylesheet" href="Format.css" type="text/css" />
</head>
<body>
<h3>Folgende Bestelldaten sind vorhanden:</h3>
<?php
$server
= "localhost";
$user
= "root";
$pass
= "";
$kdname
= $_POST["kdname"];
//if ($_POST["suche"]==='genaue_suche') ist nicht notwendig
//
{
//
$kdname
= $_POST["kdname"];
//
}
if ($_POST["suche"]==='genaue_linkssuche')
{
$kdname
= "$kdname%";
}
if ($_POST["suche"]==='genaue_rechtssuche')
{
$kdname
= "%$kdname";
}
if ($_POST["suche"]==='beliebige_suche')
{
$kdname
= "%$kdname%";
}
$verbindung = mysql_connect($server, $user, $pass)
or die ("Keine Verbindung zum Server... Abbruch des Skripts.");
mysql_select_db("obstladen")
or die ("Fehler beim Zugriff auf die Datenbank");
$sql = "SELECT * FROM bestellung WHERE Nachname like '$kdname'";
$abfrage = mysql_query($sql);
if(!$abfrage)
{
echo "<p>Die SQL-Anweisung ist fehlgeschlagen...</p>";
}
$anzahl=mysql_num_rows($abfrage);
echo "<p>In der Tabelle befinden sich $anzahl Bestellungen.</p>";
?>
<table>
<tr>
<th>Bestell-Nr.</th>
<th>Vorname</th>
<th>Name</th>
<th>Wohnort</th>
<th>Sorte</th>
<th>Menge</th>
<th>Bestelldatum</th>
</tr>
<?php
while ($zeile = mysql_fetch_array($abfrage))
{ echo "<tr><td> $zeile[ID] </td>";
echo "<td> $zeile[Vorname] </td>";
echo "<td> $zeile[Nachname] </td>";
echo "<td> $zeile[Ort] </td>";
echo "<td> $zeile[Sorte] </td>";
echo "<td> $zeile[Menge] </td>";
echo "<td> $zeile[BestellDatum] </td>";
echo "</tr>";
}
echo "</table>";
mysql_close($verbindung);
?>
</body>
</html>
______________________________________________________________________________________
Tress
PHP
Seite 45
MySQL
phpMyAdmin 22.02.2011
Herunterladen