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 Internet-Grundtechnologien Programmieren am Beispiel: PHP Netzwerke Internet-Grundtechnologien ein Schritt zurück: HTML/CSS Programmieren am Beispiel: PHP Online-Datenbanken: MySQL
Beispielprojekt "Pimp my Book" Zielstellungen 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 Online-Anwendung 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 Übertragungskapa- zität und räumliche Aus-dehnung 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, Nutzer- und 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 Für dieses mal übersprungen: Mail als zentraler Internet-Dienst und die Mail-Protokolle (SMTP, POP, IMAP)
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 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 HTML-Seite (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 Arrays 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 ( Bedingung ) { Anweisungsblock } if-else if ( Bedingung ) { Anweisungsblock TRUE} else { Anweisungsblock FALSE} if-elseif-else switch switch ( Ausdruck ) { case Wert1: Anweisungsblock … break; case Wert2: Anweisungsblock … break; … default: Anweisungsblock … break; } for 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 (HelloWorld.php) Ein Auswahlmenü Ohne Funktionalität (For-Schleife.php) live-Header?! Mit Rückmeldung (For-Schleife-1.php) Mit Beibehaltung des ausgewählten Wertes (For-Schleife-2.php) GET statt POST (For-Schleife-3.php) Den submit-Button loswerden (Javascript) (For-Schleife-4.php) Ein Suchfeld (Suchfeld.php) Leeres Submit abfangen (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 Eine eigene Funktion schreiben 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 (delete-Anomalien) 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 Be- ziehung 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)]