W EWS-7.1 W7 Projekt im Zusammenhang Gästebuch Aufgabe: Web-Seite mit einem kleinen Gästebuch; fordert Web-Surfer auf, etwas einzutragen; speichert die Einträge und zeigt alle an, die bisher gemacht wurden. Plan für Interaktionen: Client Host-Rechner mit Browser mit Web-Server URL HTML-Datei mit Prüffunktion in JavaScript PHP-Programm für Formular mit Prüffunktion Benutzer- Formular erzeugen Interaktion Formular- geprüfte Formular-Eingaben prüfung Eintrag speichern Alle Einträge lesen Ergebnisse und schreiben (c) 2004 bei Prof. Dr. Uwe Kastens -------------------------------------------------------------------------------- Vorlesung Einführung in Web-bezogene Sprachen WS 2006 / Folie 701 Ziele: Aufgabe verstehen in der Vorlesung: Am Beispiel wird erklärt: * Aufgabe auf das Schema abbilden, * Plan für Interaktionen aufstellen, * Zusammenhang der Teilaufgaben erkennen. -------------------------------------------------------------------------------- W EWS-7.2 Planung der beiden Phasen Phase 1: Willkommen zu meinem Gästebuch! 1a. HTML-Formular zum Eintragen Hier kannst Du etwas eintragen: 1b. Prüfen, ob etwas eingetragen wurde; sonst nur Einträge ansehen; in JavaScript Löschen Abschicken Phase 2: statt des Formulars wird angezeigt: 2a. Falls ein Eintrag gemacht wurde, Willkommen zu meinem Gästebuch! Eintrag an Datei anfügen; Dank als HTML-Zeile Danke für Deinen Eintrag! 2b. HTML-Überschrift für Einträge; Das wurde bisher eingetragen: alle Einträge aus der Datei lesen .... und anzeigen .... Phasen 1 und 2 als Zweige im PHP-Programm (c) 2004 bei Prof. Dr. Uwe Kastens -------------------------------------------------------------------------------- Vorlesung Einführung in Web-bezogene Sprachen WS 2006 / Folie 702 Ziele: Prüfen: An alles gedacht? in der Vorlesung: Am Beispiel wird erklärt: * Skizze für das Layout, * Welche Situationen können auftreten? * Welche Programmzweige werden gebraucht? * Welche Operationen werden gebraucht? -------------------------------------------------------------------------------- W EWS-7.3 Realisierung der Phase 1 (Formular) 1. HTML-Datei mit Formular entwickeln: Mein Gästebuch

Willkommen zu meinem Gästebuch!

Hier kannst du etwas eintragen:


2. Layout prüfen, (c) 2007 bei Prof. Dr. Uwe Kastens -------------------------------------------------------------------------------- Vorlesung Einführung in Web-bezogene Sprachen WS 2006 / Folie 703 Ziele: Statische HTML-Datei entwickeln in der Vorlesung: Am Beispiel wird erklärt: * schrittweise Entwicklung (Web-Server ist noch nicht nötig!): * nur das Layout von Formular und Überschrift, * Formular und Elemente mit name-Attribut, * mit CSS das Layout verbessern. -------------------------------------------------------------------------------- W EWS-7.4 Realisierung der Phase 1 (Formular-Prüfung) 1. Formular-Prüfung einfügen: Mein Gästebuch CSS

Willkommen zu meinem Gästebuch!

Hier kannst du etwas eintragen:


(c) 2007 bei Prof. Dr. Uwe Kastens -------------------------------------------------------------------------------- Vorlesung Einführung in Web-bezogene Sprachen WS 2006 / Folie 704 Ziele: Formular-Prüfung üben in der Vorlesung: Am Beispiel wird erklärt: * Attributzugriff, * Funktionsergebnis entscheidet über Abschicken des Formular-Inhalts; * Ereignisbehandlung mit "return ..."; * Ereignibehandler ist implizite Funktion. -------------------------------------------------------------------------------- W EWS-7.5 Testen der Phase 1 Alle Fälle der Bedienung des Formulars prüfen: 1. normal: eintragen und abschicken, 2. löschen, 3. nichts eintragen, abschicken, bestätigen, 4. nichts eintragen, abschicken, nicht bestätigen. ggf. Fehler suchen, korrigieren und nochmal testen (c) 2004 bei Prof. Dr. Uwe Kastens -------------------------------------------------------------------------------- Vorlesung Einführung in Web-bezogene Sprachen WS 2006 / Folie 705 Ziele: Notwendigkeit zu testen erkennen in der Vorlesung: Am Beispiel wird erklärt: * alle Fälle, * Auffinden der Fehler-Console, * fehlerhaftes Beispiel, * korrigiertes Beispiel. -------------------------------------------------------------------------------- W EWS-7.6 Herstellen der Standardstruktur PHP-Programm mit 2 Zweigen: check Mein Gästebuch CSS

