Montag, 18. Oktober 2010

Oktober 2010 / PHP

ÜK 307 + 131

Ich besuchte die ÜKs 307(Interaktive Website erstellen) und 131(Arbeitspaket aus einem IT Projekt abwickeln). Die ÜKs hatten wir im "doppelpack". Das heisst wir haben eine Website mit Datenbankanbindung erstellt und dieses Projekt für unsere Übungen aus dem Modul 131 genommen.

Wir bildeten ein 3er Team. Ich war zuständig für den Code der Website, ein anderer für das Design und noch einer für die Dokumentation. Unsere Website stellt die besten Filme aus dem Jahre 2009 vor. Wir haben 7 Filme gewählt, die ziemlich gut abgeschnitten haben, oder wir sehr gut fanden und fügten zu jedem Film einen Eintrag in unsere Datenbank mit einer kurzen Zusammenfassung des Inhalts und einem Trailer ein. Den Seiteninhalt der einzelnen Filmseiten holten wir so aus der Datenbank.

Wir fügten ebenfalls ein Gästebuch ein. Dort kann jeder Besucher etwas hineinschreiben. Jedoch werden URLs geblockt um Spam zu verhindern.
Ebenfalls fügten wir die Besucherzahl unserer Website ein, welche wir jedoch nicht in der Datenbank sondern in einem Textfile speicherten.

Dabei lernte ich natürlich PHP kennen. PHP kann eine Website mit einer Datenbank verbinden und dazu nutzten wir es auch.
Um PHP nutzen zu können, kann man ein ganz normales HTML-File nehmen und PHP Code einfügen. Jedoch muss man anschliessend noch die Dateiendung in .php ändern.

Leider versucht dieser Blog meinen PHP Code zu interpretieren und daher kann ich euch nicht die korrekte Syntax zeigen, bzw. ich kopiere die Eröffnung des PHP Codes als Bild hinein.

Es muss immer deklariert werden, sobald PHP-Code vorkommt. Das geschieht folgendermassen:


?>

Innerhalt dieser beiden Zeichen-Codes kann man php-codieren. Aufgrund des oben genannten Problems werde ich diese Eröffnung und Schliessung des PHP-Codes nichtmehr einfügen.
Das einfachste ist eigentlich einen Text auszugeben. Das funktioniert folgendermassen:

echo "Mein Text";

So erscheint auf der Website der Text "Mein Text".

Als Nächstes kann man Variablen verwenden. Sie sind sehr einfach zu verwenden und müssen nicht direkt deklariert, sondern können direkt verwendet werden. Eine Variabel wird immer mit einem $ davor verwendet. Hier ein Beispiel:

$variabel1 = "Mein Text";
echo $variabel1

Das Ergebnis ist dasselbe wie beim oberen Beispiel, jedoch wird es über eine Variabel gemacht.

Die Verbindung auf den SQL-Server war einer der wichtigsten Punkte in unserem Projekt. Und so wird es gemacht:


$link = mysql_connect("host", "user", "password") or die ("Keine Verbindung möglich");


Damit wird versucht auf den MySQL-Server zuzugreifen. Mit "or die" kann man sagen, was passieren soll, wenn die Verbindung nicht aufgebaut werden kann. Hier wird "Keine Verbindung möglich" ausgegeben.

Anschliessend muss man noch die Datenbank auswählen, auf welche man zugreifen möchte:


mysql_select_db("filme") or die ("Die Datenbank existiert nicht");

Wird die angegebene Datenbank, hier "filme", nicht gefunden wird wieder durch "or die" eine Meldung ausgegeben. Hier: "Die Datenbank existiert nicht"
Das ganze könnte man natürlich auch ohne "or die" machen, ich denke jedoch es ist nützlich wenn man eine kurze Meldung ausgibt, weshalb es nicht funktioniert.

Um an den Inhalt der Datenbank zu gelangen, muss man das Select-Statement verwenden:


$Abfrage = "SELECT * FROM film WHERE titel = 'Avatar' ";

Das übergibt der Variabel Abfrage das Select-Statement. In unserer Datenbank "filme" gibt es eine Tabelle namens "film", diese wird hier ausgewählt. Es werden alle Einträge heraus genommen, in denen im Datenfeld "titel" "Avatar" steht. Bei uns gibt es natürlich nur einen Eintrag mit diesem Namen und daher konnten wir ihn so identifizieren.
Der Inhalt aus der Datenbank ist jedoch immer noch nicht geholt. Die Variabel hat nur das Statement gespeichert, es wurde noch nicht ausgeführt. Dazu benutzen wir folgendes:

$res = mysql_query($Abfrage);
$row = mysql_fetch_assoc($res);
Der mysql-query Befehl gibt bei erfolgreichem ausführen einen Ereignis-Handler zurück. Mit diesem kann man auf die zurückgegebenen Datensätze zugreifen.
Mit dem mysql_fetch_assoc Befehl wird der Ereignis-Handler an die row Variabel übergeben und man kann die Feldnamen als Schlüssel verwenden.
Unsere Tabelle hat 3 Spalten: "titel", "trailer" und "inhalt".
Nun konnte ich auf den Inhalt des geholten Datensatzes zugreifen. Mit folgendem Code gebe ich den Inhalt des Trailer-Feldes aus:
echo $row['trailer'];
So konnte ich dann auf alle Informationen aus der Datenbank zugreifen und das Projekt realisieren.
Zum Schluss gibt es noch unser Design, welches nicht ich erstellt habe: