Tutorium zu PHP
Transcrição
Tutorium zu PHP
Datenbanken & Informationssysteme II Tutorium/Aufgaben zu PHP (Version 3.4 vom 11.11.2016) • Einleitung In den folgenden Lektionen sollen die vermittelten Konzepte zur Programmierung mittels PHP anhand von konkreten Beispielen geübt und vertieft werden. Zu Beginn wird in die Entwicklungsumgebung im Poolraum eingeführt. Anschliessend gibt es ein paar Fingerübungen zu PHP, bevor es dann an die Realisierung einer einfachen Abbildungsschicht geht (eigenes Übungsblatt). Entwicklungsumgebung: Hinweis: Die Datei apache_start.bat überprüft, ob in eurem Homeverzeichnis (u-Laufwerk) ein Verzeichnis db-is-2 existiert. Ist dies nicht der Fall, so werden vom h-Laufwerk eine Reihe von Beispielprogramme unter db-is-2 abgelegt. Das Verzeichnis u:/db-is-2/htdocs ist dann das Document-Root Verzeichnis des Webservers. Wenn du das Tutorium auf deinem eigenen Rechner durcharbeiten willst, wirf zuerst einen Blick auf die Hinweise zur Installation von XAMPP auf der Kurshomepage. • Apache starten1 (h:/schmidt/xampp/apache_start.bat) MySQL Server starten1 (h:/schmidt/xampp/mysql_start.bat) Browser mit URL: http://localhost:8001/wwwenv öffnen Link Datumsaufgabe drücken und testen ob PHP richtig funktioniert Link Liste von Flüssen drücken und testen ob Verbindung zur Datenbank hergestellt werden kann. • Lege im Verzeichnis u:/db-is-2/htdocs/wwwenv eine neue Datei mit dem Namen hurra.php an. Das Programm soll später folgende Meldung ausgeben: „Hurra, es klappt, am <heutiges datum> habe ich mein erstes PHP-Programm geschrieben“. • • • • • Dazu füge folgende Zeilen in die leere Datei ein: <?php echo "Hurra, ich hab mein erstes PHP Programm geschrieben"; ?> 1. Eventuell poppt die Firewall hoch und will eine Bestätigung, dass das Programm gestartet werden darf - erlaub es ihm ;-) oder wenn dir die Rechte fehlen, drück auf „Abbrechen“, das Programm startet trotzdem Andreas Schmidt PHP-Fingerübungen 1/4 Datenbanken & Informationssysteme II • Starte anschließend einen Browser (z.B. Firefox) und gib folgende URL ein: http://localhost:8001/wwwenv/hurra.php • Der Browser sollte die Jubelmeldung jetzt ausgeben. • Als nächstes soll das heutige Datum noch mit ausgegeben werden. Dazu werfen wir einen Blick auf die Seite http://de.php.net/date, welche die Datumsfunktion von PHP beschreibt. Erweitere das Programm so, dass die obige Ausgabe samt Datumsausgabe erfolgt • Drücke auf der Startseite den Link MySQL WWW-Frontend für Datenbank und mach dich mit dem Frontend vertraut. • Probier alternativ die MySQL Workbench aus (Start>>Alle Programme >> Entwicklung >> Datenbanken >> MySQL ). • Nimm das Programm u:/db-is-2/htdocs/wwwenv/10pdofluesse-liste.php und kopiere es nach u:/db-is-2/htdocs/wwwenv/nochmal-hurra.php. Modifiziere das SQL-Statement so, dass anstatt der Flüsse, alle Seen (mit Name und Größe) ausgegeben werden. Stell ein paar Select-Anfragen an die Mondial-Datenbank. • Teste das Programm, indem du die folgende URL im Browser eingibst: http://localhost:8001/wwwenv/nochmal-hurra.php • Ziehe das Programm mittels Drag-and-Drop ins Browserfenster. Was passiert ? Warum ?. • Du kannst alternativ PHP Programme von der Kommandozeile aus ausführen (anstatt sie durch den Webserver auszuführen und dann das Ergebnis im Webbrowser anzeigen zu lassen). Dazu musst du das Programm php.exe mit der auszuführenden PHP-Datei als Parameter von der Kommandozeile aus aufrufen. php.exe u:\db-is-2\htdocs\wwwenv\hurra.php • Schau dir das Programm check_run_environment.php an. Das Programm kann von sich aus erkennen, ob es von der Kommandozeile oder über den Webserver gestartet wurde und setzt entsprechend den Zeilenumbruch auf "<br>" oder auf "\n". Ein anderes nettes Programm ist read-from-stdin.php, das nur von der Kommandozeile aus läuft und eine Funktion definiert, die es dem Benutzer ermöglicht eine Zeichenkette einzugeben (beenden mit <RET>). Andreas Schmidt PHP-Fingerübungen 2/4 Datenbanken & Informationssysteme II PHP Fingerübungen: • • • • • Erstelle ein Programm, das die Werte aus einem assoziativem Array (KeyValue Pairs) in einer zweispaltigen HTML-Tabelle ausgibt. Wenn du dich mit HTML nicht auskennst, wirf einen Blick in den Foliensatz CrashkursHTML. Erstelle ein Programm, das nach Eingabe einer Zahl über ein Formularfeld, deren Quadratwurzel berechnet. Ändere das letzte Programm so ab, dass statt der Quadratwurzel die Fakultät (z.B.: 5 ! = 2*3*4*5) mittels einer selbst programmierten Funktion ermittelt wird. Aufgabe 1 Erweitere die Beispielklasse Bruch aus der Vorlesung um die Methoden sub($b), mult($b) und multBy($b)1. Erstelle ein kleines Testprogramm, das den Einsatz der Methoden zeigt. • Aufgabe 2 (für Freaks und Bastler - nicht Klausurrelevant!) Es soll eine einfache Benutzerschnittstelle zur Eingabe von SQL-Statements entwickelt werden. Die SQL-Statements sollen in einer Textarea eingegeben werden können und dann auf Knopfdruck an die Datenbank geschickt und dort ausgeführt werden. Das Ergebnis soll dann in Form einer HTML-Tabelle angezeigt werden2. (Hinweis: die Funktion stripslashes(...) kann dir bei der Behandlung von Hochkommas behilflich sein) • Die Ausgabe kann im selben Fenster erscheinen oder in einem separaten Fenster (oder Frame). • Das SQL-Statement soll nach der Ausführung weiterhin in der Textarea sichtbar sein (zur Weiterbearbeitung). • sonstige mögliche Erweiterungen (Kürprogramm für Schnelle): • Die Ergebnisdatensätze sollen zur besseren Lesbarkeit abwechselnd in zwei verschiedenen Farben dargestellt werden3 (Darstellung von farbigem Text in HTML: • Es soll die Möglichkeit bestehen, SQL-Statements in der Datenbank zu speichern. Zur Wiederauffindung können diese mit einem Namen und/oder einer Kurzbeschreibung versehen werden. Kapsele den Zugriff auf die 1. Im Gegensatz zu mult(...), soll bei multBy(...) die Instanz selbst verändert werden (entsp. $x = $x * $y) 2. Hinweis: Wirf einen Blick in die PDO Dokumentation. Schau dir dort die Methoden columnCount(), rowCount() sowie getColumnMeta() genauer an. 3. Darstellung von farbigem Text: <font color="blue">blauer Text</font> Andreas Schmidt PHP-Fingerübungen 3/4 Datenbanken & Informationssysteme II SQL-Statements in der Datenbank durch eine Klasse (Siehe auch Anhang A). • Ausgabe von Statusmeldungen beim Ausführen von modifizierenden DMLKommandos (z.B.: 12 Datensätze wurden modifiziert/gelöscht) • Realisiere das An- und Abmelden von der Datenbank1. • Anhang A: Vorschlag für Methoden zum Verwalten von SQL-Statements: $sql = SQL::create($sql_stmnt, $description); $list = SQL::getAll(); $sql = SQL::get($id); $sql = SQL::getByDescription($desc); $sql->setStatement($sql_stmnt); $sql->getStatement(); $sql->setDescription($desc); $sql->getDescription(); $sql->saveOrUpdate(); // Speichert Statement in DB $sql->delete(); $sql->execute(); // Führt Statement aus Die Verbindungen zur Datenbank (zur Ausführung der Statements, abspeichern der Statements) kannst du beispielsweise in Klassenvariablen ablegen. 1. Hinweis: wirf auch einen Blick in die Dokumentation von session_start() Andreas Schmidt PHP-Fingerübungen 4/4