Docstoc

Datenbanken mit MySQL und PHP

Document Sample
Datenbanken mit MySQL und PHP Powered By Docstoc
					Kursstufe Informatik - Datenbanken

Datenbanken mit MySQL und PHP
Datenbanken mit MySQL und PHP.................................................................................................................................... 1 MySQL-Datenbank............................................................................................................................................................. 1 Public_html-Verzeichnis .................................................................................................................................................... 4 PHP-Datei speichert Zugangsdaten der MySQL-Datenbank .............................................................................................. 5 PHP-Datei greift auf Datenbank zu .................................................................................................................................... 5 PHP-Datei nutzt SQL um Tabellen zu erstellen ................................................................................................................. 8 PHP-Datei liest Datensätze ein ......................................................................................................................................... 11 PHP-Datei zum Auslesen von Datensätzen ...................................................................................................................... 12 PHP-Datei zum Verknüpfen von Datensätzen .................................................................................................................. 13 HTML-Datei zur Eingabe von Kommentaren .................................................................................................................. 13 PHP-Datei zum Einlesen der Formular-Daten .................................................................................................................. 14 PHP-Datei zum Einloggen ................................................................................................................................................ 14 PHP-Datei zum Ausloggen ............................................................................................................................................... 16 Ausblick ............................................................................................................................................................................ 16 Lösungen .......................................................................................................................................................................... 16 Quellen: ............................................................................................................................................................................ 28 Voraussetzungen: 1. Grundkenntnisse in HTML 2. Web-Verzeichnis mit PHP (z. B. public_html-Verzeichnis in der LML) 3. Zugang zu einer MySQL-Datenbank

