Multimedia im Überblick/ Gestaltung/ Inhalte/ Dynamische Seiten


In den letzten Jahren erlebte das Internet eine große Entwicklung. Die bekannten „klassischen Homepages“, die man in Frontpate, Dreamweaver & Co. erstellen kann werden zunehmend von sogenannten „dynamischen Websites“ abgelöst. Dynamisch deshalb, weil man dabei eine strikte Trennung von Content, also üblicherweise Text, und Layout vornimmt. Abbildung eins zeigt einen direkten Vergleich der beiden Ansätze und verdeutlicht die Probleme einer dateibasierten, also klassischen, Homepage:

  • Der Content ist hardcoded in der html Datei verankert.
  • Das Layout muss in jede html Datei inkludiert werden.
  • Interaktion mit dem Benutzer ist so gut wie nicht möglich
  • Erhöhter Traffic da dateibasiert
  • Etc.

Voraussetzungen

Bearbeiten

Anders als klassische Websites, die auf jedem Computer der über einen Internet-Browser verfügt funktionieren, benötigen dynamische Websites eine spezielle Infrastruktur. Eine Standardkonfiguration wäre zum Beispiel ein Apache Webserver mit PHP und einer MySQL Datenbank wie es Xampp installiert. Natürlich existieren eine Vielzahl von Kombinationsmöglichkeiten und die Auswahl des richtigen Webservers sowie der Datenbank hängt stark vom Anwendungsbereich der Website ab. So beispielsweise unterstützt MySQL nur eine geringe Anzahl von räumlichen Funktionen auf Datenbankebene und wird von Oracle bei weitem übertroffen. Empfehlenswert für die Entwicklung von dynamischen Websites ist auch eine PHP IDE, also eine Entwicklungsumgebung, wie Maguma Studio, Eclipse oder Zend sowie ein Tool für die Datenbankadministration. Stellvertretend für letzteres wäre der Jdeveloper, SQLDeveloper oder phpMyAdmin zu nennen.

In speziellen Fällen muss ausserdem PHP noch konfiguriert werden. In der Standardinstallation (die z.B. vom Xampp Installations Programm durchgeführt wird) sind die wichtigsten Erweiterungen, sogenannte Extensions, bereits aktiviert. Möchte man jedoch webbasierte Bildbearbeitung den Betrachtern seiner Homepage anbieten, dann benötigt man eine der vielen kostenlosen Extensions. Im konkreten Fall wäre dies die gdLib, die in der php.ini aktiviert wird. Nutzt man nicht die weit verbreitete Datenbank MySQL, dann ist eine Aktivierung der Extension für die jeweilige Datenbank von Nöten. Bei Oracle wäre dies z.B. die Extension oci8.

Hat man sich erst mal in die Materie eingearbeitet, dann bietet einem die Kombination von PHP und einer Datenbank eine Fülle von Möglichkeiten. Ein Paradebeispiel für eine dynamische Website ist Studivz (Abbildung 2).

Betrachtet man diese Website aus dem Auge eines Entwicklers, dann fällt auf, dass für jeden Benutzer andere Inhalte geladen werden, doch das sieht bei jedem gleich aus. Somit kann man festhalten, dass nur das Layout fix ausgezeichnet wurde, also wo in welcher Farbe welcher Text steht. Features wie „Wer zuletzt deine Seite angesehen hat“ wären ohne die Verwendung einer Datenbank nicht möglich. Zum besseren Verständnis folgt nun ein praktisches Beispiel: Es wird eine Geburtstagstabelle in html ausgezeichnet und in weiterer Folge diese Tabelle dynamisch gefüllt – und zwar mit Daten aus einer MySQL Datenbank.

Ein einfaches Beispiel

Vorname Nachname Geburtstag
Martin Horvath 30.01.1984
Zelle 2 Zelle B
Zelle 3 Zelle C

Die obige Tabelle würde als html Datei folgendermaßen aussehen:

<p>Wir basteln eine Tabelle</p>
  <table border="1">
   <tr>
    <td>Vorname</td>
    <td>Nachname</td>
    <td>Geburtstag</td>
   </tr>
   <tr>
    <td>Martin</td>
    <td>Horvath</td>
    <td>30.01.1984</td>
   </tr></table>

Ziel ist es nun, den roten Teil des html Codes auszutauschen und dynamisch füllen zu lassen. Hierfür ist folgendes nötig: 1. Verbindungsaufbau zur Datenbank 2. Abfrage der gewünschten Inhalte 3. Verarbeiten des Resultats in einer Schleife

Der Verbindungsaufbau ist bereits Bestandteil des php Codes und sieht für eine MySQL bzw. Oracle Datenbank folgendermaßen aus:

MySQL Connect

	$connection = mysql_connect('host','user',' pass');
	$db = mysql_select_db('mydatabase');

Oracle Connect

$db = '(DESCRIPTION = myConn
			(ADDRESS = (PROTOCOL = TCP) 
			(HOST = ninja)(PORT = 1521)) 
			(CONNECT_DATA = 
				(SERVER = DEDICATED) 
				(SERVICE_NAME = orcl)))'; 
$conn = oci_connect($username, $password, $db);

Im einfachsten Fall benötigt man lediglich den Namen des Computers, auf dem die Datenbank läuft sowie Benutzernamen und Passwort. Der Vergleich der beiden Verbindungen verdeutlicht aber, wie komplex dies werden kann. Für eine Verbindung zur Oracle Datenbank werden Information über den Windows-Dienst, den Port, etc. benötigt. Nicht zuletzt deshalb wird MySQL für kleine Aufgaben vorgezogen.

