Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

INFORMATIK Dynamische Webseiten mit PHP [und Python] Thomas Mohr.

Ähnliche Präsentationen


Präsentation zum Thema: "INFORMATIK Dynamische Webseiten mit PHP [und Python] Thomas Mohr."—  Präsentation transkript:

1 INFORMATIK Dynamische Webseiten mit PHP [und Python] Thomas Mohr

2 I N F O R M A T I K 2 Beschränkung (X)HTML (X)HTML ist rein statisch, d.h. bei jedem Aufruf wird die gleiche Seite angezeigt. es kann nicht auf Benutzereingaben eingegangen werden. es gibt keine Abhängigkeit von der Aufrufumgebung (Uhrzeit, Sprache, Währung, etc.). Zur Erinnerung der Ablauf: Der Benutzer schickt eine http-Anfrage über seinen Browser an einen Webserver. Der Webserver sucht die entsprechende HTML-Datei lokal bei sich auf dem Dateisystem. Die HTML-Datei wird unverändert an den Browser zurückgegeben und dargestellt. eine Lösung: Skriptsprachen (PHP, Python, ASP, …) auf dem Server

3 I N F O R M A T I K 3 Abruf von Webseiten Webserver Web-Client mit Browser Webanfrage Datei.html HTML Internet Datei.html HTML HTML-Datei im Dateisystem

4 I N F O R M A T I K 4 Wie kommt die Seite auf den Server? Webserver Ftp-Server Internet PC HTML Programmieren der HTML-Datei HTML Übertragen der Datei mit ftp Web-Client Abrufen der Seite über http

5 I N F O R M A T I K 5 … und auf den Übungsrechnern? Webserver Programmieren der HTML-Datei HTML Abrufen der Seite über http Browser

6 I N F O R M A T I K 6 Verzeichnisstruktur Apache-Webserver In der Standard-Installation von xampp liegen die HTML-Dateien im Unterverzeichnis htdocs. Weitere (virtuelle) Web-Verzeichnisse können in der Konfigurationsdatei angelegt werden. xampplite apache htdocs bin conf logs mysql wb Basisverzeichnis des Webservers (Webserver-Programm) php.ini, um Einstellungen für PHP zu ändern Konfiguration des Webservers in httpd.conf (z.B. Anlegen weiterer Verzeichnisse) Logdateien des Webservers (Zugriffe / Fehler) Standardverzeichnis für HTML-Dateien Bitte Anlegen, um eigene HTML-Dateien abzulegen. Verzeichnis der MySQL-Datenbank (auch der Datenbanken selbst)

7 I N F O R M A T I K 7 Was ist PHP? PHP (rekursives Akronym für PHP: Hypertext Preprocessor) ursprünglich Personal Home Page Tools PHP ist eine Skriptsprache, d.h. man braucht ein spezielles Programm (Interpreter), um das PHP- Programm auszuführen (Bestandteil des XAMPP-Paketes). dient hauptsächlich zur Erstellung dynamischer Webseiten, d.h. die Webseite kann sich bei jedem Aufruf verändern. ist Open-Source-Software, d.h. die Software ist kostenlos. die Software darf von jedem weiter entwickelt werden und unter der gleichen Lizenz weitergegeben werden.

8 I N F O R M A T I K 8 PHP erweitert HTML Mit PHP kann HTML so erweitert werden, dass Anteile der HTML-Seite erst beim Aufruf eingefügt werden. z.B. das aktuelle Datum oder die Uhrzeit auf Benutzereingaben reagiert wird. Inhalte von Datenbanken abgerufen werden können. … PHP wird in der HTML-Datei programmiert. Der Webserver besitzt ein besonderes Programm, den PHP- Interpreter, der das PHP-Programm im HTML ausführt. Die Ausgabe des PHP-Programms wird in die HTML-Datei eingefügt.

9 I N F O R M A T I K 9 PHP erweitert HTML Webserver Web-Client mit Browser Datei.php HTML Webanfrage Datei.php HTML PHP- Interpreter Internet Datei.php HTML & PHP PHP-Datei im Dateisystem

10 I N F O R M A T I K 10 Trennung HTML - PHP PHP-Bereiche im HTML werden durch eine bestimmte Schreibweise (Syntax) vom eigentlichen HTML-Code getrennt. Aktuelles Datum PHP-Bereich innerhalb einer HTML-Datei. Vom PHP-Bereich auf dem Server erzeugte Ausgabe (reiner HTML-Code). Aktuelles Datum Datum: 14. Nov 2008 PHP- Interpreter Browser (HTML-Interpreter) Im Browser angezeigte HTML-Seite.

11 I N F O R M A T I K 11 Anweisungen abgrenzen PHP-Programme bestehen in der Regel aus mehreren Anweisungen für den Interpreter Die Anweisungen werden nacheinander (sequentiell) ausgeführt. Ein Semikolon schließt jede Anweisung ab. In der Regel sollte nur eine Anweisung in einer Zeile stehen. Ein PHP-Beispiel Zwei PHP-Anweisungen zur Ausgabe eines Textes Ein PHP-Beispiel Mein erstes PHP-Programm...mit zwei Anweisungen PHP- Interpreter Hier wurden auch HTML-Tags durch PHP erzeugt.

12 I N F O R M A T I K 12 Dynamische Inhalte Welche Uhrzeit wird am Client angezeigt? Webserver Web-Client mit Browser Webanfrage Datei.php HTML Datei.php HTML & PHP Standort: Atlanta USA Uhrzeit: 2:20 am Standort: Speyer Uhrzeit: 9:20 Uhr Da die PHP-Datei in Atlanta umgewandelt wird, wird auch die Zeit des Webservers eingesetzt, also 2:20 am.

13 I N F O R M A T I K 13 Variablen Variablen können Werte zugewiesen werden. ausgelesen werden. Variablen in PHP Text: Hallo Welt! Zahl: PHP- Interpreter Variablen in PHP Namen von Variablen beginnen immer mit einem $-Zeichen. Zwei Varianten zur Ausgabe

14 I N F O R M A T I K 14 Bedingte Ausführung – Struktogramm Abhängig von der Uhrzeit soll die Homepage Vormittag oder Nachmittag anzeigen. Den Ablauf des Programms kann man sich im Struktogramm klarmachen. $Zeit : = aktuelle Uhrzeit $Stunde : = Stundenanteil(Zeit) Wenn ($Stunde < 12) JaNein Ausgabe: VormittagAusgabe: Nachmittag

15 I N F O R M A T I K 15 Bedingte Ausführung – If-Anweisung Sollen Programmteile nur unter bestimmten Bedingungen ausgeführt werden, so kommt die if- Anweisung zum Einsatz: Anweisungsblock, falls Bedingung erfüllt (falls es vor 12 Uhr ist). Anweisungsblock, falls Bedingung nicht erfüllt (falls es nach 12 Uhr ist). kann auch entfallen if (Bedingung) {Anweisungen} else {Anweisungen}

16 I N F O R M A T I K 16 Bedingte Ausführung – If-Anweisung Beispiel Programmfluss – abgearbeitete Anweisungen vor 12 Uhr: Überspringe Anweisungen im else -Block

17 I N F O R M A T I K 17 Bedingte Ausführung – If-Anweisung Beispiel Programmfluss – abgearbeitete Anweisungen nach 12 Uhr: Überspringe Anweisungen im if -Block

18 I N F O R M A T I K 18 Bedingte Ausführung – Komplexere Bedingungen Soll ein Programmteil nur dann ausgeführt werden, wenn z.B. mehrere Bedingungen erfüllt sind, so können diese durch spezielle Zeichen (Operatoren) miteinander verbunden werden. Zwei (oder mehr) Bedingungen müssen gleichzeitig erfüllt werden (UND-Verknüpfung): if ( ($Stunde>=12) and ($Stunde<18) ) { echo Guten Tag; } Mindestens eine von mehreren Bedingungen muss erfüllt sein (ODER-Verknüpfung): if ( ($Stunde>20) or ($Stunde<6) ) { echo Ziemlich spät heute...; }

19 I N F O R M A T I K 19 Kommentare Wie in HTML können / sollen Kommentare benutzt werden, um die Funktionsweise eines PHP-Programms zu beschreiben: Einzeilige Kommentare Es können auch ganze Bereiche als mehrzeilige Kommentare markiert werden. z.B. um ein Stück PHP-Programm zeitweise außer Betrieb zu setzen.