MySQL-Datenbank
Jedem Schüler steht noch vom Joomla-Projekt (z. B. unter https://hgwt.p.irq0.de/~[loginName]/joomla )

eine MySQL-Datenbank zur Verfügung: Host: Datenbank-Name: Datenbank-User: Passwort: localhost joomlax forumx forumx (x: 3 – 21) (x: 3 – 21) (x: 3 – 21)

Diese Datenbank nutzen wir nun für unser neues Projekt.

www.rudolf-web.de

26.01.2010

1/28

Kursstufe Informatik - Datenbanken Wir werden neue Tabellen anlegen, die Felder der Tabellen definieren, Datensätze eingeben, Abfragen auslesen u.v.m. was „man halt so mit Datenbank macht“. Unser anwendungsorientieres Ziel ist für eure Homepage ein Gästebuch zu erstellen, in dem registrierte Nutzer Kommentare abgeben können. Unser informatisches Ziel ist das Verständnis der Zusammenarbeit von HTML, PHP, SQL mit einer MySQL-Datenbank. Eure Datenbank kann im Rahmen des Schulnetzes vom Administrator über das sogenannte Webmin-Modul verwaltet werden: Die vorhandenen MySQL-Datenbanken:

www.rudolf-web.de

26.01.2010

2/28

Kursstufe Informatik - Datenbanken Die Joomla-Tabellen in der Datenbank Joomla2:

Die Felder in der Tabelle jos_user in der Datenbank joomla2:

Der Aufbau dieser Datenbank ist also dem Aufbau der Datenbank in OOBase o. ä. vergleichbar: Jedes Tabelle besteht aus Datenfelder, für die wir den Feldnamen und Feldtypen festlegen, für die wir Pflichtfelder definieren („Erlaube Null: Nein“), evtl. einen Standardwert vorgeben, evtl. automatisch hochzählen lassen („auto_increment“) und vor allem ein Feld zum Primärschlüssel machen. Ein Datensatz in der Tabelle „jos_users“ in „joomla2“: www.rudolf-web.de 26.01.2010 3/28

Kursstufe Informatik - Datenbanken

Nun könnte hier in Webmin der Administrator im Schulnetz neue Datensätze eingeben, neue Felder definieren, neue Tabellen anlegen ... Diese Aufgabe soll aber nun von PHP-Dateien in eurem Public_Html-Verzeichnis übernommen werden – wobei neben der Programmiersprache PHP, den Formatierungen in HTML die Datenbank-Sprache SQL eingesetzt werden wird – aber das alles stellt uns nur vor kleine, aber leicht zu bewältigende Herausforderungen. Zuerst teilen wir nochmals die existierenden Datenbanken joomla3 bis joomla21 den Kursteilnehmern zu!

Public_html-Verzeichnis
Jeder legt in seinem Public_html-Verzeichnis ein neues Verzeichnis „db“ (für Datenbank) an und erstellt darin eine leere Datei mit dem Namen „index.php“. Dann wird im Webbrowser der Zugriff auf diese Datei getestet: https://hgwt.p.irq0.de/~[LoginName]/db/index.php Es erscheint die leere Seite:

Die Datei index.php kann z. B. die Links auf die anderen PHP-Seiten aufnehmen, die wir im Folgenden erstellen werden.

www.rudolf-web.de

26.01.2010

4/28

Kursstufe Informatik - Datenbanken

PHP-Datei speichert Zugangsdaten der MySQL-Datenbank
Wir erstellen im Verzeichnis „db“ eine PHP-Datei „config.inc.php“, wobei die MySQL-Daten diejenigen eurer Datenbank sind: <?php // // // // // Demo für Datenbank-Zugriff via PHP auf MySQL Version: 1.0 Autor: Christoph Sontag Homepage: http://direktinfo.com ==================================== // // // // normally Database Database Database "localhost" name user id password

// MySQL-dates $HOST = "localhost"; $DB = "joomlax"; $ID = "forumx"; $PW = "forumx"; ?>

Tipp: Ersetze unbedingt das „x“ durch deine Zahl ... Hinweise zu PHP-Datei:  Die PHP-Befehle werden durch folgenden „Tags“ geklammert: „<?php“ und „?>“. Dies gibt dem Webserver die Anweisung, dass nun PHP zum Einsatz kommt.  Kommentare erfolgen durch „//“  Befehle werden stets durch „;“ (Strichpunkt) abgeschlossen.  Variablen-Namen beginnen stets mit „$“ (Dollarzeichen)  Die Zuweisung der Variablenwerte erfolgt durch „=“ (Gleichheitszeichen)  Variablen-Typen müssen nicht definiert werden, Zeichenketten beginnen und enden mit „" “ Sinn dieser Datei: Hier werden die PHP-Variablen „$HOST“, „$DB“, „$ID“ und „$PW“ festgelegt. Alle PHP-Dateien, die auf die MySQL-Datenbank zugreifen wollen, greifen dann auf diese Datei und auf diese Variablen zurück – eine Änderung kann dann auch in dieser Datei zentral erfolgen.

PHP-Datei greift auf Datenbank zu
Wir erstellen eine dritte PHP-Datei im Verzeichnis „db“: „install.php“: <?PHP // // // // // Demo für Datenbank-Zugriff via PHP auf MySQL Version: 1.0 Autor: Christoph Sontag Homepage: http://direktinfo.com ====================================

echo "<h1>Tabellen erstellen</h1>"; include ("config.inc.php"); // enthält Verbindungsdaten zum MySQL Server

$db_test = @mysql_connect($HOST,$ID,$PW); echo "<p>Zugriffsversuch auf die MySQL-Datenbank: $db_test</p>"; ?> Hinweise zur PHP-Datei:  Mit dem Echo-Befehl werden Text-Ausgaben gesteuert: echo "...";  Innerhalb des Echo-Befehls können normaler Text aber auch HTML-Befehle stehen – wir können also mithilfe von PHP Webseiten dynamisch erstellen. www.rudolf-web.de 26.01.2010 5/28

Kursstufe Informatik - Datenbanken

    

Mit dem Include-Befehl können andere Dateien eigebunden werden: config ("..."); Der MySQL_Connect-Befehl stellt die Verbindung zu MySQL her. Er benötigt drei Variablen: den Hostname, den Benutzernamen und dessen Passwort. mysql_connect( , , ); Steht ein “@”-Zeichen vor dem Befehl, so wird nur getestet, ob der Befehl ohne Fehler ausgeführt werden kann. Die Variable $db_test speichert, ob der Zugriffsversuch fehlerfrei lief. Im letzten Echo-Befehl erkenn wir, dass PHP-Variablen auch einfach ausgegeben werden können.

Wenn der Zugriffsbefehl Erfolg hat, sieht der Ausgabe bei Aufruf der Datei https://hgwt.p.irq0.de/~[LoginName]/db/nstall.php so aus:

Diese Ausgabe wollen wir noch etwas verbessern: Wir ersetzen den zweiten Echo-Befehl, um auf einen erfolgreichen oder misslungenen Connect-Versuch unterschiedliche Ausgaben zu erstellen: if ($db_test) { echo "<p>MySQL-Verbindung des Nutzers <b>$ID</b> zum Host <b>$HOST</b> war erfolgreich! </p>"; } else { echo "<p>Datenbank-Connect nicht erfolgreich - bitte überprüfen Sie die Zugangsdaten in der Datei <b>config.inc.php</b> (HOST,ID,PW)!</p>"; } Hinweis:  Der IF-ELSE-Befehl stellt eine Verzweigung dar – abhängig von der Bedingung in der runden Klammer. Die Syntax lautet: if (... ) {... } else {... }  Er ist hier so zu lesen: „Wenn der Verbindungsversuch bei $db_test“ erfolgreich war, dann erfolgt der erste Echo-Befehl, wenn nicht erfolgt der zweite Echo-Befehl“ Bei erfolgreichem Aufruf ergibt sich:

Ein Syntax-Fehler (also falscher PHP-Befehl) ergibt – inklusive Angabe des Fehlers und der Zeile mit dem SyntaxFehler – folgende Ausgabe:

Ein misslungener Verbindungsversuch mit der MySQL-Datenbank dagegen ergibt: www.rudolf-web.de 26.01.2010 6/28

Kursstufe Informatik - Datenbanken

Nach gelungener Verbindung zum Localhost müssen wir dort nun unsere Datenbank auswählen – wir ergänzen eine Zeile: if ($db_test) { echo "<p>MySQL-Verbindung ... erfolgreich! </p>"; $db_select = @mysql_select_db($DB,$db_test); } Hinweis:  Der MySQL-Select-Befehl benötigt zwei Variablen: den Namen der Datenbank und die erfolgreiche Verbindung zu MySQL.  Die Variable $db_select speichert wieder, ob der Auswahl-Versuch („@“!) erfolgreich war. Bei erfolgreichem Auswahl-Versuch geben wir wieder unterschiedliche Ausgaben: if ($db_test) { echo "<p>MySQL-Verbindung ... erfolgreich! </p>"; $db_select = @mysql_select_db($DB,$db_test); if ($db_select) { echo "<p>Datenbank <b>$DB</b> kann ausgewählt werden ..."; } else { echo "<p>Datenbank-Auswahl nicht erfolgreich, bitte überprüfen Sie die Zugangsdaten (DB)!</p>"; } } Aufgabe 1: Beschreibe mit deinen Worten, was dieser IF-ELSE-Befehl leistet. Nachdem nun der Verbindung und der Auswahl nichts mehr im Wege steht, sollten wir diese auch tatsächlich durchführen: if ($db_select) { echo "<p>Datenbank <b>$DB</b> kann ausgewählt werden</p>"; $conn_id = mysql_connect($HOST,$ID,$PW); mysql_select_db($DB,$conn_id); echo "Verbindung zur Datenbank <b>$DB</b> steht!</p>"; } Hinweis:  Wenn „@“ vor den Befehlen weggelassen wird, werden diese auch vollständig ausgeführt – hier also die Verbindung mit dem MySQL-Connect-Befehl und die Datenbank-Auswahl mit dem MySQL-Select-Befehl. Es ergibt sich:

www.rudolf-web.de

26.01.2010

7/28

Kursstufe Informatik - Datenbanken

Aufgabe 2: Verändere die Echo-Befehle (z. B. die HTML-Formatierung).

PHP-Datei nutzt SQL um Tabellen zu erstellen
Nun wollen wir in der ausgewählten Datenbank eine neue Tabelle erstellen – dazu benötigen wir die Datenbanksprache SQL, die von PHP zur MySQL-Datenbank gebracht wird: echo "Verbindung zur Datenbank <b>$DB</b> steht!</p>"; $SQL1 = "CREATE TABLE tbl_user ( ID int(6) NOT NULL auto_increment, Vorname varchar(30) NOT NULL default '', Nachname varchar(30) NOT NULL default '', KlassenID varchar(3) NOT NULL default '', Mail varchar(50) NOT NULL default '', Registriert varchar(20) NOT NULL default '', PW varchar(10) NOT NULL default '', PRIMARY KEY (ID) ) TYPE=MyISAM"; $result1 = mysql_query($SQL1,$conn_id); } Hinweise:  Die Text-Variable $SQL1 speichert den SQL-Befehl  Der SQL-Befehl zum Erstellen von Tabellen lautet: CREATE TABLE tabellenname (...) TYPE=MyISAM  Innerhalb der runden Klammern werden die Datenfelder definiert:  Verpflichtendes Attribut: Name: z. B. ID, Vorname, ...  Verpflichendes Attribut: Typ: z. B. int(6) für ganze Zahlen mit max. 6 Stellen, varchar(30) für Zeichenketten mit 30 Stellen  Optional: NOT NULL dafür, dass dieses Datenfeld unbedingt eine Eingabe erfordert  Optional: default 'Standardwert' dafür, wenn das Datenfeld schon einen Wert haben soll  Optional: auto_increment, wenn Zahlenfelder automatisch hochgezählt werden sollen.  Die Attribute werden durch Leerzeichen getrennt, die Datenfelder durch Kommas.  Verpflichtend: Ein Datenfeld muss zum Primärschlüssel bestimmt werden: PRIMARY KEY (...)  Dieser SQL-Befehl wird im MySQL-Query-Befehl ausgeführt, der als zweite Variable die Verbindung zum Localhost benötigt: mysql_query(...,...)  Falls wir später darauf zurückgreifen wollen, speichern wir dies in der Varaiable $result1. Zusatz-Info: SQL-Befehle können wir auch in OOBase eingeben. Testet es doch mal. In Webmin sieht es dann in der Datenbank so aus – bitte beim Lehrer überprüfen:

