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