Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Dynamische Webseiten mit PHP [und Python]

Ähnliche Präsentationen


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

1 Dynamische Webseiten mit PHP [und Python]
Thomas Mohr

2 (X)HTML ist rein „statisch“, d.h.
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 Abruf von Webseiten Webanfrage http://server.com/Datei.html
Webserver Datei.html HTML HTML-Datei im Dateisystem Web-Client mit Browser Datei.html HTML Internet

4 Wie kommt die Seite auf den Server?
„Programmieren“ der HTML-Datei HTML PC Übertragen der Datei mit ftp Webserver Ftp-Server HTML Abrufen der Seite über http Web-Client Internet

5 … und auf den Übungsrechnern?
„Programmieren“ der HTML-Datei Webserver HTML Abrufen der Seite über http Browser

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 Basisverzeichnis des Webservers (Webserver-Programm) php.ini, um Einstellungen für PHP zu ändern bin Konfiguration des Webservers in httpd.conf (z.B. Anlegen weiterer Verzeichnisse) conf logs Logdateien des Webservers (Zugriffe / Fehler) In php.ini sollte man die maximale Antwortzeit [max_execution_time = 2] heruntergesetzt werden. Ansonsten führen Endlosschleifen bei der Programmierung unter Umständen zur kompletten Auslastung des Servers. htdocs Standardverzeichnis für HTML-Dateien wb Bitte Anlegen, um eigene HTML-Dateien abzulegen. mysql Verzeichnis der MySQL-Datenbank (auch der Datenbanken selbst)

7 PHP (rekursives Akronym für „PHP: Hypertext Preprocessor“)
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. Open Source (Wikipedia): Die Software (d. h. der Programmcode) liegt in einer für den Menschen lesbaren und verständlichen Form vor. In der Regel handelt es sich bei dieser Form um die Quelltexte in einer höheren Programmiersprache. Vor dem eigentlichen Programm(ab)lauf ist es normalerweise notwendig, diesen Text durch einen so genannten Compiler in eine binäre Form zu bringen, damit das Computerprogramm vom Rechner ausgeführt werden kann. Binärprogramme sind für den Menschen im semantischen Sinne praktisch nicht lesbar. Die Software darf beliebig kopiert, verbreitet und genutzt werden. Für Open-Source-Software gibt es keine Nutzungsbeschränkungen. Weder bezüglich der Anzahl der Benutzer, noch bezüglich der Anzahl der Installationen. Mit der Vervielfältigung und der Verbreitung von Open-Source-Software sind auch keine Zahlungsverpflichtungen gegen einen Lizenzgeber verbunden. Die Software darf verändert und in der veränderten Form weitergegeben werden. Durch den offengelegten Quelltext ist Verändern ohne weiteren Aufwand für jeden möglich. Weitergabe der Software soll ohne Lizenzgebühren möglich sein. Open-Source-Software „lebt“ förmlich von der aktiven Beteiligung der Anwender an der Entwicklung. So bietet sich Open-Source-Software zum Lernen, Mitmachen und Verbessern an.

8 Mit PHP kann HTML so erweitert werden, dass
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 PHP erweitert HTML Datei.php Webanfrage http://server.com/Datei.php
& PHP PHP-Datei im Dateisystem Webanfrage Webserver PHP- Interpreter Web-Client mit Browser Datei.php HTML Datei.php HTML Internet

10 Trennung HTML - PHP PHP-Bereiche im HTML werden durch eine bestimmte Schreibweise (Syntax) vom eigentlichen HTML-Code getrennt. <h1>Aktuelles Datum</h1> <p> <?php echo 'Datum:' . date("d. M Y"); ?> </p> PHP-Bereich innerhalb einer HTML-Datei. Vom PHP-Bereich auf dem Server erzeugte Ausgabe (reiner HTML-Code). <h1>Aktuelles Datum</h1> <p> Datum: 14. Nov 2008 </p> PHP- Interpreter Browser (HTML-Interpreter) Im Browser angezeigte HTML-Seite.

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. <h1>Ein PHP-Beispiel</h1> <?php echo "<h2>Mein erstes PHP-Programm</h2>"; echo "<p>...mit zwei Anweisungen</p>"; ?> Zwei PHP-Anweisungen zur Ausgabe eines Textes <h1>Ein PHP-Beispiel</h1> <h2>Mein erstes PHP-Programm</h2> <p>...mit zwei Anweisungen</p> PHP- Interpreter Hier wurden auch HTML-Tags durch PHP erzeugt.

