IT-Zertifikat der Phil.Fak Kurs 2: Allgemeine Technologien II Patrick Sahle XML-Basics WS 08/09 Organisatorisches • Zeiten und Pausen • IT-Zertifikat • Teilnehmer • WLan läuft? XAMPP läuft? • Literatur? • Kursprojekt, Kursziel • Didaktische Mantras • Skills not Knowledge • Konzepte, nicht Syntax • Hilfe zur Selbsthilfe (Finden Sie die Lösungen selbst!) • CPs und Arbeitsaufwand; Noten • "Klappe zu" heißt Klappe zu! • Fragen? Kursinhalte • Netzwerke • Internet-Grundtechnologien • ein Schritt zurück: HTML/CSS • Programmieren am Beispiel: PHP • Online-Datenbanken: MySQL Beispielprojekt • "Pimp my Book" • • • • http://www.injoest.ac.at/projekte/laufend/mittelalterliche_judenurkunden/ http://www.injoest.ac.at/upload/Regesten_Text(1).pdf http://www.injoest.ac.at/upload/Regesten_Anhang(1).pdf Worum geht es hier? Was ist das? Wie funktioniert das? • Zielstellungen • Verwandeln Sie ein digitalisiertes Buch in eine interaktive OnlineAnwendung auf der Basis von PHP und MySQL • Lösungsbeispiele mit anderen Technologien (X) • http://itzert.phil-fak.uni-koeln.de/Kurs4/Coutura/regesten.html • http://itzert.phil-fak.uni-koeln.de/Kurs4/Sahle/ • http://itzert.phil-fak.uni-koeln.de/Kurs4/Quiring/regesten.html • Lösungsbeispiele mit PHP(MySQL • http://localhost/Boettger/HaBoettgerSQL.php • Im Hinterkopf: Vergleich X-Technologien vs. PHP/MySQL (Vorteile, Nachteile, Zusammenspiel) Netzwerke • Referate: • Eike Steinhoff - entfällt • Kerstin Kropmanns Netzwerke • Ein Computernetz ist ein verteiltes System von autonomen und räumlich getrennten Computern, die durch Datenübertragungs- und Vermittlungseinrichtungen sowie Vermittlungseinrichtungen sowie Übertragungsmedien miteinander verbunden sind. • Funktion: verteilte Informationsspeicherung, Informationsübermittlung, Informationsverarbeitung • Kommunikation über eine Hierarchie von Protokollen • Protokoll = Menge von Regeln, die das Verhalten von Instanzen oder Prozessen bei der Kommunikation festlegt • Verbindungs-Auf und -Abbau, Formate, Codierungen, Fehlererkennung Netzwerke • Netzwerktypen: • Terminal-Netz, Peer-to-Peer-Netz, Client-Server-Netz • Klassifikation von Netzen durch Übertragungskapazität und räumliche Ausdehnung • • • • • • PAN (Personal Area Network) LAN (Local Area Network) SAN (Storage Area Network) MAN (Metroplitan Area Network) WAN (Wide Area Network) GAN (Global Area Network) Netzwerke • OSI-Referenzmodell • Open Systems Interconnection Reference Model • … "geschichtete Kommunikationsarchitektur" … Netzwerke • DoD-Schichtenmodell • Department of Defense - Schichtenmodell Netzwerke • OSI-Schichten und DoD-Schichten Netzwerke • Lokale Netzwerke • HUB, Router, Switch • Server, Firewall • Zentrale Dienste, Speicherverwaltung, Nutzerund Rechteverwaltung, Druckerverwaltung etc. • Software: Netware (z.B. Novell Netware), Groupware Internet-Grundtechnologien • Referate: • Tibor Toth: • Client-Server-Architektur • Alexander Recht: • Mailprotokolle • Fabian Heerbaart: • DNS • HTTP Internet-Grundtechnologien • DNS • Domain Name System • Auflösung eines Hostnamen zu einer IP-Adresse • Verteilter Verzeichnisdienst zur Verwaltung des Namensraums des Internets • Hierarchische Struktur des Namensraums (Baum) • TLD = Top Level Domain • Hierarchie der Nameserver (Software / Hardware) • Domains: Registrierungsorganisationen; IP-Adressen: Provider • Konsole: nslookup; Browser: www.whois.net, www.denic.de • Beispiel: www.i-d-e.de (whois.net - dig) ide.uni-koeln.de Internet-Grundtechnologien • http • Hypertext Transfer Protocol • OSI-Modell: Anwendungsschicht, setzt auf Transportschicht (TCP) bzw. Vermitlungsschicht (IP) auf • HTTP-Request und HTTP-Response • Request: • Host + Anfrage • GET, POST plus weitere Request-Methoden • Response: • Statuscodes • HTTP-Header und HTTP-Body • https – sichere Kommunikation zwischen Client und Server durch zusätzliches Verschlüsselungsprotokoll zwischen den Protokollschichten http und TCP. • Beispiel: www.ide.uni-koeln.de – Firefox Live Headers Internet-Grundtechnologien • GET und POST • Übertragung zusätzlicher Informationen bei einem http-Request • GET • Informationen als Teil der URL • http://www.regesten.org/rgjoem/regesten.php?nummer=123 • Übergabe von Paaren aus Argument und Wert • POST • Informationen im Body-Teil des HTTP-Requests • Übergabe von Paaren aus Argument und Wert • Beispiel: Live Header zu localhost/Kurs/For-Schleife-1.php Ein Schritt zurück: HTML, CSS, Javascript • Referat: • Philipp Wolfram Ein Schritt zurück: HTML, CSS, Javascript • Wissensstand? • Ggf. Schnellkurs • • • • • • Grundkonzepte Aufbau einer HTML-Datei Struktur eines HTML-Body Wichtige Elemente CSS-Konzepte Javascript, DOM • Alles, was Sie brauchen finden Sie hier: • http://de.selfhtml.org/html/index.htm • http://de.selfhtml.org/css/index.htm Nützlich: Firebug-Plugin für Firefox Übungen: HTML und CSS • Erstellen Sie aus einem Regest eine HTMLSeite (mit assoziierter CSS-Datei) • Erstellen Sie eine Projekt-Startseite (mit Auswahlmenüs und ggf. Eingabefeldern) • Besprechung der Entwürfe Einstieg in PHP • Referat: • Faatin Hegazi Einstieg in PHP • Rekursives Akronym: PHP Hypertext Preprocessor • PHP als Programmiersprache für dynamische Webseiten • Stärken: Einfachheit, Serverintegration, Datenbankanbindung • Interpretierte Sprache (PHP-Interpreter auf dem Server) • Schwache und dynamische Typisierung • Mögliche Einbindung in HTML-Code • HTML wird serverseitig vorverarbeitet (PHP-Teile werden ausgeführt und dabei ersetzt) • Vergleich zu Javascript und Perl • Aktuelle Version: 5.2.8 PHP schreiben: Editoren • Grundsätzlich: PHP-Code ist Text und kann mit einem beliebigen Editor geschrieben werden • Allgemeine Editoren • vi, emacs • Editoren für andere Zwecke • Dreamweaver, oXygen • Spezielle PHP-Editoren (IDEs) • Maguma Open Studio, ZEND Studio, PHPEclipse, KDevelop, PHPEdit, NuSphere PhpED etc. Grundlegendes in PHP • Referat: • Johannes Lenz Grundlegendes in PHP • Befehle mit ; abschließen !!! • Kommentare • // einzeilige Kommentare (auch: #) • /* … */ mehrzeilige Kommentare • Strings in doppelten Anführungszeichen ("… hier werden Anweisungen noch ausgewertet …") und einfachen Anführungszeichen ('… hier wird wirklich alles als String behandelt …') • Schachtelung von Anführungszeichen Grundlegendes in PHP • Konstanten und Variablen • Datentypen (Zahlen, Strings, Booleans, Objekte) • Keine strenge Typisierung • Variablen können typisiert werden, Typen können umgewandelt werden, PHP versucht Funktionen anzuwenden • $variable = wert • Namenskonventionen: Keine Leerzeichen; nur Buchstaben, Zahlen und Unterstrich; reservierte Wörter! • Gültigkeitsbereich von Variablen • lokal (in Funktionen), global, superglobal (Systemvariablen, z.B. $_GET) • Arrays • numerisch indizierte Arrays • $var = array("1","2","3") auch: $array[n] = "wert" • assoziative Arrays • $var = array("nr"=>001, "datum"=>"1323") • ein- und mehrdimensionale Arrays Grundlegendes in PHP • Operatoren • • • • • • • arithmetisch (+ - * / ) Inkremente/Dekremente (++ --) logisch (AND, OR, !) Vergleiche (>, <, <=, ==, !=) Zuweisungen (=, viele andere) Verkettung ( . ) ("Konkatenation") … viele weitere Grundlegendes in PHP • Kontrollstrukturen und Schleifen • if • if-else if ( Bedingung ) { Anweisungsblock } if ( Bedingung ) { Anweisungsblock TRUE} else { Anweisungsblock FALSE} • if-elseif-else • switch switch ( Ausdruck ) { • for case Wert1: Anweisungsblock … break; case Wert2: Anweisungsblock … break; … default: Anweisungsblock … break; } for (Initialisierung; Bedingung; Änderung) { Anweisungsblock } Bsp: for ($i=1; $i<10; $i++) {echo "$i";} • while while ( Bedingung ) { Anweisungsblock } • foreach foreach (array as $wert) { Anweisungsblock } PHP in HTML • Referate: • Anna Job • Angela Brinck PHP in HTML • PHP-Code kann beliebig in einer HTML-Datei "eingestreut" werden • PHP-Code wird bei der Ausführung durch das Ergebnis des Codes ersetzt • PHP-Code kann durch HTML unterbrochen werden PHP Code-Konventionen • Keine Vorschriften, nur Empfehlungen! • Benutzen Sie sprechende Bezeichner • Trennen Sie Teil-Namen durch Unterstrich oder großen Anfangsbuchstaben • Rücken Sie hierarchisch ein (Tabs benutzen) • Kommentieren Sie! PHP Poor Man's Debugging • Immer ein Semikolon am Ende? • Alle Klammern geschlossen? • Anführungszeichen geschlossen? • … und korrekt geschachtelt? • Alle Variablen direkt anzeigen lassen • echo "Wert: $var"; • print_r($array); PHP-Übungen • Hallo Welt • Ein Auswahlmenü • Ohne Funktionalität • • • • • (HelloWorld.php) (For-Schleife.php) live-Header?! Mit Rückmeldung Mit Beibehaltung des ausgewählten Wertes GET statt POST Den submit-Button loswerden (Javascript) • Ein Suchfeld • Leeres Submit abfangen (For-Schleife-1.php) (For-Schleife-2.php) (For-Schleife-3.php) (For-Schleife-4.php) (Suchfeld.php) (todo) • Ein Array benutzen • Datum der ersten zehn Regesten; Gib zu einem angefragten Regest das Jahr zurück (todo) Funktionen in PHP • Referat: • Arne Schunack (entfällt) Funktionen in PHP • Funktionen werden aufgerufen, es wird ihnen etwas übergeben und sie liefern etwas zurück • $variable = funktion (wert1, wert2, …) • Es gibt viele vorgefertigte Funktionen • Funktionsreferenz: http://de3.php.net/manual/de/funcref.php • Z.B. Dateisystem (fopen, fgets) • Z.B. Textverarbeitung, Zeichenketten (substr) • Z.B. Variablen, Arrays (shuffle) • Funktionen können selbst definiert werden • function meineNeueFunktion (Parameter1, Parameter2, …) { Anweisungen; return $rückgabe } • Einbindung externer Funktionsbibliotheken mit include PHP-Übungen • phpinfo () • Datei auslesen • Drop-Down Jahrzehnte (mit Jahrzehnte.txt; Datei_auslesen.php) • Drop-Down Jahrzehnte (mit JahreNummern.txt; Datei_auslesen-1.php) • Vollständiges Regest in Array umwandeln • Mit explode (Explode.php, baut auf For-Schleife-4.php auf und nutzt regest1.txt) • Mit while ein assoziatives array aufbauen (ArrayAusDatei.php) • Ausgabe verschönern; Weitere Auswertungen; Kommentare an Datei anhängen lassen • Eine eigene Funktion schreiben • Schreiben Sie eine Funktion, die regest1.txt öffnet und den Inhalt als assoziatives Array zurückgibt MySQL – Einstieg, Allgemeines, Konzepte • Referat: • Timo Coutura MySQL – Einstieg, Allgemeines, Konzepte • Zusammenfassung MySQL – Einstieg, Allgemeines, Konzepte • Tabellentypen • http://dev.mysql.com/doc/refman/5.1/de/storage-engines.html • Datentypen für Attribute / Eigenschaften / Spalten • http://dev.mysql.com/doc/refman/5.1/de/data-types.html • http://www.schmager.de/mysql.php • http://www.grammiweb.de/uebersichten/mysql-datentypen.shtml • Optionen für Spalten • • • • NULL / NOT NULL DEFAULT PRIMARY KEY AUTO_INCREMENT MySQL – Einstieg, Allgemeines, Konzepte • Beziehungen zwischen Tabellen • Konzept der Fremdschlüssel • Foreign-Key-Regeln • Sichert die "Referenzielle Integrität" einer Datenbank • FOREIGN KEY (Fremdschlüsselspalte) REFERENCES Tabelle (Spalte) PHPMyAdmin – Erstes Arbeiten mit SQL • Referat: Bethzy Karla Gianella Chiang - entfällt PHPMyAdmin – Erstes Arbeiten mit SQL • Zusammenfassung wichtiger Aspekte PHPMyAdmin – Erstes Arbeiten mit SQL • Übung: Wir erstellen eine erste Regestendatenbank SQL als Abfragesprache • Referate • Roman Quiring • Pierre Dedy SQL als Abfragesprache • Datenbank und Tabellen anlegen • CREATE DATABASE [IF NOT EXISTS] Datenbank; • CREATE TABLE [IF NOT EXISTS] Tabelle ( (Spaltendefinitionen, …) [Tabellenoptionen] ) • Spaltenname [verschiedene optionale Flags] • AUTO_INCREMENT, CHARACTER SET Zeichensatz, DEFAULT Wert, NULL | NOT NULL, [PRIMARY] KEY, UNIQUE [KEY], etc. etc. • ALTER TABLE Tabelle Aktionsliste • Verschiedene mögliche Aktionen, z.B. • • • • ADD COLUMN (Spaltendefinitionen, …) DROP COLUMN Spaltenname RENAME TO Neuer_Tabellenname … etliche weitere SQL als Abfragesprache • Daten einfüllen, löschen, ändern … • INSERT Tabelle [(Spalte, …] VALUES ({Wert, …}) • (Es müssen soviele Values wie Spalten übergeben werden!) • INSERT Tabelle SET Spalte={Wert}, … • DELETE FROM Tabelle WHERE Spalte=Wert • (Löscht Zeilen) • UPDATE Tabelle SET Spalte=Wert WHERE Spalte=Wert • (Ersetzt Werte) SQL als Abfragesprache • Daten abfragen • Einfache Beispiele für SELECT • SELECT * FROM Tabelle • (alle Daten der Tabelle anzeigen) • SELECT Spalte FROM Tabelle WHERE Spalte=Wert • • (suche einzelne Feldinhalte) Auf Teile der Abfrage können Funktionen angewandt werden (z.B. count) • Ergebnisse sortieren • SELECT Spalte FROM Tabelle ORDER BY Spalte • Daten können aus mehreren Tabellen kommen … ( "joins") • SELECT * FROM Tabelle, Tabelle • SELECT * FROM Tabelle, Tabelle WHERE Tabelle.Spalte=Tabelle.Spalte • (Tabellen werden über ein gemeinsames Feld zusammengeführt) • … verschiedene Formen von "joins" • Selects können verschachtelt werden (Sub-SELECTs) PHP und MySQL (Anbindung und Kommunikation) • Referat: • Christoph Stollwerk PHP und MySQL (Anbindung und Kommunikation) Eigentlich ganz einfach … <html> <body> <?php mysql_connect("","root"); mysql_select_db("regesten1"); // selbst das kann man sich sparen $res = mysql_query("select * from texte"); while ($zeile = mysql_fetch_array($res)) { echo "$zeile[0] - "; echo "$zeile[Datum]<br/>"; } ?> </body> </html> SQL-Abfrage-minimal.php PHP und MySQL (Anbindung und Kommunikation) Im einzelnen … • Kontakt aufnehmen: mysql_connect($server,$Benutzername,$Benutzerpasswort) • Verbindung schließen: mysql_close($verbindung) • Permanente Verbindung: mysql_pconnect(…) PHP und MySQL (Anbindung und Kommunikation) Im einzelnen … • Datenbank auswählen: mysql_select_db($datenbankname) PHP und MySQL (Anbindung und Kommunikation) Im einzelnen … • Daten aus der Datenbank holen: mysql_query(" SQL-Anfrage ") PHP und MySQL (Anbindung und Kommunikation) • Übungen • Kontakt aufnehmen • Etwas ausgeben Datenbank-Design und Normalisierung • Referat: • Camilla Ottnad Datenbank-Design und Normalisierung • Begriffe: Datenbank und Datenbankmanagementsystem • Datenbankentwurf • Modell eines Teilbereichs der Realität • Vermeidung von Redundanz • Effizienz der Datenverwaltung und Datenverarbeitung • Das relationale Datenbankmodell • Tabellen und Relationen statt … • Hierarchien (Hierarchisches Modell) • Netzwerke (Netzwerkmodell) • Objekte (Objektorientiertes Modell) Datenbank-Design und Normalisierung • Tabellen • Jeder Zeile ein Datensatz (Entität, Tupel) • Jede Spalte eine Eigenschaft (Attribut) • Jede Zelle ein Wert • Tabellen sind Relationen • Tabellen modellieren Objekte (Objekttypen) • Mehrere Tabellen können verbunden sein (Beziehungen) • Primärschlüssel • Fremdschlüssel • 1:1-Beziehung • 1:n-Beziehung • n:m-Beziehung Normalisierung •Problemlage • Redundanz • Gefahr von Anomalien durch Änderung (update-Anomalien), Einfügen (insert-Anomalien) oder Löschen (deleteAnomalien) •Lösung • "Normalisierung" • Zerlegung von Relationen • 5 Normalformen • … für die es viele verschiedene Formulierungen gibt Normalisierung • Erste Normalform: Jeder Datensatz hat eine eindeutige Identifizierung (ggf. über mehrere Felder) Jedes Datenfeld beinhaltet nur einen (atomaren, nicht zusammengesetzten) Wert Attribute sollen sich in einem Datensatz nicht wiederholen Normalisierung • Zweite Normalform: Wenn sich Inhalte in Spalten wiederholen, dann muss die Tabelle in Teiltabellen zerlegt werden Die Tabellen müssen durch Fremdschlüssel miteinander verbunden werden Normalisierung • Dritte Normalform: Spalten, die nicht in unmittelbarer Abhängigkeit zum Primärschlüssel einer Tabelle stehen, müssen eliminiert werden (in eine eigene Tabelle ausgelagert werden) Normalisierung • Vierte Normalform: Tabellen sollen nur triviale mehrwertige Abhängigkeiten enthalten • Fünfte Normalform: Tabellen sollen aufgespalten werden, wenn sich die ursprünglichen Relationen wieder herstellen lassen (Tabellen sollen so weit wie möglich aufgespalten werden) Datenmodellierung im ERM • • • • Entity-Relationship-Modell Abstraktes Modell Visualisierung durch ER-Diagramme Z.B. Chen-Notation … Entitätstyp Attribut Beziehung abgeleitet • Umsetzung des Modells (vom ERM zum RDM) • Entities werden zu Tabellen • Attribute werden zu Spalten • Beziehungen werden durch Schlüssel abgebildet Datenbank-Theorie? • Vor und Nachteile relationaler Datenbanken gegenüber anderen Datenbankmodellen? • Was sind die zu erwartenden Probleme bei der Umsetzung des Kursmaterials in eine relationale Datenbank? Kursprojekt Regesten-Datenbank • Übung: Remodellieren der Regesten-Datenbank • Probleme des ersten Entwurfs beseitigen • Hilfsmittel zur Modellierung (in phpMyAdmin, SQL Workbench) Kursprojekt Regesten-Datenbank • Datenbank mit Inhalt füllen • Automatisationspotentiale? Kursprojekt Regesten-Datenbank • Inhalte auslesen und präsentieren • • • • • Auswahllisten herstellen Regestpräsentation herstellen Register generieren Weiterführende Links einbauen Suche über alles / Suche über bestimmte Felder Das finale Kursprojekt • Übungen: Realisierung des Kursprojekts • Welche Seiten brauchen wir? PHP für Fortgeschrittene: Objektorientierte Programmierung und OOP in PHP • Referate: • Manuel Carlos Lenz • Benjamin Gelhaar PHP für Fortgeschrittene: Sicherheitsfragen • Referat: • Bastian Odenthal PHP für Fortgeschrittene (was wir hier nicht vertieft behandeln) • • • • • • Eigene Funktionen definieren [Objektorientierte Programmierung] Frameworks PEAR (PHP Extension and Application Repository) XML-Verarbeitung [Sicherheitsfragen (PHP, MySQL, Server)]