www.rudolf-web.de

26.01.2010

8/28

Kursstufe Informatik - Datenbanken

und

Aufgabe 3: Erstelle eine zweite Tabelle „tbl_klassen“ mit den Datenfeldern: - ID vom Typ „ganze Zahl mit max. 6 Stellen“, verpflichtende Eingabe, Primärschlüssel - Klassenname vom Typ „Zeichenkette mit max. 30 Zeichen“, verpflichtende Eingabe, Standardeingabe soll leer sein - Klassenlehrer genauso Aufgabe 4: Erstelle eine dritte Tabelle „tbl_kommentare“ mit ID, Datum, UserID, Kommentar (Typ „text“). Als ordentliche Programmierer wird nach dem Aufbau der Verbindung zur Datenbank zum Erstellen der Tabellen am Ende die Verbindung wieder gekappt: $result3 = mysql_query($SQL3,$conn_id); mysql_close($conn_id); Hinweis:  Der MySQL-Close-Befehl benötig als Variable den erfolgreichen Verbingsaufbau. Aufgabe 5: Informiere mit einem Echo-Befehl über das Erstellen der Tabellen und das Schließen der Verbindung. Ergänze den Quelltext mit Kommentaren, um dessen Versändlichkeit zu erhöhen. Wenn wir die Datei install.php nun aufrufen, werden nun zwei weitere Tabellen erstellt:

www.rudolf-web.de

26.01.2010

9/28

Kursstufe Informatik - Datenbanken

In Webmin sieht das dann so aus – bitte beim Lehrer überprüfen:

und

und

www.rudolf-web.de

26.01.2010

10/28

Kursstufe Informatik - Datenbanken Tipp: Wenn es „unlösbare“ Probleme mit der Syntax gibt: Bei der Lösung von Aufgabe 5 findet Ihr eine vollständige Lösung für die „install.php“!

PHP-Datei liest Datensätze ein
Lade die gezippte Datei „admin.zip“ von meiner Homepage herunter bzw.aus dem Schülertausch-Verzeichnis. Entpacke Sie in dein Verzeichnis „db“. (Dort befindet sich dann das Unterverzeichnis „admin“ mit den Dateien read.php, user.txt und klassen.txt). Rufe nun diese Datei read.php im Browser auf:

Der Aufruf liest per PHP und SQL 3 Datensätze aus der Datei user.txt in die Tabelle tbl_user und 2 Datensätze aus der Datei klassen.txt in die Tabelle tbl_klassen ein. In Webmin sieht das dann so aus:

und

Hinweis: Die ursprüngliche Nutzer dürfen bei einem erneuten Aufruf von read.php nicht stehenbleiben – sonst werden sie doppelt angelegt!

www.rudolf-web.de

26.01.2010

11/28

Kursstufe Informatik - Datenbanken Aufgabe 6: Ergänze weitere User und Klassen, indem du die Dateien user.txt und klassen.txt editierst – Achtung Syntax!!! Zusatzaufgabe 1: Schau dir die Datei read.php an und kommentiere diese Datei. Zusatzaufgabe 2: Formatiere die Ausgabe der Datensätze in der HTML-Datei z. B. mit einer Tabelle. Zusatz-Info: Im Schulnetz gibt es eine ähnlich Funktion: Aus der Schüler- und Lehrerdatenbank, die im Sekretariat gepflegt wird, bekommt der Administrator zwei Textdateien: schueler.txt und lehrer.txt. Diese werden dann über ein Skript in die User-Datenbanl der LML eingelesen und daraus werden die Logins und Passwörter erzeugt.

PHP-Datei zum Auslesen von Datensätzen
Wir legen im Ordner „db“ eine Datei „show1.php“ an. Da wir nun auch Wert auf ordentliches HTML und saubere Darstellung legen, beginnen und beenden wir diese Datei mit HTML-Befehlen: <html> <head> <title>Kommentare anzeigen</title> <link href="css/styles.css" rel="stylesheet" type="text/css" /> </head> <body> <h2 align="center">Kommentar Seite (mit einfacher MySQL Tabelle)</h2> </body> </html> Im Body-Teil wird nun die Verbindung zur Datenbank aufgebaut: <!--- Verbindung zu mySQL herstellen: ---> <?PHP include ("config.inc.php"); // enthält Verbindungsdaten zum MySQL Server $conn_id = mysql_connect($HOST,$ID,$PW); if (!$conn_id) die("Öffnen der DB ist gescheitert"); mysql_select_db($DB,$conn_id); Anschließend erfolgt die Abfrage der Datenbank per PHP und SQL: $query = "SELECT Vorname, Nachname, KlassenID, Mail FROM tbl_user ORDER BY Nachname, Vorname ASC"; $result=mysql_query($query); if (mysql_errno()) die ("<br>" . mysql_errno()." : ".mysql_error()."<br>"); Hinweise:  Der SQL-Befehl zur Abfrage hat die Syntax: SELECT ... FROM ...  Nach SELECT stehen die Namen der Datenfelder stehen (getrennt mit Kommas)  Es könnte auch „*“ stehen, was alle Datenfelder bedeutet  Nach „FROM“ kommt der Name der Tabelle  Optional können die Datensätze auch geordnet werden: ORDER BY ... ASC  dabei ist der Name des Datenfeldes anzugeben, nach dem geordnet werden soll  Hier wird also zuerst nach Nachnamen und dann nach Vornamen geordnet  DESC bedeutet absteigend, ASC aufsteigend  In der Variable $result werden dann die entsprechend geordneten Datensätze zwischengespeichert  Im IF-Befehl wird ein möglicher MySQL-Fehler mit Nummer und Beschreibung ausgegeben und dann das Skript gestoppt. Nun bleibt die Aufgabe, die Inhalte der Variable $result aufzusplitten und dann als HTML-Datei darzustellen: Zuerst ermitteln wir die Anzahl der Datensätze: $num = mysql_num_rows($result); echo "<p><b>Zahl der Einträge: $num </b></p>"; Dann splitten wir über eine Schleife die Datensätze aus der Result-Variablen for ($i=0; $i< $num; $i++) { $row= mysql_fetch_row($result); $Vorname = $row[0]; www.rudolf-web.de 26.01.2010 12/28

Kursstufe Informatik - Datenbanken $Nachname = $row[1]; $KlassenID = $row[2]; $Mail = $row[3];

und geben diese in der HTML-Datei aus echo "Name: <b>$Nachname , $Vorname</b>"; echo "- E-Mail: <b>$Mail</b> - Klassen-ID: <b>$KlassenID</b><br>"; } und schließen die Verbindung: mysql_close($conn_id); ?> Nun können wir die Datei im Browser aufrufen:

Aufgabe 7: Formatiere die Daten in einer HTML-Tabelle! Aufgabe 8: Ergänze die Ausgabe um die ID! Aufgabe 9: Erstelle eine Datei show2.php, in der die Daten aus der tbl_klassen ausgelesen werden!

PHP-Datei zum Verknüpfen von Datensätzen
Der Sinn relationaler Datenbanken lässt sich beim Verknüpfen von Datensätzen aus verschiedenen Tabellen erkennen: Statt bei jedem User die Klasse und den Klassenlehrer mitzuspeichern, wird beim User nur die Klassen-ID mitgespeichert, die dann aus der Klassen-Tabelle die Klasse und den Klassenlehrer liefert. Der zugehörige SQL-Befehl lautet: SELECT Vorname,Nachname, Klassenname, Klassenlehrer FROM tbl_user, tbl_klassen WHERE (tbl_user.KlassenID = tbl_klassen.ID) ORDER BY Klassenname ASC Mit diesem SQL-Befehl können nun die Daten aus den zwei Tabellen miteinander verknüpft, ausgelesen und ausgegeben werden: Zusatz-Aufgabe 3: Erstelle eine Datei show3.php, in der die User mit Vornamen, Nachnamen, Klassenname und Klassenlehrer ausgelesen und in einer Tabelle dargestellt werden.

HTML-Datei zur Eingabe von Kommentaren
Die Eingabe-Seite für Kommentare stellt eine reine HTML-Datei dar: <html><head> <title>Formular für Eingabe von Kommentaren</title> <link href="css/styles.css" rel="stylesheet" type="text/css" /> </head> <body> <h2 align="center">Eingabe von Kommentaren</h2> <form action='show4.php' method='post'> <!-- Formular-Daten werden an Datei show4.php übergeben --> www.rudolf-web.de 26.01.2010 13/28

Kursstufe Informatik - Datenbanken <b>Neuer Eintrag von: User-ID: <input name="UserID" type="text" size="6" maxlength="30"></p> <!-- User-ID-Eingabe --> <textarea name='Komm' rows='5' cols='30'></textarea> <!-- Kommentareingabe in Textfeld --> <input type='submit' name='Eintrag' value='Eintragen'> <!-- Button zum Absendem --> <input type="reset" name="submit" value="Zurücksetzen" /> <!-- Reset-Button --> </form> </body></html>

PHP-Datei zum Einlesen der Formular-Daten
In der Datei show4.php müssen wir nun die Formulardaten aus add1.php verarbeiten und einlesen: In der Datei add1.php haben wir im ersten Eingabefeld mit name=“UserID“ die User-ID eingegeben. Da die Methode des Formulars als method=’post’ angegeben worden ist, können wir nun in der Datei show4.php auf diese Eingaben zurückgreifen und sie in einer PHP-Variablen speichern: $UserID =$_POST[UserID];
Genauso können wir den Kommentar speichern:

$Kommentar = "$_POST[Komm]";
Mit diesen Variablen und dem SQL-Befehl NOW() für das aktuelle Datum können wir den Datensatz in die Tabelle tbl_kommentare mit dem SQL-Befehl INSERT einfügen:

$sql = "INSERT INTO tbl_kommentare (UserID,Datum,Kommentar) VALUES ($UserID,NOW(),'$Kommentar')"; $result=mysql_query($sql);
Eventuelle Fehler fangen wir wieder ab:

if (mysql_errno()) die ("<br>" . mysql_errno()." : ".mysql_error()."<br>"); Aufgabe 10: Erstelle die PHP-Datei show4.php Aufgabe 11: Ergänze die PHP-Datei um eine Ausgabe der Kommentare – sortiert nach Datum Aufgabe 12: Gib bei der Ausgabe den Namen und die Klasse an Tipp 1: siehe Zusatz-Aufgabe 1 Tipp 2: Zwei Bedingungen bei WHERE können durch WHERE (...) AND (...) erzwungen werden. Aufgabe 13: Erstelle eine Datei showkommentar.php, die alle Kommentare wie bei Aufgabew 12 anzeigt, aber keine neuen Kommentare einliest sondern lediglich einen Link auf die Datei add1.php bietet, mit der dann neue Kommentare eingegeben werden können. Zusatz-Aufgabe 4: Erstelle zwei Dateien register.php und showregister.php, in denen sich ein neuer Nutzer registrieren kann (1. Datei) und dann in die Datenbank eingetragen wird und eine kleine Rückmeldung darüber erhält (2. Datei). Zusatz-Aufgabe 5: Erstelle eine Datei show1_sort.php, in der der User in ein Eingabefeld entweder „(all)“ oder eine Buchstaben eingeben kann und dann alle User oder nur die Nutzer, deren Nachname mit diesem Buchstaben beginnt, ausgegeben werden. Tipp: z. B. ergibt der Befehl „WHERE Nachname LIKE 'A%' " alle Namen, die mit A beginnen.

PHP-Datei zum Einloggen
Grundlage des Einloggens ist zum einen der Abgleich einer Formulareingabe mit der MySQL-Datenbank und zum anderen der Übermittlung der Tatsache, dass der User eingeloggt ist, an alle zukünftig aufzurufenden Dateien. Dazu gibt es in PHP den Begriff der „Session“: Zum Starten einer Session gibt es die PHP-Funktion „session_start();“ . Diese muss am Anfang jeder Seite die die Session benutzen soll aufgerufen werden. Dies muss vor der ersten Ausgabe geschehen – am Besten ganz am Anfang der Seite. <?php session_start(); ?> Alle Dateien, die diese “Session” nutzen wollen, müssen diesen Befehl am Anfang stehen haben.

www.rudolf-web.de

26.01.2010

14/28

