db:webdatenbanken
no way to compare when less than two revisions
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Vorhergehende Überarbeitung | |||
— | db:webdatenbanken [2016/11/22 20:44] (aktuell) – [Aufgaben] roehner | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | =====Webdatenbanken===== | ||
+ | Damit in Datenbanken vorgehaltene Informationen für einen normalen Anwender zugänglich werden, benötigt man immer eine Anwendungslogik und eine Präsentationsschicht. Die Präsentationsschicht ist die Webseite, über die mit dem Anwender interagiert wird. In der Anwendungslogik werden Probleme gelöst und es wird entschieden, | ||
+ | |||
+ | ===== Voraussetzungen ===== | ||
+ | ==== Datenbankserver ==== | ||
+ | Zur Bereitstellung der Datenbanken kommen spezielle Datenbankserver zum Einsatz, die meist mehrere Benutzer und Datenbanken verwalten können. Für uns bedeutend ist der relationale Open-Source-Datenbankserver [[http:// | ||
+ | |||
+ | Unser Datenbankserver ist erreichbar über http:// | ||
+ | Jede Projektgruppe erhält auf diesem Datenbankserver eine eigene Datenbank und ein | ||
+ | eigenes Konto. | ||
+ | |||
+ | Für den Zugriff auf den Server benutzen wir < | ||
+ | kann man in seiner Datenbank Tabellen anlegen und mit Daten füllen. | ||
+ | |||
+ | {{mysql.png}} | ||
+ | |||
+ | ==== Anwendungslogik ==== | ||
+ | Um eine Anwendungslogik bereitzustellen, | ||
+ | |||
+ | Einen Einstieg in PHP bietet das [[http:// | ||
+ | |||
+ | Die PHP-Skripte werden auf dem Server ausgeführt und müssen deshalb auch dort vorhanden sein. Zum Übertragen der | ||
+ | Skripte setzen wir das [[http:// | ||
+ | |||
+ | {{winscp.png}} | ||
+ | |||
+ | Nach erfolgreicher Anmeldung kann man seine PHP-Skripte in den Webbereich des Schulservers hochladen. | ||
+ | |||
+ | {{winscp2.png}} | ||
+ | |||
+ | ==== Präsentationsschicht ==== | ||
+ | Zur Präsentation kommt für das Web die Auszeichnungssprache HTML zum Einsatz. Damit die einzelnen Seiten auch dynamisch verändert werden können, wie wir dies bei Datenbanken benötigen, erweitert man die statischen HTML-Seiten um dynamische Passagen in PHP. | ||
+ | |||
+ | ==== Webserver ==== | ||
+ | Damit der Anwender über das Web auf unsere Präsentationsschicht zugreifen kann, benötigt man einen Webserver. Dieser Webserver sorgt speziell dafür, dass die PHP-Skripte, | ||
+ | |||
+ | Der Zugriff auf die dynamischen Webseiten erfolgt über die Adresse | ||
+ | |||
+ | < | ||
+ | |||
+ | Im Beispiel haben wir die Adresse | ||
+ | |||
+ | < | ||
+ | |||
+ | {{webserver.png}} | ||
+ | |||
+ | ==== XAMPP ==== | ||
+ | Eine fertige Kombination aus Datenbankserver und Webserver mit einem bereits konfigurierten PHP-Modul bezeichnet man als LAMPP (Linux Apache MySQL PHP Perl) oder WAMPP (Windows Apache MySQL PHP Perl). Apache steht für den " | ||
+ | |||
+ | Diese Kombinationen bietet das [[http:// | ||
+ | |||
+ | ==== Editor ==== | ||
+ | Zum Bearbeiten von PHP-Dateien empfiehlt sich ein Editor der Syntaxhighlighting unterstützt. Ein guter, kostenloser Editor ist bspw. [[http:// | ||
+ | |||
+ | ===== PHP ===== | ||
+ | PHP ähnelt von seiner Syntax her der Programmiersprache C, an die sich auch Java anlehnt. PHP ist jedoch im Gegensatz zu Java noch sehr stark prozedural und weniger objektorientiert ausgelegt. Zum Konzept gehört außerdem eine schwache, dynamische und implizite Typisierung von Variablen. | ||
+ | |||
+ | Ein Vergleich zwischen der einfachen Ausgabe einer Multiplikation und der Länge eines Strings verdeutlicht diese beiden Aspekte. | ||
+ | |||
+ | ==== Beispiel: Typisierung von Variablen ==== | ||
+ | **PHP** | ||
+ | <code php> | ||
+ | <? | ||
+ | $a = 2; // wird automatisch als Integer angesehen | ||
+ | $b = " | ||
+ | $c = $a * $b // $c = 4 | ||
+ | |||
+ | $d = "Hallo Welt"; | ||
+ | echo strlen($d); // gibt die Länge eines Strings aus, dazu wird die Prozedur strlen verwendet | ||
+ | ?> | ||
+ | </ | ||
+ | |||
+ | **Java ** | ||
+ | <code java> | ||
+ | | ||
+ | | ||
+ | int a, c; | ||
+ | | ||
+ | |||
+ | a = 2; | ||
+ | b = " | ||
+ | c = a * Integer.parseInt(b); | ||
+ | |||
+ | | ||
+ | d = "Hallo Welt"; | ||
+ | | ||
+ | // gibt die Länge eines Strings aus, dazu wird auf die Eigenschaft | ||
+ | // length des String-Objekts zurückgegriffen | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | ==== Funktionen in PHP ==== | ||
+ | Funktionen in PHP und in Java sind sich sehr ähnlich. Anders als in Java müssen wir in PHP allerdings keinen Rückgabewert definieren. Zudem steht vor dem Funktionsnamen in PHP immer " | ||
+ | |||
+ | |||
+ | **Java** | ||
+ | <code java> | ||
+ | int xy() { | ||
+ | | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | **PHP** | ||
+ | <code php> | ||
+ | | ||
+ | | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | ==== Zugriff auf Variablen innerhalb von Funktionen ==== | ||
+ | Wenn man in PHP eine neue Variable einführt und daraufhin in einer Funktion auf diese zugreifen möchte, so kann das häufig zu Problemen führen. | ||
+ | Schuld daran ist, dass die Funktion diese Variable nicht " | ||
+ | |||
+ | <code php> | ||
+ | | ||
+ | | ||
+ | |||
+ | | ||
+ | | ||
+ | echo "Das ist meinString: " | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | ==== Zugriff auf GET/POST ==== | ||
+ | Einer der wichtigsten Aspekte einer dynamischen Webseite ist die Interaktion mit dem Anwender. Die einzige Möglichkeit des Anwenders Informationen an das PHP-Skript zu übermitteln, | ||
+ | |||
+ | Der Zugriff in PHP erfolgt über die globalen Variablen $_GET und $_POST, welche ein assoziatives Array darstellen. Auf den Wert des Schlüssels " | ||
+ | |||
+ | ==== Beispiel: Umgang mit einem GET-Parameter ==== | ||
+ | Hier ein Beispiel, wie man per GET übertragene Daten auswerten kann: | ||
+ | |||
+ | <code php> | ||
+ | <? | ||
+ | | ||
+ | |||
+ | if (empty($besucherName)) { | ||
+ | echo "Bitte gib einen Namen an!"; | ||
+ | } else { | ||
+ | echo "Hallo " . $besucherName . "< | ||
+ | echo "Ihr Name hat " . strlen($besucherName) . " Buchstaben."; | ||
+ | } | ||
+ | ?> | ||
+ | </ | ||
+ | |||
+ | ==== $_POST ==== | ||
+ | Das selbe Beispiel kann man auch für die POST Methode verwenden. Hierzu muss man nur die erste Zeile des obigen Codes folgendermaßen umändern: | ||
+ | |||
+ | <code php> | ||
+ | | ||
+ | ... | ||
+ | </ | ||
+ | |||
+ | ====$_REQUEST ==== | ||
+ | Weiß man nicht, ob die gesendeten Daten über GET oder POST verfügbar sind, so kann man auch $_REQUEST benutzen was die Daten aus beiden Methoden enthält. | ||
+ | <code php> | ||
+ | | ||
+ | ... | ||
+ | </ | ||
+ | |||
+ | ==== Fehlersuche ==== | ||
+ | Für die Fehlersuche kann man die Ausgabeanweisung //echo// benutzen. Beispiele: | ||
+ | <code php> | ||
+ | echo $Anzahl; | ||
+ | echo " | ||
+ | </ | ||
+ | |||
+ | Detailliertere Informationen zu einer Variablen erhält man mit // | ||
+ | <code php> | ||
+ | var_dump($Anzahl); | ||
+ | </ | ||
+ | |||
+ | Die Variablen $_GET, $_POST, $_REQUEST, usw. sind Felder (arrays), deren Inhalt man sich auch mit // | ||
+ | <code php> | ||
+ | print_r($_GET); | ||
+ | </ | ||
+ | |||
+ | ==== Zugriff auf eine MySQL-Datenbank ==== | ||
+ | PHP stellt derzeit drei Schnittstellen zum Zugriff auf MySQL/ | ||
+ | - mysql - eine veraltete prozedurale Schnittstelle, | ||
+ | - mysqli - eine objektorientierte Schnittstelle ab PHP 5.0 | ||
+ | - PDO_MySQL - eine streng objektorientierte Schnittstelle ab PHP 5.1 | ||
+ | |||
+ | |||
+ | Der MySQL-Datenbankserver pflegt eine eigene Benutzer- und Rechteverwaltung. Wir müssen uns also zunächst verbinden und authentifizieren. Dazu erzeugen wir ein Objekt der mysqli-Klasse, | ||
+ | <code php> | ||
+ | $mysqli = @new mysqli($Datenbankserver, | ||
+ | </ | ||
+ | Über das $mysqli-Objekt können wir jetzt SQL Abfragen durchführen. | ||
+ | <code php> | ||
+ | | ||
+ | |||
+ | while ($entry = mysql_fetch_assoc($result)) { | ||
+ | echo " | ||
+ | } | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Aufgaben ===== | ||
+ | Ziel der u.g. Aufgaben ist ein sehr einfaches Gästebuch auf PHP-Basis mit Nutzung einer MySQL-Datenbank zum Speichern der Einträge. | ||
+ | |||
+ | **Aufgabe 1**\\ | ||
+ | Nachdem der Benutzer das Formular abgeschickt hat, soll überprüft werden, ob er alle Formularfelder auch ausgefüllt hat. Ist dies der Fall, werden ihm seine Eingaben zur Bestätigung ausgegeben. Andernfalls bekommt er eine Fehlermeldung angezeigt. | ||
+ | |||
+ | Folgende Informationen könnten hierfür nützlich sein: | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | |||
+ | **Aufgabe 2**\\ | ||
+ | Bestehende Einträge anzuzeigen ist eine der Hauptaufgaben eines Gästebuchs. Die Einträge sollen nun auf der Startseite aufgelistet werden. Wir verzichten hierbei darauf, die Einträge auf mehrere Seiten zu verteilen, alle Einträge sollen auf einer einzelnen Seite gezeigt werden. (eintraege.php) | ||
db/webdatenbanken.txt · Zuletzt geändert: 2016/11/22 20:44 von roehner