12 Welche Uhrzeit wird am Client angezeigt?
„Dynamische“ Inhalte Welche Uhrzeit wird am Client angezeigt? Webserver Web-Client mit Browser Webanfrage 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 Variablen Variablen können Werte zugewiesen werden. ausgelesen werden.
<h2>Variablen in PHP</h2> <?php $MeinText = 'Hallo Welt!'; $Zahl = ; ?> Namen von Variablen beginnen immer mit einem $-Zeichen. <?php echo "<p>Text: $MeinText</p>"; echo '<p>Zahl: ' . $Zahl . '</p>'; ?> Zwei Varianten zur Ausgabe Die untere Variante ist näher an anderen Programmiersprachen. <h1>Variablen in PHP</h1> <p>Text: Hallo Welt!</p> <p>Zahl: </p> PHP- Interpreter

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) Ja Nein Ausgabe: „Vormittag“ Ausgabe: „Nachmittag“

15 Bedingte Ausführung – If-Anweisung
Sollen Programmteile nur unter bestimmten Bedingungen ausgeführt werden, so kommt die if-Anweisung zum Einsatz: if (Bedingung) {Anweisungen} else {Anweisungen} <?php $Zeit = getdate(); $Stunde = $Zeit["hours"]; if ($Stunde<12) { echo "Vormittag!"; } else echo "Nachmittag!"; ?> 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

16 Bedingte Ausführung – If-Anweisung
Beispiel Programmfluss – abgearbeitete Anweisungen vor 12 Uhr: <?php $Zeit = getdate(); $Stunde = $Zeit["hours"]; if ($Stunde<12) { echo "Vormittag!"; } else echo "Nachmittag!"; ?> Überspringe Anweisungen im else-Block

17 Bedingte Ausführung – If-Anweisung
Beispiel Programmfluss – abgearbeitete Anweisungen nach 12 Uhr: <?php $Zeit = getdate(); $Stunde = $Zeit["hours"]; if ($Stunde<12) { echo "Vormittag!"; } else echo "Nachmittag!"; ?> Überspringe Anweisungen im if-Block

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 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“. <?php // ich bin ein Kommentar echo "Hallo Welt!"; ?> <?php    echo "Vor dem Kommentarbereich";    /* Dies ist ein Kommentar       mit mehreren Zeilen */    echo "Nach dem Kommentarbereich"; ?>

20 Wie wird die HTML-Datei im Browser aussehen?
Kommentare Wie wird die HTML-Datei im Browser aussehen? <h1>Viele Kommentare</h1> <!-- <p>Auf dieser Seite gibt es viele Kommentare.</p> --> <?php // echo "Kommentare sind wichtig, um ein Programm zu verstehen." /* echo "Besser eingerückt könnte man das noch leichter lesen."; */ ?> <p>... sind wichtig!</p> Viele Kommentare … sind wichtig!

21 Fallunterscheidung Sollen mehrere einfache Werte abgefragt werden, so kann statt einer mehrfachen Bedingung eine sog. Fallunterscheidung angewendet werden: $WTag=0 Ja Nein $s= "Sonntag" - / - $WTag=1 $s= "Montag" $WTag=2 $s= "Dienstag" $WTag=3 $s= "Mittwoch" $WTag 1 2 3 $s="Sonntag" $s="Montag" $s="Dienstag" $s="Mittwoch"

22 Selektor (Variable oder Rechenausdruck)
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 Selektor (Variable oder Rechenausdruck) $MSSPunkte 15,14,13 12,11,10 9,8,4 6,5,4 $s="sehr gut" $s="gut" $s="befriedigend" $s="ausreichend" sonst $s="nicht bestanden" Werte Einzelne Fälle Ausnahme

23 PHP – Fallunterscheidung
In PHP wird die Fallunterscheidung mit der switch … case- Anweisung programmiert werden. Bsp.: $MSSPunkte 15,14,13 12,11,10 9,8,4 6,5,4 $s="sehr gut" $s="gut" $s="befriedigend" $s="ausreichend" sonst $s="nicht bestanden" switch ($MSSPunkte) { case 15: case 14: case 13: $s="sehr gut"; break; case 12: case 11: case 10: $s="gut"; default: $s="nicht bestanden"; }