20 I N F O R M A T I K 20 Kommentare Wie wird die HTML-Datei im Browser aussehen? Viele Kommentare ... sind wichtig! Viele Kommentare … sind wichtig!

21 I N F O R M A T I K 21 Fallunterscheidung Sollen mehrere einfache Werte abgefragt werden, so kann statt einer mehrfachen Bedingung eine sog. Fallunterscheidung angewendet werden: $WTag=0 JaNein $s= "Sonntag" - / - $WTag=1 JaNein $s= "Montag" - / - $WTag=2 JaNein $s= "Dienstag" - / - $WTag=3 JaNein $s= "Mittwoch" - / - $WTag 0123 $s="Sonntag"$s="Montag"$s="Dienstag"$s="Mittwoch" … …

22 I N F O R M A T I K 22 Fallunterscheidung Allgemein: Es können nur einfache Werte abgefragt werden, keine komplexen Bedingungen. Mehrere Werte können zusammengefasst werden. Es kann eine Alternative angegeben werden, wenn keiner der Fälle zutrifft Einzelne FälleAusnahme Selektor (Variable oder Rechenausdruck) Werte $MSSPunkte 15,14,1312,11,109,8,46,5,4 $s="sehr gut" $s="gut"$s="befriedi gend" $s="ausreich end" sonst $s="nicht bestanden"

23 I N F O R M A T I K 23 PHP – Fallunterscheidung In PHP wird die Fallunterscheidung mit der switch … case - Anweisung programmiert werden. Bsp.: switch ($MSSPunkte) { case 15: case 14: case 13: $s="sehr gut"; break; case 12: case 11: case 10: $s="gut"; break; default: $s="nicht bestanden"; } $MSSPunkte 15,14,1312,11,109,8,46,5,4 $s="sehr gut" $s="gut"$s="befriedi gend" $s="ausreich end" sonst $s="nicht bestanden"

24 I N F O R M A T I K 24 Veränderung der Zählvariable Name und Anfangswert der Zählvariable Bedingung, ob die Schleife wiederholt wird. $i=1; $Summe=0; while ($i<=20) { $Summe=$Summe+$i; $i=$i+1; } PHP – Schleifen Soll ein Block von Anweisungen mehrfach ausgeführt werden, so werden sog. Iterationen (Schleifen) verwendet. Eine Zählvariable zählt dabei die Anzahl der Schleifendurchläufe. Beispiel – while-Schleife: Schleifenrumpf mehrfach ausgeführt $Summe=$Summe+$i; Solange $i<=20 $Summe = 0 $i=$i+1 $i = 1

25 I N F O R M A T I K 25 Schleifen Programmablauf Die Zählvariable $i wird mit 1 begonnen (initialisiert) Bei jedem Durchlauf wird $i um eins erhöht. Nach dem 20. Durchlauf wird $i wieder um eins erhöht. Damit ist $i nun 21 und die Bedingung ist nicht mehr erfüllt. Die Schleife bricht ab und das Programm läuft nach der Schleife weiter. $i=1; $Summe=0; while ($i<=20) { $Summe=$Summe+$i; $i=$i+1; } $i :1 $i = $i +1 $i :2 $i = $i +1 $i :20 $i = $i $i :21

26 I N F O R M A T I K 26 Schleifen Soll ein Block von Anweisungen mehrfach ausgeführt werden, so werden sog. Iterationen (Schleifen) verwendet. Eine Zählvariable zählt dabei die Anzahl der Schleifendurchläufe. Beispiel – for-Schleife: Beispiel: $Summe=0; for ($i=1; $i<=20; $i=$i+1) { $Summe = $Summe + $i; echo " $i: $Summe "; } Schleifenrumpf, der mehrfach ausgeführt wird. for ($i=1; $i<=20; $i=$i+1) Name und Anfangswert der Zählvariable Bedingung, ob die Schleife wiederholt wird. Veränderung der Zählvariable nach einem Durchlauf