Kursstufe Informatik - Datenbanken Die ganze Login-Datei login.php <?php session_start(); ob_start(); ?> <html><head><title>Login</title> <link href="css/styles.css" rel="stylesheet" type="text/css" /> </head><body> <h1 align="center">Willkommen auf der Login-Seite (mit PHP)</h1> <?PHP //Verbindung zu mySQL herstellen: ---> include ("config.inc.php"); // enthält Verbindungsdaten zum MySQL Server $conn_id = mysql_connect($HOST,$ID,$PW); if (!$conn_id) die("Öffnen der DB ist gescheitert"); mysql_select_db($DB,$conn_id); //Zuerst eine PHP-Funktion zur Überprüfung des Users mit der Datenbank: function ValidateUser($user,$pw) { $query = "SELECT * FROM tbl_user WHERE Nachname='$user' AND PW='$pw'"; $result=mysql_query($query); $num = @mysql_num_rows($result); if ($num>0) $ValidateUser=true; else $ValidateUser=false; return $ValidateUser; } // User hat sich angemeldet: if (@$_POST["submit"] <> "") { // and !isset($_SESSION["Status"])) { $_SESSION = array(); @session_destroy(); // Login Status zurücksetzen $sUsername = @$_POST["username"]; $sPassword = @$_POST["password"]; if (ValidateUser($sUsername, $sPassword)) $_SESSION["Status"] = $sUsername; else { // Anmeldung fehlgeschlagen: echo "<h3>Bei der Anmeldung ist ein Fehler aufgetreten, bitte nochmals probieren.</h3>"; } } ?> <!--- Benutzer noch nicht eingeloggt: Zeige login Form an: ---> <h3>Benutzeranmeldung</h3> <?PHP // Session Variable checken: if (isset($_SESSION["Status"])) echo "<b>Angemeldeter User: ".$_SESSION["Status"]."</b><br>"; ?> <p>Zum Testen: Einloggen als Benutzer "Meier" mit Passwort "test"</p> <form method="post"> <table> <tr> <td>Benutzer:</td> <td>Passwort:</td> </tr> <tr> <td> <input type="text" name="username"></td> <td><input type="password" name="password"></td> </tr> </table> www.rudolf-web.de 26.01.2010 15/28

Kursstufe Informatik - Datenbanken <input type="submit" name="submit" value="Anmelden"> </form> </body></html>

PHP-Datei zum Ausloggen
Diese Datei sieht z. B. so aus: <?php session_start(); // lösche die session variablen und gehe zur Startseite zurück @session_unset(); @session_destroy(); header("Location: index.php"); exit(); ?>

Ausblick
Formular zum Login – und nur dann dürfen Kommentare eingegeben werden Gästebuch Forum

Zu den Quellen

Lösungen
Zu Aufgabe 1:
Wenn der Auswahl-Versuch der Datenbank klappt, dann wird der erste Echo-Befehl ausgegeben:

Wenn der Auswahl-Versuch der Datenbank nicht klappt, dann wird der zweite Echo-Befehl ausgegeben:

zu Aufgabe 3:
$SQL2 = "CREATE TABLE tbl_klassen ( ID int(6) NOT NULL, Klassenname varchar(30) NOT NULL default '', Klassenlehrer varchar(30) NOT NULL default '', PRIMARY KEY (ID) ) TYPE=MyISAM"; $result2 = mysql_query($SQL2,$conn_id);

zu Aufgabe 4:
$SQL3 = "CREATE TABLE tbl_kommentare ( ID int(6) NOT NULL auto_increment, www.rudolf-web.de 26.01.2010 16/28

Kursstufe Informatik - Datenbanken Datum varchar(20) NOT NULL default '', UserID int(6) NOT NULL, Kommentar text NOT NULL, PRIMARY KEY (ID) ) TYPE=MyISAM"; $result3 = mysql_query($SQL3,$conn_id);

zu Aufgabe 5:
Die ganze Datei install.php könnte dann z. B. so aussehen: <?PHP // Demo für Datenbank-Zugriff via PHP auf MySQL // Version: 1.0 // Autor: Christoph Sontag // Homepage: http://direktinfo.com // ==================================== echo "<h1>Tabellen erstellen</h1>"; include ("config.inc.php"); // enthält Verbindungsdaten zum MySQL Server //Verbindungsversuch von

$db_test = @mysql_connect($HOST,$ID,$PW); Datenbanknutzer zu Localhost

if ($db_test) //wenn erfolgreich { echo "<p>MySQL-Verbindung des Nutzers <b>$ID</b> zum Host <b>$HOST</b> war erfolgreich! </p>"; $db_select = @mysql_select_db($DB,$db_test); //Auswahlversuch der Datenbank if ($db_select) //wenn erfolgreich { echo "<p>Datenbank <b>$DB</b> kann ausgewählt werden ..."; $conn_id = mysql_connect($HOST,$ID,$PW); //Verbindung zu localhost mysql_select_db($DB,$conn_id); //Auswahl der Datenbank echo "Verbindung zur Datenbank <b>$DB</b> steht!</p>"; //Erste Tabelle erstellen: $SQL1 = "CREATE TABLE tbl_user ( ID int(6) NOT NULL auto_increment, Vorname varchar(30) NOT NULL default '', Nachname varchar(30) NOT NULL default '', KlassenID varchar(3) NOT NULL default '', Mail varchar(50) NOT NULL default '', Registriert varchar(20) NOT NULL default '', PW varchar(10) NOT NULL default '', PRIMARY KEY (ID) ) TYPE=MyISAM"; $result1 = mysql_query($SQL1,$conn_id); echo "<p>Tabelle tbl_user..."; //Zweite Tabelle erstellen: $SQL2 = "CREATE TABLE tbl_klassen ( ID int(6) NOT NULL, Klassenname varchar(30) NOT NULL default '', Klassenlehrer varchar(30) NOT NULL default '', PRIMARY KEY (ID) ) TYPE=MyISAM"; $result2 = mysql_query($SQL2,$conn_id); echo "und Tabelle tbl_klassen..."; //Dritte Tabelle erstellen: $SQL3 = "CREATE TABLE tbl_kommentare ( ID int(6) NOT NULL auto_increment, www.rudolf-web.de 26.01.2010 17/28

Kursstufe Informatik - Datenbanken Datum varchar(20) NOT NULL default '', UserID int(6) NOT NULL, Kommentar text NOT NULL, PRIMARY KEY (ID) ) TYPE=MyISAM"; $result3 = mysql_query($SQL3,$conn_id); echo "und Tabelle tbl_kommentare erstellt ..."; mysql_close($conn_id); //Verbindung beendet echo "und Verbindung wieder beendet!"; } else //wenn Auswahlversuch nicht erfolgreich { echo "<p>Datenbank-Auswahl nicht erfolgreich, bitte überprüfen Sie die Zugangsdaten (DB)!</p>"; } } else { } ?> //wenn Verbindungsversuch nicht erfolgreich echo "<p>Datenbank-Connect nicht erfolgreich - bitte überprüfen Sie die Zugangsdaten in der Datei <b>config.inc.php</b> (HOST,ID,PW)!</p>";

