Powerpoint-Präsentation

 Datenbank

 15 views
of 44
All materials on our website are shared by users. If you have any questions about copyright issues, please report us to resolve them. We are always happy to assist you.
Description
Dynamische Webseiten mit PHP [und Python] Thomas Mohr I N F O R M A T I K Beschränkung (X)HTML ã (X)HTML ist rein „statisch“, d.h. K  bei jedem Aufruf…
Share
Transcript
Dynamische Webseiten mit PHP [und Python] Thomas Mohr I N F O R M A T I K Beschränkung (X)HTML • (X)HTML ist rein „statisch“, d.h. K  bei jedem Aufruf wird die gleiche Seite angezeigt. I  es kann nicht auf Benutzereingaben eingegangen werden.  es gibt keine Abhängigkeit von der Aufrufumgebung T (Uhrzeit, Sprache, Währung, etc.). A • Zur Erinnerung der Ablauf: M  Der Benutzer schickt eine http-Anfrage über seinen Browser an einen R Webserver.  Der Webserver sucht die entsprechende HTML-Datei lokal bei sich auf O dem Dateisystem. F  Die HTML-Datei wird unverändert an den Browser zurückgegeben und dargestellt. N • eine Lösung: I Skriptsprachen (PHP, Python, ASP, …) auf dem Server 2 K I T Abruf von Webseiten Webanfrage A HTML-Datei http://server.com/Datei.html im Dateisystem HTML M HTML Web-Client Datei.html R Webserver mit Browser Datei.html O F N I Internet 3 K Wie kommt die Seite auf den Server? „Programmieren“ der HTML-Datei I HTML PC T A HTML M R Webserver Ftp-Server O Abrufen der Seite über http F Web-Client N I Web-Client 4 Internet Web-Client K I … und auf den Übungsrechnern? „Programmieren“ T der HTML-Datei A HTML M R Webserver O Abrufen der Seite über http F Browser N I 5 Verzeichnisstruktur Apache-Webserver • In der Standard-Installation von xampp liegen die HTML-Dateien K im Unterverzeichnis htdocs. I  Weitere (virtuelle) Web-Verzeichnisse können in der Konfigurationsdatei angelegt werden. T xampplite A M apache Basisverzeichnis des Webservers (Webserver-Programm) R bin php.ini, um Einstellungen für PHP zu ändern Konfiguration des Webservers in httpd.conf O conf (z.B. Anlegen weiterer Verzeichnisse) F logs Logdateien des Webservers (Zugriffe / Fehler) N htdocs Standardverzeichnis für HTML-Dateien I wb Bitte Anlegen, um eigene HTML-Dateien abzulegen. mysql Verzeichnis der MySQL-Datenbank (auch der Datenbanken selbst) 6 Was ist PHP? • PHP (rekursives Akronym für „PHP: Hypertext Preprocessor“) K  ursprünglich „Personal Home Page Tools“ I • PHP T  ist eine Skriptsprache, A • d.h. man braucht ein spezielles Programm (Interpreter), um das PHP- Programm auszuführen (Bestandteil des XAMPP-Paketes). M  dient hauptsächlich zur Erstellung „dynamischer“ Webseiten, R • d.h. die Webseite kann sich bei jedem Aufruf verändern.  ist „Open-Source“-Software, d.h. O • die Software ist kostenlos . F • die Software darf von jedem weiter entwickelt werden und unter der gleichen Lizenz weitergegeben werden. N I 7 PHP erweitert HTML • Mit PHP kann HTML so erweitert werden, dass K  Anteile der HTML-Seite erst beim Aufruf eingefügt werden. I • z.B. das aktuelle Datum oder die Uhrzeit  auf Benutzereingaben reagiert wird. T  Inhalte von Datenbanken abgerufen werden können. A  … M • PHP wird in der HTML-Datei „programmiert“. R  Der Webserver besitzt ein besonderes Programm, den PHP- Interpreter, der das PHP-Programm im HTML ausführt. O  Die Ausgabe des PHP-Programms wird in die HTML-Datei eingefügt. F N I 8 K PHP erweitert HTML HTML I PHP-Datei im & Dateisystem PHP T Datei.php Webanfrage A http://server.com/Datei.php M PHP- Interpreter Web-Client HTML R Webserver mit Browser Datei.php O HTML F Datei.php N I Internet 9 Trennung HTML - PHP • PHP-Bereiche im HTML werden durch eine bestimmte K Schreibweise (Syntax) vom eigentlichen HTML-Code getrennt. I