24 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: Name und Anfangswert der Zählvariable Bedingung, ob die Schleife wiederholt wird. $Summe=$Summe+$i; Solange $i<=20 $Summe = 0 $i=$i+1 $i = 1 $i=1; $Summe=0; while ($i<=20) { $Summe=$Summe+$i; $i=$i+1; } Schleifenrumpf mehrfach ausgeführt Veränderung der Zählvariable

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:21

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: 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 $Summe=0; for ($i=1; $i<=20; $i=$i+1) { $Summe = $Summe + $i; echo "<p>$i: $Summe</p>"; } Auf die Verwendung der for-Schleife mit anderen Abbruchbedingungen und Zählervariablen wird nicht eingegangen. Schleifenrumpf, der mehrfach ausgeführt wird.

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 "<p>Durchlauf: $i</p>"; $Summe = $Summe + $i; echo "<p>Summe: $Summe</p>"; } $i=$i +1 $i= $i +1 $i:20 $i= $i +1 ... $i:21 $i:1 $i:2  Die Summe der ersten 20 Zahlen.

28 Wert(e), der an die Funktion übergeben wird.
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 <br />"; $x= $x+1;

29 Übungen Endlich – Sie sind dran!

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 Exkurs – Formulare in der „realen“ Welt
Frage nach Formular Ausfüllen von Daten Formular Harry Potter Formulare Gib ausgefülltes Formular zurück Auswerten der Daten Verarbeitung Herr Potter! Bibliotheksausweis Ausweis #4711 Ausgabe des Ausweises Bibliothek Benutzer

32 Formulare in HTML Formular.html Verarbeitung.php Webserver Web-Client
& PHP Webserver Web-Client Rufe Eingabe-Seite auf Rufe Verarbeitungsseite auf und übergebe Eingabedaten Harry Potter Ergebnis der Verarbeitung Eingabe von Daten Auswerten der Daten Herr Potter! Kunde #4711

33 Das Formular erfordert spezielle HTML-Tags Bsp.:
Formulare in HTML Das Formular erfordert spezielle HTML-Tags (PHP ist für das Eingabeformular nicht notwendig). Bsp.: Verarbeitungsseite <form action="Verarbeitung.php" method="post"> ... <input type="text" name="Benutzer" /> <input type="submit" value="abschicken" /> </form> Text-Eingabefeld mit Namen „Benutzer“ Formularblock Button zum Aufruf Verarbeitungsseite

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. <form action="Verarbeitung.php" method="post"> <input type="text" name="Benutzer" /> <input type="text" name="Alter" /> </form> <?php echo "Name: " . $Benutzer; echo "Alter: " . $Alter; ?> Formular.html Verarbeitung.php Alternativ kann der Wert auch aus dem Array $_POST gelesen werden, also $_POST[„Benutzer"] und $_POST[„Alter"]; Werden Arrays im späteren Unterricht eingeführt, so ist diese Schreibweise evtl. vorzuziehen.

35 Übungen Learning by doing…

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 Zugriff auf MySQL über PHP
Grundlegende Schritte jedes Datenbankzugriffs in PHP: 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. Datenbank auswählen $link = mysql_connect($Host, $Benutzer, $Passwort) or die("DB-Verbindung unmöglich: " . mysql_error()); Rückgabewert von mysql_connect: Eine MySQL Verbindungs-Kennung im Erfolgsfall oder FALSE im Fehlerfall. Rückgabewert von mysql_select_db: Gibt bei Erfolg TRUE zurück, im Fehlerfall FALSE. In Wirklichkeit ist „or die()“ ein Boolscher Ausdruck. Ist der erste Ausdruck von (exp1 or exp2) schon TRUE, so wird der zweite erst gar nicht ausgewertet … ein übler (aber einfacher) Trick für die Fehlerbehandlung. Alternative: Abfrage des Handles: <?php //Verbindung aufbauen $server = "localhost"; $nutzer = "hsg910"; $kennwort = "geheim"; $db_link = mysql_connect($server,$nutzer,$kennwort); if (!is_null($db_link)) { echo "<p>Verbindung erfolgreich!</p> Handle-ID: $db_link"; } else { echo "<p>keine Verbindung!</p> Handle-ID: $db_link"; }; ?> mysql_select_db($Datenbank) or die("Auswahl Datenbank unmöglich: " . mysql_error());