zu Aufgabe 6:
Zwei zusätzliche User für user.txt: Martin,Maier,m.m@gmx.de,martin,3 Anni,Sauer,sauer@googlemail.com,anni,1 Hinweis: Die ursprüngliche Nutzer dürfen nicht stehenbleiben – sonst werden sie doppelt angelegt! Eine zusätzliche Klasse für klassen.txt: 3,7 A, Kathrin Thoma Anschließend wird die Datei „read.php“ im Browser wieder aufgerufen, damit die Datensätze in die Tabellen geschrieben werden:

zu Zusatzaufgabe 1:
<?php // Demo für Datenbank-Zugriff via PHP auf MySQL // Version: 1.0 // Autor: Christoph Sontag // Homepage: http://direktinfo.com // ==================================== echo "<b>Daten aus den Files user.txt und klassen.txt werden in die DB geschrieben...</b><br>"; include ("../config.inc.php"); //Datei mit Datenbank-Zugangsdaten wird eingebunden www.rudolf-web.de 26.01.2010 18/28

Kursstufe Informatik - Datenbanken $conn_id = mysql_connect($HOST,$ID,$PW); //Verbindung zu localhost if (!$conn_id) die("Öffnen der DB ist gescheitert"); //Wenn gescheitert, kille die Ausführung des Skripts mysql_select_db($DB,$conn_id); fopen("user.txt","r"); $lines=file("user.txt"); $anzahl_user = count($lines); /* //Auswahl der Datenbank // Öffne Textdatei zum lesen: // lade kompletten Textfile in ein Feld //Anzahl der Zeilen = Anzahl der User

Zerlege den File zunächst in die einzelnen Zeilen, in der Schleife dann Aufteilen der einzelnen Infos, durch Leerzeichen getrennt.

*/ for ($i=0; $i< $anzahl_user; $i++) //Schleife von i = 0 bis User-Anzahl { $zeile = trim($lines[$i]); //Hier wird die i-Zeile ausgelesen $inhalt = explode(",",$zeile); // splitte eine Textzeile in ein Feld, Trenner ist Komma $Vorname = $inhalt[0]; //Hier wird der Text vor dem 1.Komma reingelesen $Nachname = $inhalt[1]; //Hier wird der Text vor dem 2.Komma reingelesen $Mail = $inhalt[2]; //Hier wird der Text vor dem 3.Komma reingelesen $PW = $inhalt[3]; //Hier wird der Text vor dem 4.Komma reingelesen $KlassenID = $inhalt[4]; //Hier wird der Text vor dem 5.Komma reingelesen echo "$Vorname $Nachname $Mail $KlassenID $PW<br>"; //Ausgabe der einzelnen Inhalte in der HTML-Datei //Nun folgt der eigentliche SQL-Befehl: Eingabe des Datensatzes: $sql="insert into tbl_user (Vorname, Nachname, Mail, PW, KlassenID) VALUES ('$Vorname','$Nachname','$Mail','$PW',$KlassenID)"; // vorsicht: wir geben keine ID ein, das macht MySQL automatisch, // und KlassenID ist eine Zahl, daher keine Anführungszeichen ! mysql_query($sql); //Ausführen des SQL-Befehls: Eintrag in die Tabelle } //Und nun das ganze mit der Klassen.txt: echo "<hr>Klassen:<br>"; fopen("klassen.txt","r"); // Öffne Textdatei zum lesen: $lines=file("klassen.txt"); // lade kompletten Textfile in ein Feld $anzahl_klassen = count($lines); //Anzahl der Zeilen = Anzahl der Klassen /* Zerlege den File zunächst in die einzelnen Zeilen, in der Schleife dann Aufteilen der einzelnen Infos, durch Leerzeichen getrennt.

*/ for ($i=0; $i< $anzahl_klassen; $i++) //Schleife von i = 0 bis Klassen-Anzahl { $zeile = trim($lines[$i]); //Hier wird die i-Zeile ausgelesen $inhalt = explode(",",$zeile); // splitte eine Textzeile in ein Feld, Trenner ist Komma www.rudolf-web.de 26.01.2010 19/28

Kursstufe Informatik - Datenbanken $ID = trim($inhalt[0]); //Hier wird der Text vor dem 1.Komma reingelesen $Klassenname = trim($inhalt[1]); //Hier wird der Text vor dem 2.Komma reingelesen $Klassenlehrer = trim($inhalt[2]); //Hier wird der Text vor dem 3.Komma reingelesen echo "$ID $Klassenname $Klassenlehrer<br>"; //Ausgabe der einzelnen Inhalte in einer HTML-Datei //Nun folgt der eigentliche SQL-Befehl: Eingabe des Datensatzes: $sql="insert into tbl_klassen (ID, Klassenname, Klassenlehrer) VALUES ($ID,'$Klassenname','$Klassenlehrer')"; // Hier brauchen wir manuell eine ID (als Zahl !), // da der Bezug zu den usern in tbl_user // hergestellt werden muss ! mysql_query($sql); //Ausführen des SQL-Befehls: Eintrag in die Tabelle } mysql_close($conn_id); ?> //Verbindung wird geschlossen

zu Zusatzaufgabe 2:
a) Vor die For-Schleife fügen wir folgenden Zeilenn für die Tabellenüberschrift ein: echo "<table border=1><tr><th>Vorname</th><th>Nachname</th>”; echo "<th>Mail-Adresse</th><th>Klassen-ID</th></tr>"; b) Wir ersetzen in der Schleife echo "$Vorname $Nachname $Mail $KlassenID $PW<br>"; durch echo "<tr> td>$Vorname</td><td>$Nachname</td>"; echo "<td>$Mail</td><td>KlassenID</td></tr>"; c) Wir fügen nach dem Ende der For-Schleife diese Zeile für das Ende der Tabelle ein: echo "</table>"; Analog gehen wir mit den Klassen vor : echo "<table border=1><tr><th>Klassen-ID</th>"; echo "<th>Klassenname</th><th>Klassenlehrer</th></tr>"; und echo "<tr><td>$ID</td><td>$Klassenname</td><td>$Klassenlehrer</td></tr>"; und echo "</table>"; Es ergibt sich:

www.rudolf-web.de

26.01.2010

20/28

Kursstufe Informatik - Datenbanken

zu Aufgabe 7:
Vor die For-Schleife setzen wir : echo "<table border=1><tr><th>Nachname</th><th>Vorname</th>"; echo "<th>Mail-Adresse</th><th>Klassen-ID</th></tr>";
In die For-Schleife – statt der vorhandenen Ausgabe:

echo echo

"<tr><td>$Nachname</td><td>$Vorname</td>"; "<td>$Mail</td><td>$KlassenID</td></tr>";

und nach der For-Schleife:

echo "</table>"; Es ergibt sich :