27 I N F O R M A T I K 27 Schleife Programmablauf Bei jedem Durchlauf wird $i um eins erhöht. Nach dem 20. Durchlauf wird $i wieder um eins erhöht. Damit ist $i nun 21 und die Bedingung ist nicht mehr erfüllt. Die Schleife bricht ab und das Programm läuft nach der Schleife weiter. Was berechnet die Schleife? $Summe=0; for ($i=1; $i<=20; $i=$i+1) { echo " Durchlauf: $i "; $Summe = $Summe + $i; echo " Summe: $Summe "; } $i :1 $i = $i +1 $i :2 $i = $i +1 $i :20 $i = $i $i :21 Die Summe der ersten 20 Zahlen.

28 I N F O R M A T I K 28 Funktionen Solange $x<=10 $x = 0 $x=$x+0.5 $y=f($x) Name der Funktion Wert(e), der an die Funktion übergeben wird. Aufrufendes Programm Funktion (Unterprogramm) Wert, der zurückgegeben wird function f($eingabe) { $rueckgabe= $eingabe*$eingabe; return $rueckgabe; } $x=0; while ($x<=10) { $y=f($x); echo "$y "; $x= $x+1; }

29 I N F O R M A T I K 29 Übungen Endlich – Sie sind dran!

30 I N F O R M A T I K 30 Eingaben?? - Formulare in HTML Die Eingabe von Werten durch einen Benutzer ist mit den bisherigen Mitteln in HTML nicht möglich. Dazu dienen sog. Formulare in HTML, deren Werte dann in PHP ausgelesen werden können. Der Ablauf ist vergleichbar z.B. dem Beantragen eines Bibliotheksausweises: Man bekommt ein Formular ausgehändigt. Das Formular wird vom neuen Bibliotheksbenutzer ausgefüllt. Der Benutzer gibt das Formular zurück. Das Formular wird ausgewertet und das Ergebnis (der Ausweis) wird an den Benutzer ausgegeben.

31 I N F O R M A T I K 31 Exkurs – Formulare in der realen Welt Formulare Formular Frage nach Formular Harry Potter Ausgabe des Ausweises Ausfüllen von Daten Auswerten der Daten BibliothekBenutzer Gib ausgefülltes Formular zurück Verarbeitung Herr Potter! Bibliotheksausweis Ausweis #4711

32 I N F O R M A T I K 32 Formulare in HTML Formular.html HTML Verarbeitung.php HTML & PHP WebserverWeb-Client Formular.html Rufe Eingabe-Seite auf Rufe Verarbeitungsseite auf und übergebe Eingabedaten Harry Potter Ergebnis der Verarbeitung Verarbeitung.php Eingabe von Daten Auswerten der Daten Herr Potter! Kunde #4711

33 I N F O R M A T I K 33 Formulare in HTML Das Formular erfordert spezielle HTML-Tags (PHP ist für das Eingabeformular nicht notwendig). Bsp.: Verarbeitungsseite Formularblock Text-Eingabefeld mit Namen Benutzer Button zum Aufruf Verarbeitungsseite

34 I N F O R M A T I K 34 Formulare in HTML Die eingegebenen Daten können in der Verarbeitungsseite im PHP-Interpreter ausgewertet werden: Für jedes Eingabefeld ist der eingegebene Wert in einer Variablen mit dem Namen des Eingabefeldes gespeichert. Formular.html Verarbeitung.php

35 I N F O R M A T I K 35 Übungen Learning by doing…

36 I N F O R M A T I K 36 Vernetzung des Themas Dynamische Webseiten (z.B. mit PHP) bieten sich ideal an, Themen zu vernetzen: Darstellung von Informationen mit XHTML und CSS. Algorithmisches Problemlösen. In Teilen: Kommunikation in Rechnernetzen (Protokolle, …) … und nicht zuletzt: Datenbanken Datenbanken sind gut geeignet, um für dynamische Webseiten als Datenbasis genutzt zu werden.