Die Abfrage der Datenbank wird mittels SQL (Structured Query Language) gemacht. Auf diese Weise lassen sich alle Datenbankinhalte abfragen und sogar diverse Operationen durchführen wie etwa Datumskonversionen, einfache Rechnungen, etc. Im konkreten Fall würde die benötigte SQL Anweisung wie folgt aussehen:

SELECT Name,Vorname,GebDat FROM myCal;

Das Ergebnis dieser Abfrage wird dann in eine php Schleife eingebunden und automatisiert als Tabellenzeile ausgegeben. Dabei muss aber nicht zwingend eine Tabellenzeile erstellt werden. Genauso könnte z.B. einfach nur eine neue Zeile für jedes Ergebnis erstellen lassen oder sogar eine eigene Tabelle für jede Ergebniszeile. Nachfolgend ein Beispiel für die Verarbeitung des Ergebnisses in einer Tabellenzeile:

$result = mysql_query($query);
while($row = mysql_fetch_array($result,MYSQL_ASSOC){
		echo(<tr>);
		echo(<td>.$row['Vorname'].</td>);
		echo(<td>.$row['Name'].</td>);
		echo(<td>.$row['GebDat'].</td>);
		echo(</tr>);
}

Um nun das Beispiel zu komplettieren werden die drei Schritte zusammengefasst und ergeben das folgende Codegerüst:

<?php
$connection = mysql_connect('host','user',' pass');
$db = mysql_select_db('mydatabase');?>
<p>Wir basteln eine Tabelle</p>
<table border="1">
 <tr>
	<td>Vorname</td><td>Nachname</td><td>Geb</td>
 </tr><?php
 while($row = mysql_fetch_array($result,MYSQL_ASSOC){
		echo(“<tr>”);
		echo(“<td>”.$row['Vorname'].”</td>”);
		echo(“<td>”.$row['Name'].”</td>”);
		echo(“<td>”.$row['GebDat'].”</td>”);
		echo(“</tr>”);
} ?></table>

Baukastensysteme

Bearbeiten

Natürlich ist das Einbinden von php code nicht jedermanns Sache. Mittlerweile gibt es eine Vielzahl von Komplettlösungen, die es sogar unerfahrenen Computernutzern ermöglichen, eine dynamsiche Website zu erstellen. Stellvertretend hierfür wäre das Open Source Projekt Joomla zu nennen. Die Installation ist nicht komplizierter als die Installation eines Computerspiels und die Editierung bzw. Einbringung von neuem Content erinnert bereits an diverse Office Produkte. Weniger mächtig sind sogenannte Blogs: WordPress wäre hier als gutes Beispiel zu nennen. All diese Systeme haben aber gemeinsam, dass sie auf php und einer MySQL Datenbank aufbauen.

Doch nicht immer dreht sich alles um Content und Text. Dynamische Websites erlauben es, das Surfverhalten der Nutzer zu analysieren und so das Contentangebot noch spezifischer abzustimmen. Eine beliebte Anwendung ist auch das Personalisieren von Websites. So ist es möglich jedem Benutzer, auf seine Vorlieben abgestimmte News zu präsentieren oder die Website zu Färben. Das Personalisieren einer Website schließt auch die Optimierung auf den Browser des Benutzers ein. Oft wird die Kombination von php und MySQL auch einfach als Workaroung genutzt um schnell und effizient ein funktionierendes System zu erstellen. Es ist beispielsweise keine Hexerei mehr ein SMS Voting für die eigene Homepage zu basteln – eine solche Lösung hätte vor 5 Jahren noch ein großes Loch ins Budget jeder Homepage geschlagen.

Alternativen

Bearbeiten

Natürlich ist der Markt geprägt von Alternativen. Hierzu kann man das Microsoft Pendant zu php zählen: asp (active server pages). Dieses hat aber den Nachteil dass man jede Erweiterung, also Extension, bezahlen und in den Webserver integrieren muss. Optimiert ist asp ausserdem für den IIS und dieser steht dem Apache in Sachen Sicherheit immer noch nach. Das beliebte htaccess, ein Feature zum Vergeben von Lese- und Schreibrechten, klappt dort nicht ohne weiteres. Die Technologien durchlaufen einen ständigen Update-Prozess und es ist für jeden Webdesigner Pflicht, auf dem Laufenden zu bleiben. Dies verdeutlicht auch die Herkunft des Namens „Apache“. Die Bezeichnung für den mittlerweile populärsten Webserver kommt nämlich von „A patchy Webserver“, was so viel heißt wie „es kommen immer neue Patches die Fehler beseitigen“. Zu den weiteren Alternativen zählen ausserdem noch JSP (java server pages) und je nach Anwendung auch ein Java Applet oder JavaScript.

Bearbeiten

Nähere Informationen zum Thema gibt es im Web reichlich. Ein guter Einstieg in php mit vielen praktischen Beispielen ist http://www.schattenbaum.net/php/anfang.php. Hat man sich die ersten Beispiele angesehen und trotzdem noch Fragen, dann findet man auf http://www.tutorials.de mit Sicherheit die Antwort darauf. Die aktuellen Versionen von php und der Datenbank MySQL findet man auf http://www.php.net bzw. http://www.mysql.de