zu Aufgabe 8:
Der PHP-Teil der Datei lautet dann : <?PHP include ("config.inc.php"); // enthält Verbindungsdaten zum MySQL Server $conn_id = mysql_connect($HOST,$ID,$PW); if (!$conn_id) die("Öffnen der DB ist gescheitert"); mysql_select_db($DB,$conn_id); $query = "SELECT * FROM tbl_user ORDER BY Nachname, Vorname ASC"; $result=mysql_query($query); if (mysql_errno()) die ("<br>" . mysql_errno()." : ".mysql_error()."<br>"); $num = mysql_num_rows($result); echo "<p><b>Zahl der Einträge: $num </b></p>"; echo "<table border=1><tr><th>Nachname</th><th>Vorname</th>": echo "<th>Mail-Adresse</th><th>Klassen-ID</th><th>User-ID</th></tr>"; for ($i=0; $i< $num; $i++) { $row= mysql_fetch_row($result); $ID = $row[0]; $Vorname = $row[1]; $Nachname = $row[2]; $KlassenID = $row[3]; $Mail = $row[4]; echo "<tr><td>$Nachname</td><td>$Vorname</td><td>$Mail</td>"; echo "<td>$KlassenID</td><td>$ID</td></tr>"; } echo "</table>"; mysql_close($conn_id); ?> Es ergibt sich : www.rudolf-web.de 26.01.2010 21/28

Kursstufe Informatik - Datenbanken

zu Aufgabe 9:
Die Datei show2.php: <html> <head> <title>Kommentare anzeigen</title> <link href="css/styles.css" rel="stylesheet" type="text/css" /> </head> <body> <h2 align="center">Klassen-Seite (mit einfacher MySQL Tabelle)</h2> <!--- Verbindung zu mySQL herstellen: ---> <?PHP include ("config.inc.php"); // enthält Verbindungsdaten zum MySQL Server $conn_id = mysql_connect($HOST,$ID,$PW); if (!$conn_id) die("Öffnen der DB ist gescheitert"); mysql_select_db($DB,$conn_id); $query = "SELECT * FROM tbl_klassen ORDER BY Klassenname ASC"; $result=mysql_query($query); if (mysql_errno()) die ("<br>" . mysql_errno()." : ".mysql_error()."<br>"); $num = mysql_num_rows($result); echo "<p><b>Zahl der Einträge: $num </b></p>"; echo "<table border=1><tr><th>Klassenname</th><th>Klassenlehrer</th>"; echo "<th>Klassen-ID</th></tr>"; for ($i=0; $i< $num; $i++) { $row= mysql_fetch_row($result); $ID = $row[0]; $Klassenname = $row[1]; $Klassenlehrer = $row[2]; echo "<tr><td>$Klassenname</td><td>$Klassenlehrer</td>"; echo "<td>$ID</td></tr>"; } echo "</table>"; mysql_close($conn_id); ?> </body> </html> Es ergibt sich:

www.rudolf-web.de

26.01.2010

22/28

Kursstufe Informatik - Datenbanken

zu Zusatz-Aufgabe 3:
<html><head><title>Tabellen verknüpfen</title> <link href="css/styles.css" rel="stylesheet" type="text/css" /> </head> <body> <h2 align="center">Relationale Daten (mit verlinkten MySQL Tabellen)</h2> <!--- Verbindung zu mySQL herstellen: ---> <?PHP include ("config.inc.php"); // enthält Verbindungsdaten zum MySQL Server $conn_id = mysql_connect($HOST,$ID,$PW); if (!$conn_id) die("Öffnen der DB ist gescheitert"); mysql_select_db($DB,$conn_id); // Anzeigen der Datensaetze: // dabei werden die beiden Tabellen tbl_user und tbl_klassen über den // Schlüssel KlassenID - ID verbunden: $query = "SELECT Vorname, Nachname, Klassenname, Klassenlehrer FROM tbl_user, tbl_klassen WHERE (tbl_user.KlassenID = tbl_klassen.ID) ORDER BY Klassenname, Nachname ASC"; $result=mysql_query($query); if (mysql_errno()) die ("<br>" . mysql_errno()." : ".mysql_error()."<br>"); $num = mysql_num_rows($result); echo "<b>Zahl der Einträge: $num </b><br><br>"; // Ausgabe jedes Records einzeln: echo "<table border=1><tr><th>Nachname</th><th>Vorname</th>"; echo "<th>Klassenname</th><th>Klassenlehrer</th></tr>"; for ($i=0; $i< $num; $i++) { $row= mysql_fetch_row($result); $Vorname = $row[0]; $Nachname = $row[1]; $Klasse = $row[2]; $Lehrer = $row[3]; echo "<tr>><td$Nachname</td><td>$Vorname</td>"; echo "<td>$Klasse</td><td>$Lehrer</td><td>$ID</td></tr>"; } echo "</table>"; mysql_close($conn_id); ?> </body></html> Ergibt:

www.rudolf-web.de

26.01.2010

23/28

Kursstufe Informatik - Datenbanken

zu Aufgabe 10:
<html><head> <title>Kommentare</title> <link href="css/styles.css" rel="stylesheet" type="text/css" /> </head> <body> <h2 align="center">Kommentar-Seite </h2> <!--- Verbindung zu mySQL herstellen: ---> <?PHP include ("config.inc.php"); // enthält Verbindungsdaten zum MySQL Server $conn_id = mysql_connect($HOST,$ID,$PW); if (!$conn_id) die("Öffnen der DB ist gescheitert"); mysql_select_db($DB,$conn_id); $UserID =$_POST[UserID]; $Kommentar = "$_POST[Komm]"; $sql = "INSERT INTO tbl_kommentare (UserID,Datum,Kommentar) VALUES ($UserID,NOW(),'$Kommentar')"; $result=mysql_query($sql); if (mysql_errno()) die ("<br>" . ?> </body></html> Beim Aufruf dieser Seite – über den Button „Absenden“ in add1.php – wird der Kommentar in tbl_kommentar eingetragen.

Zu Aufgabe 11:
Wir ergänzen den Teil von Aufgabe 10: // Anzeigen der Datensaetze: $query = "SELECT UserID, Datum, Kommentar FROM tbl_kommentare ORDER BY Datum DESC"; $result=mysql_query($query); if (mysql_errno()) die ("<br>" . mysql_errno()." : ".mysql_error()."<br>"); $num = mysql_num_rows($result); echo "<b>Zahl der Einträge: $num </b><br><br>"; // Ausgabe jedes Records einzeln: while ($row= mysql_fetch_row($result)) { if (mysql_errno()) die ("<br>" . mysql_errno(). " : ".mysql_error(). "<br>"); www.rudolf-web.de 26.01.2010 24/28

