KursplanB

Werbung
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)]
Herunterladen