Willkommen zu meinem Gästebuch!

Hier kannst du etwas eintragen:

EINTRAG; } else { // Phase 2 } ?> (c) 2007 bei Prof. Dr. Uwe Kastens -------------------------------------------------------------------------------- Vorlesung Einführung in Web-bezogene Sprachen WS 2006 / Folie 706 Ziele: Standard Programmstruktur herstellen in der Vorlesung: Am Beispiel wird erklärt: * systematisch die 2 Zweige im PHP-Fragment einfügen, * Datei umbenennen: .php, * nochmal testen, wie auf voriger Folie gezeigt. -------------------------------------------------------------------------------- W EWS-7.7 Realisieren der Phase 2 (Gästebuch) Eintrag wird nur if (strlen($_REQUEST["eintrag"]) >= 1) { gespeichert, wenn $fp = fopen("gaestebuch.txt","a"); etwas eingetragen fputs($fp, "

" . $_REQUEST["eintrag"] . wurde. "

\n"); fclose($fp); echo "

Danke für deinen Eintrag

"; } Datei öffnen, lesen echo "

Das wurde bisher eingetragen:

"; und ausgeben. $gb = fopen("gaestebuch.txt","r"); while (!feof($gb)) { (Schema 4.29) $eintr = fgets($gb, 4096); echo $eintr; } fclose($gb); Phase 2 (c) 2007 bei Prof. Dr. Uwe Kastens -------------------------------------------------------------------------------- Vorlesung Einführung in Web-bezogene Sprachen WS 2006 / Folie 707 Ziele: Datei-Operationen programmieren in der Vorlesung: Am Beispiel wird erklärt: * Bedingung für leeren Eintrag, * an die Datei anhängen, * schematische Leseschleife, * Einfügen als Phase 2. -------------------------------------------------------------------------------- W EWS-7.8 Testen der Phase 2 Alle Fälle prüfen: 1. normaler Eintrag in leere Datei 2. normaler Eintrag in nicht-leere Datei 3. kein Eintrag und Datei ist leer 4. kein Eintrag und Datei ist nicht leer 5. Datei existiert nicht ggf. Fehler finden, korrigieren und nochmal testen Wenn alles funktioniert, eine andere Person erproben lassen. if (!file_exists("gaestebuch.txt")) { in der echo "

Das Gästebuch ist leider leer!

"; Mitte von echo ""; Phase 2 exit; einfügen } (c) 2007 bei Prof. Dr. Uwe Kastens -------------------------------------------------------------------------------- Vorlesung Einführung in Web-bezogene Sprachen WS 2006 / Folie 708 Ziele: Notwendigkeit von Tests erkennen in der Vorlesung: Am Beispiel wird erklärt: * Ungeprüfter Dateizugriff kann zu nicht-endender Ausgabe von Warnungen führen! * file_exists und exit benutzen. * Wenn man das Ergebnis von fopen prüft, liefert vorher fopen eine störende Warnung. -------------------------------------------------------------------------------- W EWS-7.9 Alle Programmteile zusammen

Hier kannst du etwas eintragen:

EINTRAG; } else { if (strlen($_REQUEST["eintrag"]) >= 1) { $fp = fopen("gaestebuch.txt","a"); fputs($fp, "

" . $_REQUEST["eintrag"] . "

\n"); fclose($fp); echo "

Danke für deinen Eintrag

"; } if (!file_exists("gaestebuch.txt")) { echo "

Das wurde bisher eingetragen:

"; echo $gb = fopen("gaestebuch.txt","r"); "

Das Gästebuch ist leider " . while (!feof($gb)) { "leer!

"; $eintr = fgets($gb, 4096); exit; echo $eintr; } } fclose($gb); } ?> (c) 2007 bei Prof. Dr. Uwe Kastens -------------------------------------------------------------------------------- Vorlesung Einführung in Web-bezogene Sprachen WS 2006 / Folie 709 Ziele: Übersicht über die gesamte Lösung in der Vorlesung: Beispiel ausführen und Fragen zum Programm beantworten. --------------------------------------------------------------------------------