37 I N F O R M A T I K 37 Zugriff auf MySQL über PHP Grundlegende Schritte jedes Datenbankzugriffs in PHP: 1.Verbindung mit dem Datenbanksystem aufbauen Ergebnis der Verbindung ist eine Variable (Handle), mit der auf die Verbindung zugegriffen werden kann. Fehler sollten (gerade hier) abgefangen (PHP-Konstrukt or die) und ausgegeben werden. 2.Datenbank auswählen $link = mysql_connect($Host, $Benutzer, $Passwort) or die("DB-Verbindung unmöglich: ". mysql_error()); mysql_select_db($Datenbank) or die("Auswahl Datenbank unmöglich: ". mysql_error());

38 I N F O R M A T I K 38 Zugriff auf MySQL über PHP 3.Abfrage ausführen Ergebnis ist eine Variable (Handle), mit der auf das Resultat der Anfrage zugegriffen werden kann. 4.Ergebnisse ausgeben Grundlegendes Problem Programmiersprachen sind iterativ relationale Datenbanken (und damit SQL) sind mengenorientiert Speicherung und Durchlaufen der Ergebnisse notwendig Für das Abrufen der Ergebnisse gibt es drei wesentliche Varianten: i.Array ii.Assoziatives Array iii.Objektorientiert 5.Freigabe der Handles (kann entfallen) $result = mysql_query($SQLText) or die("Anfrage fehlgeschlagen: ". mysql_error()); mysql_free_result($result); mysql_close($link);

39 I N F O R M A T I K 39 Zugriff auf eine Spalte der Ergebniszeile Auslesen und Speichern einer Ergebniszeile als Array Zugriff auf MySQL über PHP Ausgabe der Ergebnisse als Array mysql_fetch_array liefert eine komplette Zeile des Ergebnisses als Array (Alternative: mysql_fetch_row ) Nach der letzten Zeile wird FALSE zurückgegeben while ($arrRow = mysql_fetch_array($result)) { echo "$arrRow[0] : $arrRow[1]"; } Schleife über alle Zeilen des Ergebnisses

40 I N F O R M A T I K 40 Zugriff auf eine Spalte der Ergebniszeile Auslesen und Speichern einer Ergebniszeile als Array Schleife über alle Zeilen des Ergebnisses Zugriff auf MySQL über PHP Ausgabe der Ergebnisse als assoziatives Array mysql_fetch_array liefert auch ein assoziatives Array, d.h. es kann über die Spaltennamen zugegriffen werden. Problem: Spaltennamen müssen eindeutig sein while ($arrRow = mysql_fetch_array($result)) { echo "$arrRow[Land] : $arrRow[Sprache]"; }

41 I N F O R M A T I K 41 Zugriff auf eine Spalte der Ergebniszeile Auslesen und Speichern einer Ergebniszeile als objekt Zugriff auf MySQL über PHP Ausgabe der Ergebnisse als Objekt mysql_fetch_object liefert eine komplette Zeile des Ergebnisses als Objekt Nach der letzten Zeile wird FALSE zurückgegeben while ($oRow = mysql_fetch_object($result)) { echo "$oRow->Land : $oRow->Sprache"; } Schleife über alle Zeilen des Ergebnisses

42 I N F O R M A T I K 42 Zugriff auf MySQL über PHP Weitere interessante Funktionen: mysql_num_rows($result) Gibt die Anzahl der Zeilen (Datensätze) im Ergebnis aus. mysql_num_fields($result) Gibt die Anzahl der Spalten im Ergebnis aus. mysql_field_name($result, 0) Name eines Feldes im Ergebnis. mysql_affected_rows() Liefert die Anzahl betroffener Datensätze einer vorhergehenden MySQL Operation wie z.B. DELETE, UPDATE Vereinfachung: Herstellen der Verbindung / Datenbankauswahl in einer separaten Include-Datei, die immer wieder verwendet werden kann. include "_DBVerbindung.inc" ;

43 I N F O R M A T I K 43 Vernetzung des Themas - Grenzen von SQL Problem: Verfolgen eines Flusslaufes von der Quelle zum Meer z.B. Spree Hier werden iterative Strukturen benötigt, die SQL (als mengen- orientierte Sprache) im Standard nicht bietet. Anknüpfung an Programmierung PHP, Delphi, Java Rhein Mosel Main Neckar Donau Isar Inn Fulda Werra Weser Elbe Havel Spree Aller Elbe Havel Spree Nordsee