Aktuelles Datum

T HTML-Datei. M

PHP- R Interpreter O

Aktuelles Datum

Vom PHP-Bereich auf dem Server F Datum: 14. Nov 2008 erzeugte Ausgabe (reiner HTML-Code).

N Browser (HTML-Interpreter) I Im Browser angezeigte HTML-Seite. 10 Anweisungen abgrenzen • PHP-Programme bestehen in der Regel aus mehreren K Anweisungen für den Interpreter I  Die Anweisungen werden nacheinander (sequentiell) ausgeführt.  Ein Semikolon schließt jede Anweisung ab. T • In der Regel sollte nur eine Anweisung in einer Zeile stehen. A M

Ein PHP-Beispiel

Mein erstes PHP-Programm"; Zwei PHP-Anweisungen echo "

...mit zwei Anweisungen

"; zur Ausgabe eines Textes O ?> F PHP- Interpreter N

Ein PHP-Beispiel

I

Mein erstes PHP-Programm

...mit zwei Anweisungen

Hier wurden auch HTML-Tags durch PHP erzeugt. 11 „Dynamische“ Inhalte • Welche Uhrzeit wird am Client angezeigt? K I Webanfrage http://server.com/Datei.php T HTML & A PHP HTML Web-Client Webserver Datei.php mit Browser M Datei.php R Standort: Atlanta USA Standort: Speyer Uhrzeit: 2:20 am Uhrzeit: 9:20 Uhr O F Da die PHP-Datei in Atlanta umgewandelt wird, wird auch die Zeit N des Webservers eingesetzt, also 2:20 am. I 12 Variablen • Variablen können K  Werte zugewiesen werden. I

Variablen in PHP

M  ausgelesen werden. R Text: $MeinText

"; O echo '

Zahl: ' . $Zahl . '

'; Zwei Varianten zur Ausgabe ?> F PHP- N Interpreter I

Variablen in PHP

Text: Hallo Welt!

Zahl: 4711.0815

13 Bedingte Ausführung – Struktogramm • Abhängig von der Uhrzeit soll die Homepage „Vormittag“ oder K „Nachmittag“ anzeigen. I  Den Ablauf des Programms kann man sich im Struktogramm klarmachen. T A M $Zeit : = aktuelle Uhrzeit R $Stunde : = Stundenanteil(Zeit) Wenn ($Stunde < 12) O F Ja Nein N Ausgabe: „Vormittag“ Ausgabe: „Nachmittag“ I 14 Bedingte Ausführung – If-Anweisung • Sollen Programmteile nur unter bestimmten Bedingungen K ausgeführt werden, so kommt die if-Anweisung zum Einsatz: I if (Bedingung) {Anweisungen} else {Anweisungen} T A M  kann auch entfallen 15 Kommentare • Wie in HTML können / sollen Kommentare benutzt werden, um K die Funktionsweise eines PHP-Programms zu beschreiben: I  Einzeilige Kommentare T M R  Es können auch ganze Bereiche als mehrzeilige Kommentare markiert werden. O • z.B. um ein Stück PHP-Programm zeitweise „außer Betrieb zu setzen“. F 19 Kommentare • Wie wird die HTML-Datei im Browser aussehen? K I

Viele Kommentare

A

... sind wichtig!

