Benutzer-Werkzeuge

Webseiten-Werkzeuge


db:webdatenbanken

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
db:webdatenbanken [2014/05/01 13:41]
roehner [Zugriff auf eine MySQL-Datenbank]
db:webdatenbanken [2016/11/22 20:44] (aktuell)
roehner [Aufgaben]
Zeile 4: Zeile 4:
 ===== Voraussetzungen ===== ===== Voraussetzungen =====
 ==== Datenbankserver ==== ==== 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://www.mysql.org |MySQL]].+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://dev.mysql.com/ |MySQL]].
  
 Unser Datenbankserver ist erreichbar über http://luo-darmstadt.de/phpMyAdmin. Unser Datenbankserver ist erreichbar über http://luo-darmstadt.de/phpMyAdmin.
Zeile 18: Zeile 18:
 Um eine Anwendungslogik bereitzustellen, benötigen wir eine Programmiersprache. Im Zusammenhang mit MySQL wird oft die Skriptsprache PHP verwendet, da sie einfach zu erlernen und weit verbreitet ist. Um eine Anwendungslogik bereitzustellen, benötigen wir eine Programmiersprache. Im Zusammenhang mit MySQL wird oft die Skriptsprache PHP verwendet, da sie einfach zu erlernen und weit verbreitet ist.
  
-Einen Einstieg in PHP bietet das [[http://www.php.net/manual/de |Handbuch auf PHP.net]].+Einen Einstieg in PHP bietet das [[http://de2.php.net/manual/de|Handbuch auf PHP.net]].
  
 Die PHP-Skripte werden auf dem Server ausgeführt und müssen deshalb auch dort vorhanden sein. Zum Übertragen der Die PHP-Skripte werden auf dem Server ausgeführt und müssen deshalb auch dort vorhanden sein. Zum Übertragen der
Zeile 126: Zeile 126:
 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, besteht in den HTTP-Request-Methoden GET und POST. Bei beiden Methoden können mehrere Schlüssel-Wertpaare an den Webserver übertragen werden, die dann aus dem PHP-Skript abrufbar sind. Bei GET werden die Daten in der URL <nowiki>(http://www.luo-darmstadt.de?schlüssel=wert&schlüssel2=wert</nowiki>), bei POST in den Header-Informationen, also für den Anwender unsichtbar, transportiert. Die POST-Methode ist aus HTML-Dokumenten nur über Formulare nutzbar. 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, besteht in den HTTP-Request-Methoden GET und POST. Bei beiden Methoden können mehrere Schlüssel-Wertpaare an den Webserver übertragen werden, die dann aus dem PHP-Skript abrufbar sind. Bei GET werden die Daten in der URL <nowiki>(http://www.luo-darmstadt.de?schlüssel=wert&schlüssel2=wert</nowiki>), bei POST in den Header-Informationen, also für den Anwender unsichtbar, transportiert. Die POST-Methode ist aus HTML-Dokumenten nur über Formulare nutzbar.
  
-Der Zugriff in PHP erfolgt über die globalen Variablen $_GET und $_POST, welche ein assoziatives Array darstellen. Auf den Wert des Schlüssels "name" greifen wir bspw. über den Ausdruck $_GET["name"], wenn dieser per GET übermittelt wurde, zu.+Der Zugriff in PHP erfolgt über die globalen Variablen $_GET und $_POST, welche ein assoziatives Array darstellen. Auf den Wert des Schlüssels "name" greifen wir beispielsweise über den Ausdruck $_GET["name"], wenn dieser per GET übermittelt wurde, zu.
  
 ==== Beispiel: Umgang mit einem GET-Parameter ==== ==== Beispiel: Umgang mit einem GET-Parameter ====
Zeile 177: Zeile 177:
  
 ==== Zugriff auf eine MySQL-Datenbank ==== ==== Zugriff auf eine MySQL-Datenbank ====
-PHP stellt seit Version 5.1 eine neue Schnittstelle zum Zugriff auf Datenbanken bereit, die [[http://de2.php.net/manual/de/intro.pdo.php |PHP Data Objects (PDO)]].+PHP stellt derzeit drei Schnittstellen zum Zugriff auf MySQL/MariaDB-Datenbanken bereit
 +  - mysql - eine veraltete prozedurale Schnittstellenicht mehr in PHP 7 vorhanden 
 +  - mysqli - eine objektorientierte Schnittstelle ab PHP 5.
 +  - 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 PDO-Klasse, dessen Konstruktor wir einen sogenannten Data Source Name (DSN), den Benutzernamen und das Passwort als Parameter übergeben:+ 
 +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, dessen Konstruktor wir den Datenbankserver, den Benutzernamendas Passwort und die Datenbank als Parameter übergeben:
 <code php> <code php>
- $db = new PDO("mysql:host=localhost;dbname=inflk2009"<Benutzername><Passwort>);+  $mysqli @new mysqli($Datenbankserver$Benutzer$Passwort, $Datenbank);
 </code> </code>
-Über das [[http://de2.php.net/manual/de/class.pdo.php |PDO-Objekt]] können wir jetzt mittels SQL Abfragen durchführen.+Über das $mysqli-Objekt können wir jetzt SQL Abfragen durchführen.
 <code php> <code php>
- $query = $db->query("SELECT * FROM gaestebuch"); + $result = $mysqli->query("SELECT * FROM gaestebuch"); 
- $result $query->fetchAll(); + 
-  + while ($entry mysql_fetch_assoc($result)) {
- foreach($result as $entry) {+
    echo "Eintrag von " . $entry["absendername"];    echo "Eintrag von " . $entry["absendername"];
  }  }
-</code> 
- 
-Da der Schulserver aber PDO derzeit nicht unterstützt, muss die SQL-Verbindung über die MySQL-Funktionen von PHP aufgebaut werden: 
-<code php> 
- $db = mysql_connect("localhost", "<Benutzername>", "<Passwort>"); 
- mysql_select_db("<Datenbankname>", $db); 
    
- $query = mysql_query("SELECT * FROM gaestebuch", $db); 
-  
- while($entry = mysql_fetch_object($query)) { 
-   echo "Eintrag von " . $entry->absendername; 
- } 
 </code> </code>
 +
  
 ===== Aufgaben ===== ===== 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. Zur Hilfe bei der Umsetzung gibt es [http://schule.kai-wembacher.de/files/12/informatik/php/php-gaestebuch-vorlage.zip HTML-Vorlagen].+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**+**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. 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.
  
Zeile 217: Zeile 210:
   * [[http://www.php.net/manual/de/control-structures.if.php |if-Anweisung]]   * [[http://www.php.net/manual/de/control-structures.if.php |if-Anweisung]]
  
-**Aufgabe 2**+**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) 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)
- 
-Hierfür werden die [[http://de2.php.net/manual/de/intro.pdo.php PDO]] benötigt 
  
db/webdatenbanken.1398944468.txt.gz · Zuletzt geändert: 2014/05/01 13:41 von roehner