Kursstufe Informatik - Datenbanken $UserID = $row[0]; $Datum = $row[1]; $Kommentar = $row[2]; echo "<u>Von: $UserID</u> am $Datum :<br>"; echo "$Kommentar"; echo "<br><hr>"; } Das sieht dann so aus – wenn wir in add1.php den Kommentar eintragen, auf „Absenden“ klicken und dabei show4.php aufrufen:

Zu Aufgabe 12:
Wir ersetzen den Teil aus Aufgabe 11 durch: // Anzeigen der Datensaetze: // dabei werden die beiden Tabellen tbl_user und tbl_klassen über den Schlüssel KlassenID - ID verbunden: $query = "SELECT Vorname,Nachname, Klassenname, Datum, Kommentar FROM tbl_user, tbl_klassen, tbl_kommentare WHERE (tbl_user.KlassenID = tbl_klassen.ID AND tbl_user.ID=tbl_kommentare.UserID) ORDER BY Datum DESC"; $result=mysql_query($query); if (mysql_errno()) die ("<br>" . mysql_errno()." : ".mysql_error()."<br>"); $num = mysql_num_rows($result); echo "<b>Zahl der Einträge: $num </b><br><br>"; // Ausgabe jedes Records einzeln: while ($row= mysql_fetch_row($result)) { if (mysql_errno()) die ("<br>" . mysql_errno(). " : ".mysql_error(). "<br>"); $Vorname = $row[0]; $Nachname = $row[1]; $Klasse = $row[2]; $Datum = $row[3]; $Kommentar = $row[4]; www.rudolf-web.de 26.01.2010 25/28

Kursstufe Informatik - Datenbanken echo "<u>Von: $Vorname $Nachname</u> (Klasse: $Klasse) am $Datum :<br>"; echo "$Kommentar"; echo "<br><hr>"; } Das sieht dann so aus – wenn wir in add1.php den Kommentar eintragen, auf „Absenden“ klicken und dabei show4.php aufrufen:

zu Zusatzaufgabe 4:
Die Datei register.php: <html><head> <title>Formular zur Registrierung</title> <link href="css/styles.css" rel="stylesheet" type="text/css" /> </head><body> <h2 align="center">Nutzer-Registrierung</h2> <form action="showregister.php" method="post"> <b>Neuen Nutzer registrieren:</b> <p>Vorname: <input name="Vorname" type="text" size="30" maxlength="30"> Nachname: <input name="Nachname" type="text" size="30" maxlength="30"> </p><p>E-Mail: <input name="Mail" type="text" size="50" maxlength="50"> Klassen-ID: <input name="KlassenID" type="text" size="3" maxlength="3"> </p><p> Passwort: <input name="Passwort" type="text" size="10" maxlength="10"> <input type="submit" name="Eintrag" value="Registrieren"> <input type="reset" name="submit" value="Zurücksetzen"> </form> </body></html> Ergibt

www.rudolf-web.de

26.01.2010

26/28

Kursstufe Informatik - Datenbanken

Die Datei showregister.php: <html><head> <title>Nutzer-Registrierung</title> <link href="css/styles.css" rel="stylesheet" type="text/css" /> </head> <body> <h2 align="center">Nutzer-Registrierung</h2> <!--- Verbindung zu mySQL herstellen: ---> <?PHP include ("config.inc.php"); // enthält Verbindungsdaten zum MySQL Server $conn_id = mysql_connect($HOST,$ID,$PW); if (!$conn_id) die("Öffnen der DB ist gescheitert"); mysql_select_db($DB,$conn_id); $Vorname ="$_POST[Vorname]"; $Nachname ="$_POST[Nachname]"; $Mail ="$_POST[Mail]"; $KlassenID =$_POST[KlassenID]; $Passwort ="$_POST[Passwort]"; $sql = "INSERT INTO tbl_user (Vorname, Nachname, KlassenID, Mail, PW) VALUES ('$Vorname','$Nachname',$KlassenID,'$Mail','$Passwort')"; $result=mysql_query($sql); if (mysql_errno()) die ("<br>" . mysql_errno()." : ".mysql_error()."<br>"); $query = "SELECT ID FROM tbl_user
WHERE (Nachname='$Nachname') AND (Vorname='$Vorname') AND (PW='$Passwort')";

$result=mysql_query($query); $UserID=mysql_result($result,0); echo "<u>Der Nutzer $Vorname $Nachname</u> wurde unter"; echo "der UserID $UserID erfolgreich registriert!"; ?> </body></html> Das ergibt dann folgende Ausgabe:

zu Zusatzaufgabe 5:
<html><head><title>MySQL Tabelle ausgeben</title> <link href="css/styles.css" rel="stylesheet" type="text/css" /> www.rudolf-web.de 26.01.2010 27/28

Kursstufe Informatik - Datenbanken </head><body> <h2>Tabelle aus MySQL auslesen (selektiere Anzeige nach Nachname)</h2> <!---- Zusatzoption: Anzeige nur bestimmter Nachnamen ----> <form method="post"> Zeige alle Namen beginnend mit: <input type="text" name="startChar" size="3" value="(all)"> <input type="submit" value="zeige"> </form> <!--- Verbindung zu mySQL herstellen: ---> <?PHP include ("config.inc.php"); // enthält Verbindungsdaten zum MySQL Server $conn_id = mysql_connect($HOST,$ID,$PW); mysql_select_db($DB,$conn_id); // Anzeigen der Datensaetze: // checke erst ob via form ein Auswahlkriterium gesendet wurde $auswahl = @$_POST["startChar"]; if ($auswahl == "(all)") // alles soll angezeigt werden { $sql_where = ""; } else { $sql_where = " WHERE Nachname LIKE '$auswahl%' "; // nicht die Hochkommata vergessen ! } $query = "SELECT * FROM tbl_user $sql_where ORDER BY Nachname ASC"; // das ist lediglich ein String ! echo $query."<br>"; $result=mysql_query($query); // hier wird der String als SQL-Befehl interpretiert $num = mysql_num_rows($result); echo "<b>Zahl der Einträge: $num </b><br><br>"; // Ausgabe jedes Records einzeln: while ($row= mysql_fetch_row($result)) { $ID = $row[0]; $Vorname = $row[1]; $Nachname = $row[2]; $Mail = $row[4]; echo "Eintrag nr. $ID: $Vorname $Nachname<br>:"; echo "email: $Mail"; echo "<br><hr>"; } mysql_close($conn_id); ?> </body></html> und das ergibt:

Quellen:
PHP-Skripte , Idee und Konzeption: Christoph Sontag PHP-Tutorial: http://tut.php-q.net PHP-Handbuch: http://de.php.net/manual/de/preface.php PHP-Tutorial: http://www.admin-wissen.de/tutorials/eigene-tutorials/webentwicklung/php-tutorial/ www.rudolf-web.de 26.01.2010 28/28


				
DOCUMENT INFO