O F N I Viele Kommentare … sind wichtig! 20 PHP – Schleifen • Soll ein Block von Anweisungen mehrfach ausgeführt werden, so K werden sog. Iterationen (Schleifen) verwendet. I  Eine „Zählvariable“ zählt dabei die Anzahl der Schleifendurchläufe.  Beispiel – while-Schleife: T Name und A Anfangswert Bedingung, ob der Zählvariable die Schleife M wiederholt wird. R $i = 1 $Summe = 0 $i=1; O $Summe=0; Solange $i<=20 F while ($i<=20) $i=$i+1 { Schleifenrumpf N $Summe=$Summe+$i; $Summe=$Summe+$i; $i=$i+1; mehrfach ausgeführt } I Veränderung der Zählvariable 24 Schleifen • Programmablauf K  Die Zählvariable $i wird mit 1 begonnen („initialisiert“) I  Bei jedem Durchlauf wird $i um eins erhöht.  Nach dem 20. Durchlauf wird $i wieder um eins erhöht. T • Damit ist $i nun 21 und die Bedingung ist nicht mehr erfüllt. A Die Schleife bricht ab und das Programm läuft nach der Schleife weiter. M R $i=1; $Summe=0; O $i= $i +1 $i= $i +1 $i=$i +1 while ($i<=20) $i:21 $i:20 ... F $i:1 $i:2 { $Summe=$Summe+$i; N $i=$i+1; } I 25 Schleifen • Soll ein Block von Anweisungen mehrfach ausgeführt werden, so K werden sog. Iterationen (Schleifen) verwendet. I  Eine „Zählvariable“ zählt dabei die Anzahl der Schleifendurchläufe.  Beispiel – for-Schleife: T for ($i=1; $i<=20; $i=$i+1) A M Name und Bedingung, ob Veränderung der Anfangswert die Schleife Zählvariable nach R der Zählvariable wiederholt wird. einem Durchlauf  Beispiel: O F $Summe=0; for ($i=1; $i<=20; $i=$i+1) N { $Summe = $Summe + $i; Schleifenrumpf, der echo "

$i: $Summe

"; I mehrfach ausgeführt wird. } 26 Funktionen $x = 0 K Solange $x<=10 I $y=f($x) T $x=$x+0.5 A Wert(e), der an die Name der Funktion übergeben M Funktion wird. R $x=0; function f($eingabe) O while ($x<=10) { { $rueckgabe= $eingabe*$eingabe; F $y=f($x); echo "$y
"; return $rueckgabe; N $x= $x+1; } } I Wert, der Aufrufendes Funktion zurückgegeben wird Programm (Unterprogramm) 28 K Übungen Endlich – Sie sind dran! I T A M R O F N I 29 Eingaben?? - Formulare in HTML • Die Eingabe von Werten durch einen Benutzer ist mit den K bisherigen Mitteln in HTML nicht möglich. I  Dazu dienen sog. Formulare in HTML, deren Werte dann in PHP ausgelesen werden können. T  Der Ablauf ist vergleichbar z.B. dem Beantragen eines Bibliotheksausweises: A • Man bekommt ein Formular ausgehändigt. M • Das Formular wird vom neuen Bibliotheksbenutzer ausgefüllt. • Der Benutzer gibt das Formular zurück. R • Das Formular wird ausgewertet und das Ergebnis (der Ausweis) wird an den Benutzer ausgegeben. O F N I 30 K Exkurs – Formulare in der „realen“ Welt Frage nach Formular I T Harry Potter von Daten Ausfüllen A Formulare M Formular R O F Auswerten der Daten Herr Potter! Verarbeitung N Ausgabe des Ausweises Ausweis #4711 I Bibliotheksausweis 31 Bibliothek Benutzer K Formulare in HTML Rufe Eingabe-Seite auf I HTML T Harry Potter von Daten Formular.html Eingabe A M Formular.html R O HTML & F PHP Auswerten der Daten Herr Potter! Verarbeitung.php N Ergebnis der Verarbeitung Kunde #4711 I Verarbeitung.php 32 Webserver Web-Client Formulare in HTML • Das Formular erfordert spezielle HTML-Tags K  (PHP ist für das Eingabeformular nicht notwendig). I • Bsp.: T Verarbeitungsseite A M
R ... Text-Eingabefeld Formularblock O mit Namen „Benutzer“ F ... Button zum Aufruf N Verarbeitungsseite
I 33 Formulare in HTML • Die eingegebenen Daten können in der Verarbeitungsseite im K PHP-Interpreter ausgewertet werden: I  Für jedes Eingabefeld ist der eingegebene Wert in einer Variablen mit dem Namen des Eingabefeldes gespeichert. T
A M
R Formular.html O F N Verarbeitung.php 34 K Übungen Learning by doing… I T A M R O F N I 35 Vernetzung des Themas • Dynamische Webseiten (z.B. mit PHP) bieten sich ideal an, K Themen zu vernetzen: I  Darstellung von Informationen mit XHTML und CSS.  Algorithmisches Problemlösen. T  In Teilen: Kommunikation in Rechnernetzen (Protokolle, …) A M  … und nicht zuletzt: Datenbanken R O  Datenbanken sind gut geeignet, um für dynamische Webseiten als F Datenbasis genutzt zu werden. N I 36 Zugriff auf MySQL über PHP • Grundlegende Schritte jedes Datenbankzugriffs in PHP: K I T 1. Verbindung mit dem Datenbanksystem aufbauen $link = mysql_connect($Host, $Benutzer, $Passwort) A or die("DB-Verbindung unmöglich: " . mysql_error()); M  Ergebnis der Verbindung ist eine Variable (Handle), mit der auf die Verbindung zugegriffen werden kann. R  Fehler sollten (gerade hier) abgefangen (PHP-Konstrukt „or die“) und O ausgegeben werden. F N 2. Datenbank auswählen I mysql_select_db($Datenbank) or die("Auswahl Datenbank unmöglich: " . mysql_error()); 37 Zugriff auf MySQL über PHP 3. Abfrage ausführen K $result = mysql_query($SQLText) I or die("Anfrage fehlgeschlagen: " . mysql_error());  Ergebnis ist eine Variable (Handle), mit der auf das Resultat der T Anfrage zugegriffen werden kann. A 4. Ergebnisse ausgeben M  Grundlegendes Problem R • Programmiersprachen sind iterativ • relationale Datenbanken (und damit SQL) sind mengenorientiert O  Speicherung und „Durchlaufen“ der Ergebnisse notwendig F  Für das Abrufen der Ergebnisse gibt es drei wesentliche Varianten: i. Array N ii. Assoziatives Array iii. Objektorientiert I 5. Freigabe der Handles (kann entfallen) mysql_free_result($result); 38 mysql_close($link); Zugriff auf MySQL über PHP • Ausgabe der Ergebnisse als Array K  mysql_fetch_array liefert eine komplette Zeile des Ergebnisses I als Array (Alternative: mysql_fetch_row)  Nach der letzten Zeile wird FALSE zurückgegeben T A Auslesen und Speichern einer M Ergebniszeile als Array R O while ($arrRow = mysql_fetch_array($result)) Schleife über F { alle Zeilen echo "$arrRow[0] : $arrRow[1]"; des Ergebnisses N } I Zugriff auf eine Spalte der Ergebniszeile 39 Zugriff auf MySQL über PHP • Ausgabe der Ergebnisse als assoziatives Array K  mysql_fetch_array liefert auch ein assoziatives Array, d.h. es I kann über die Spaltennamen zugegriffen werden.  Problem: Spaltennamen müssen eindeutig sein T A Auslesen und Speichern einer M Ergebniszeile als Array R O while ($arrRow = mysql_fetch_array($result)) Schleife über F { alle Zeilen echo "$arrRow[Land] : $arrRow[Sprache]"; des Ergebnisses N } I Zugriff auf eine Spalte der Ergebniszeile 40 Zugriff auf MySQL über PHP • Ausgabe der Ergebnisse als Objekt K  mysql_fetch_object liefert eine komplette Zeile des Ergebnisses I als Objekt  Nach der letzten Zeile wird FALSE zurückgegeben T A Auslesen und Speichern einer M Ergebniszeile als objekt R O while ($oRow = mysql_fetch_object($result)) Schleife über F { alle Zeilen echo "$oRow->Land : $oRow->Sprache"; des Ergebnisses N } I Zugriff auf eine Spalte der Ergebniszeile 41 Zugriff auf MySQL über PHP • Weitere interessante Funktionen: K  mysql_num_rows($result) I • Gibt die Anzahl der Zeilen (Datensätze) im Ergebnis aus.  mysql_num_fields($result) T • Gibt die Anzahl der Spalten im Ergebnis aus. A  mysql_field_name($result, 0) • Name eines Feldes im Ergebnis. M  mysql_affected_rows() R • Liefert die Anzahl betroffener Datensätze einer vorhergehenden MySQL Operation wie z.B. DELETE, UPDATE O • Vereinfachung: F  Herstellen der Verbindung / Datenbankauswahl in einer separaten N Include-Datei, die immer wieder verwendet werden kann. • include "_DBVerbindung.inc"; I 42 Vernetzung des Themas - Grenzen von SQL • Problem: „Verfolgen eines Flusslaufes“ K  von der Quelle zum Meer I z.B. Spree Nordsee T Elbe Havel A Aller Spree • Hier werden iterative Strukturen benötigt, die SQL (als mengen- M orientierte Sprache) im Standard Weser R nicht bietet. Rhein Fulda Werra O Main  Anknüpfung an Programmierung F  PHP, Delphi, Java Mosel N Neckar Donau Inn I Isar 43 Vernetzung des Themas - Grenzen von SQL • Problem: „Verfolgen eines Flusslaufes“ K  vom Meer zu den Zuflüssen I z.B. Nordsee Nordsee T Elbe Havel A Aller Spree M  Beispiel für eine (elegante?) Weser rekursive Programmierung R Rhein Fulda Werra O Main F Mosel N Neckar Donau Inn I Isar 44 PHP und Datenbanken – Aufgaben 1. Erstellen Sie php-Anzeigeseiten für die Datenbank miniterra. K Verwenden Sie dazu Abfragen aus dem SQL-Teil. I 2. Erstellen Sie eine Abfrage, bei der der Kontinent eingegeben T werden kann (HTML-Formular). Es werden dann alle Länder des A Kontinents ausgegeben. M 3. Geben Sie die Länder mit ihren Kontinenten aus. R Es sollen Links in jeder Spalte sein, die eine Sortierung erlauben. O F N 4. Geben Sie den Verlauf eines Flusses bis zur Mündung aus. (Achtung: evtl. Rekursion!) I 45 Was kann PHP noch? • Alle wichtigen Konstrukte sind vorhanden K  Verschiedene Schleifenformen (auch für assoziative Arrays) I  Prozeduren / Funktionen  Klassen T  Exceptions A  etc. M • Strukturierung eines Projekts R  includes O F N I Aus der PHP-Dokumentation 46 Vorteile / Nachteile von PHP • PHP ist eine Skriptsprache K  Einfachere Erlernbarkeit (?) I  Keine Notwendigkeit der Variablendefinitionen, etc. ( oder  ?)  Dennoch auch komplexere Programmierkonzepte T (z.B. Klassen, Exceptions) möglich A • PHP kann einfach in HTML eingebunden werden. M  Da HTML bekannt ist, muss die Ausgabe (Grafik, etc.) nicht behandelt R werden.  Ergebnisse sind schnell sichtbar. O  Es muss kein weiteres Programm (IDE) erlernt werden. F  Schüler sind leicht zu motivieren, da außenwirksame (Homepage) Projekte eingebracht werden. N  Es existiert kaum eine gute Möglichkeit des Debuggings.  Umfangreichere Projekte werden leicht unübersichtlich. I  Vermischung von zwei Sprachen (HTML / PHP) erschwert den Zugang. (Alternative: PHP zur Shell-Programmierung) 47 Vorteile / Nachteile von PHP • PHP ist Open-Source-Software K  In vielen Webpaketen der Provider verfügbar und damit für die I Schüler auch außerhalb der Schule leicht verfügbar.  Kein finanzielles Problem bei Anschaffung an der Schule. T  Ängste bei „etablierten“ Kollegen bzgl. der Wartbarkeit und Weiterentwicklung einer nicht-kommerziellen Software. A M • … R O F N I 48 Internet-Referenzen • Installation Apache / PHP / mySQL als Paket (XAMPP) K  http://www.apachefriends.org/en/xampp.html I • PHP-Dokumentation:  http://www.php.net/manual/de/ T A • Weitere PHP-Quellen M  PHP für Einsteiger http://informatik.asn-graz.ac.at/phptutorial/index.html  WikiBook http://de.wikibooks.org/wiki/Websiteentwicklung:_PHP R  PHP für dich (Einsteiger) http://www.schattenbaum.net/php/ O  … F N I 49 Geht es auch mit Python? • Eine Möglichkeit, der Einbindung von PHP sehr ähnlich: K  Erweiterung für Apache: Spyce I (http://spyce.sourceforge.net/)  Python-Zugriff auf MySQL: MySQL-Python Bibliothek T (http://sourceforge.net/projects/mysql-python/) A  Rudimentäre Installationsanleitung / Beispiele in den Unterlagen M

Kugeluhr

R [[\ from time import * O lt = localtime() Stunde = lt[3] F Minute = lt[4] print "

Es ist %02i:%02i Uhr.

" % (Stunde, Minute) N i=1 while i<=Stunde: if (i%10)==0: I print "" else: print "" i=i+1 50 ]] Dynamische Webseiten mit PHP [und Python] Thomas Mohr I N F O R M A T I K

Related Search
We Need Your Support
Thank you for visiting our website and your interest in our free products and services. We are nonprofit website to share and download documents. To the running of this website, we need your help to support us.

Thanks to everyone for your continued support.

No, Thanks