Ergänzungsfach Informatik Gymnasium Liestal / Dm Einstiegshilfe PHP und SQL verbinden 1. Vorbereitung: Registrieren Sie sich bei www.bplaced.net oder www.square7.ch (je 5-6 Schüler/innen) und merken Sie sich Benutzername(name1) und Passwort (pw1). Richten Sie dort eine mySQL Datenbank ein. Merken Sie sich Datenbankname (name2) und Passwort (pw2)! 2. Damit Sie nicht zu viel abtippen müssen, finden Sie einige Beispieldateien unter www.freifach.square7.ch als .txt (zum kopieren) und/oder als .php Dateien (zum ausprobieren). Dies geht besser als "copy/Paste aus diese Textdokument! a. Verbindung mit der Datenbank und erste Abfrage: Unterordner php&sql b. Einstieg ins Thema "Sessions: Unterordner BspSessionsBuch c. Etwas komplexeres Beispiel mit CSS: Unterordner "Deutschbücher". 3. Richten Sie bei bplaced.ch oder sqzare7.ch mit phpMyadmin vier Tabellen ein: kunden( mit Feldern id, name, vorname, ort), artikel (id, name, preis), bestellungen(id, id_kunde, id_artikel, anzahl, status) (siehe Übungen SQL) und dazu noch benutzer (id, name, passwort). Beachten Sie die genaue Schreibweise! 4. Empfohlenes "Tool" Editor: Notepad++ zu finden z.B. unter public/software meist mit ftp plugin ftp: Rechnername: name1.bplaced.net, Benutzername name1, ftp, passiv Variante: sonst notfalls separates ftp Programm wsftp oder fireftp als AddOn zu firefox installieren (Extras..) Variante: Weaverslave Editor oder Dreamweaver 5. Ganz zu Anfang sollten wir nochmals probieren, ob php funktioniert. Besorgen Sie sich die Beispieldatei test1.php im Order phptest von http://freifach.square7.ch als Textversion und kopieren Sie den Text in eine eigene .php Datei, die Sie dann auf ihren Server hochladen. 6. Dann muss zuerst die Verbindung zur Datenbank hergestellt werden: <?php $con=mysql_connect("localhost","name2","pw2") ; if (!$con) echo "Keine Verbindung"; else echo " Verbindung geschafft.<br>"; mysql_select_db("name2"); ?> Diese Datei als connect.inc.php abspeichern. Nicht vergessen, die eigenen Bezeichnungen name2, pw2 einzufügen! 7. Dann kann eine erste Abfrage der Datenbank, z.B. Tabelle benutzer probiert werden: <head> <title>First Query</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <body> <?php //Verbindung include "connect.inc.php"; //Abfrage: Wichtig der Datenbankname vor dem Tabellennamen, keine inneren '' $query="SELECT * FROM freifach.benutzer ";// $result = mysql_query($query); //Ausgabe $num=mysql_num_rows($result); if ($num>0) echo "$num Datensätze gefunden.<br>"; else echo "Leider liegen noch keine Angebote vor.<br>"; echo $result; //zu Testzwecken, so einfach geht es leider nicht. echo "<table>"; while($row= mysql_fetch_assoc($result)) { echo "<td>".$row[name]."</td>"; echo "<td>".$row[passwort]."</td>"; echo "</tr>"; } ?> </body> </html> Das ist die Datei first_query.php. Probieren und studieren! 8. Eine etwas ausführlichere Abfrage finden Sie unter dem Dateinamen second_query.php. Probieren und studieren! 9. Wenn ihr Webprojekt kein Login und deshalb keine Sessions benötigt, sind Sie hier schon fertig. Vielleicht möchten Sie besser mit .css formatieren, das gibt es ein Beispiel unter "Deutschbücher". 10. Jetzt am besten eine Vorübung zu Sessions studieren: (->BspSessionsBuch) uf80.php zeigt das Prinzip. uf81a.php bis uf81c.php (zusammen mit uf81.inc.php) zeigt, wie man ein Anmeldeformular macht (uf81a.php, Benutzername und Passwort siehe uf81b.php), wie kontrolliert wird, ob man zugangsberechtigt ist (uf81b.php) und wie eine "normale Seite der Site" aussieht (uf81c.php). Die Session bleibt solange bestehen, bis der Browser geschlossen wird oder beim logout mit session_destroy() beendet wird. Probieren und studieren! 11. Erst jetzt sollte die Datenbankabfrage mit der Session verbunden werden. Als Beispiel finden Sie bei freifach.square7.ch die Dateien im Ordner "Deutschbücher". Die lauffähige Version befindet sich unter http://dammer.bplaced.net/deutschbuecher/login.php Jetzt müsste man nur noch die php Dateien auf dem Server in einen mit .htaccess geschützten Ordner tun (damit das Datenbankpasswort nicht offen sichtbar ist) und schon ist alles (ziemlich) sicher. http://dammer.bplaced.net/deutschbuecher/login.php http://freifach.square7.ch