38 Zugriff auf MySQL über PHP
Abfrage ausführen Ergebnis ist eine Variable (Handle), mit der auf das Resultat der Anfrage zugegriffen werden kann. 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: Array Assoziatives Array Objektorientiert Freigabe der Handles (kann entfallen) $result = mysql_query($SQLText) or die("Anfrage fehlgeschlagen: " . mysql_error()); Die Freigabe der Handles ist nicht unbedingt notwendig, da diese bei Beenden des php-Skripts sowieso freigegeben werden. $result gibt 0 zurück, wenn es ein Problem mit der Abfrage gab (Alternativ zu „or die()“) mysql_free_result($result); mysql_close($link);

39 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 Auslesen und Speichern einer Ergebniszeile als Array while ($arrRow = mysql_fetch_array($result)) { echo "$arrRow[0] : $arrRow[1]"; } Schleife über alle Zeilen des Ergebnisses Beispiel: SprachenArray.php Zugriff auf eine Spalte der Ergebniszeile

40 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 Auslesen und Speichern einer Ergebniszeile als Array Schleife über alle Zeilen des Ergebnisses while ($arrRow = mysql_fetch_array($result)) { echo "$arrRow[Land] : $arrRow[Sprache]"; } SprachenAssozArray.php Bei Verwendung von foreach für eine Schleife über alle Felder muss beachtet werden, dass mysql_fetch_array eigentlich jedes Spalte doppelt enthält: Einmal indiziert und einmal über Namen zugreifbar. Daher wird jede Spalte bei foreach doppelt ausgegeben. Lösung: mysql_fetch_row verwenden oder mysql_fetch_array mit zusätzlichem Parameter aufrufen: mysql_fetch_array($result, MYSQL_NUM)  nur indiziertes Array mysql_fetch_array($result, MYSQL_ASSOC)  nur assoziatives Array Zugriff auf eine Spalte der Ergebniszeile

41 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 Auslesen und Speichern einer Ergebniszeile als objekt while ($oRow = mysql_fetch_object($result)) { echo "$oRow->Land : $oRow->Sprache"; } Schleife über alle Zeilen des Ergebnisses Beispiel: SprachenObjekt.php Zugriff auf eine Spalte der Ergebniszeile

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 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 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 PHP und Datenbanken – Aufgaben
Erstellen Sie php-Anzeigeseiten für die Datenbank miniterra. Verwenden Sie dazu Abfragen aus dem SQL-Teil. Erstellen Sie eine Abfrage, bei der der Kontinent eingegeben werden kann (HTML-Formular). Es werden dann alle Länder des Kontinents ausgegeben. Geben Sie die Länder mit ihren Kontinenten aus. Es sollen Links in jeder Spalte sein, die eine Sortierung erlauben. Geben Sie den Verlauf eines Flusses bis zur Mündung aus. (Achtung: evtl. Rekursion!)

46 Aus der PHP-Dokumentation
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 Beispiel für eine Klasse: Aus der PHP-Dokumentation

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 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 Installation Apache / PHP / mySQL als Paket (XAMPP) PHP-Dokumentation:
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 Eine Möglichkeit, der Einbindung von PHP sehr ähnlich:
Geht es auch mit Python? Eine Möglichkeit, der Einbindung von PHP sehr ähnlich: Erweiterung für Apache: Spyce ( Python-Zugriff auf MySQL: MySQL-Python Bibliothek ( Rudimentäre Installationsanleitung / Beispiele in den Unterlagen <h1>Kugeluhr</h1> [[\ from time import * lt = localtime() Stunde = lt[3] Minute = lt[4] print "<p>Es ist %02i:%02i Uhr.<p>" % (Stunde, Minute) i=1 while i<=Stunde: if (i%10)==0: print "<img src='kreisvoll10.gif' alt='' />" else: print "<img src='kreisvoll.gif' alt='' />" i=i+1 ]]

51 Dynamische Webseiten mit PHP [und Python]
Thomas Mohr


Herunterladen ppt "Dynamische Webseiten mit PHP [und Python]"

Ähnliche Präsentationen


Google-Anzeigen