44 I N F O R M A T I K 44 Vernetzung des Themas - Grenzen von SQL Problem: Verfolgen eines Flusslaufes vom Meer zu den Zuflüssen z.B. Nordsee Beispiel für eine (elegante?) rekursive Programmierung Rhein Mosel Main Neckar Donau Isar Inn Fulda Werra Weser Elbe Havel Spree Aller Nordsee Rhein Mosel Main Neckar Fulda Werra Weser Aller Elbe Havel Spree Nordsee

45 I N F O R M A T I K 45 PHP und Datenbanken – Aufgaben 1.Erstellen Sie php-Anzeigeseiten für die Datenbank miniterra. Verwenden Sie dazu Abfragen aus dem SQL-Teil. 2.Erstellen Sie eine Abfrage, bei der der Kontinent eingegeben werden kann (HTML-Formular). Es werden dann alle Länder des Kontinents ausgegeben. 3.Geben Sie die Länder mit ihren Kontinenten aus. Es sollen Links in jeder Spalte sein, die eine Sortierung erlauben. 4.Geben Sie den Verlauf eines Flusses bis zur Mündung aus. (Achtung: evtl. Rekursion!)

46 I N F O R M A T I K 46 Was kann PHP noch? Alle wichtigen Konstrukte sind vorhanden Verschiedene Schleifenformen (auch für assoziative Arrays) Prozeduren / Funktionen Klassen Exceptions etc. Strukturierung eines Projekts includes Aus der PHP-Dokumentation

47 I N F O R M A T I K 47 Vorteile / Nachteile von PHP PHP ist eine Skriptsprache Einfachere Erlernbarkeit (?) Keine Notwendigkeit der Variablendefinitionen, etc. ( oder ?) Dennoch auch komplexere Programmierkonzepte (z.B. Klassen, Exceptions) möglich PHP kann einfach in HTML eingebunden werden. Da HTML bekannt ist, muss die Ausgabe (Grafik, etc.) nicht behandelt werden. Ergebnisse sind schnell sichtbar. Es muss kein weiteres Programm (IDE) erlernt werden. Schüler sind leicht zu motivieren, da außenwirksame (Homepage) Projekte eingebracht werden. Es existiert kaum eine gute Möglichkeit des Debuggings. Umfangreichere Projekte werden leicht unübersichtlich. Vermischung von zwei Sprachen (HTML / PHP) erschwert den Zugang. (Alternative: PHP zur Shell-Programmierung)

48 I N F O R M A T I K 48 Vorteile / Nachteile von PHP PHP ist Open-Source-Software In vielen Webpaketen der Provider verfügbar und damit für die Schüler auch außerhalb der Schule leicht verfügbar. Kein finanzielles Problem bei Anschaffung an der Schule. Ängste bei etablierten Kollegen bzgl. der Wartbarkeit und Weiterentwicklung einer nicht-kommerziellen Software. …

49 I N F O R M A T I K 49 Internet-Referenzen Installation Apache / PHP / mySQL als Paket (XAMPP) PHP-Dokumentation: Weitere PHP-Quellen PHP für Einsteiger WikiBook PHP für dich (Einsteiger) …

50 I N F O R M A T I K 50 Geht es auch mit Python? Eine Möglichkeit, der Einbindung von PHP sehr ähnlich: Erweiterung für Apache: Spyce (http://spyce.sourceforge.net/)http://spyce.sourceforge.net/ Python-Zugriff auf MySQL: MySQL-Python Bibliothek (http://sourceforge.net/projects/mysql-python/)http://sourceforge.net/projects/mysql-python/ Rudimentäre Installationsanleitung / Beispiele in den Unterlagen Kugeluhr [[\ from time import * lt = localtime() Stunde = lt[3] Minute = lt[4] print " Es ist %02i:%02i Uhr. " % (Stunde, Minute) i=1 while i<=Stunde: if (i%10)==0: print " " else: print " " i=i+1 ]]

51 INFORMATIK Dynamische Webseiten mit PHP [und Python] Thomas Mohr


Herunterladen ppt "INFORMATIK Dynamische Webseiten mit PHP [und Python] Thomas Mohr."

Ähnliche Präsentationen


Google-Anzeigen