680 likes | 951 Views
Kurs 2: Allgemeine Technologien II. IT-Zertifikat der Phil.Fak. Patrick Sahle XML-Basics WS 08/09. Zeiten und Pausen IT-Zertifikat Teilnehmer WLan läuft? XAMPP läuft? Literatur? Kursprojekt, Kursziel Didaktische Mantras Skills not Knowledge Konzepte, nicht Syntax
E N D
Kurs 2: Allgemeine Technologien II IT-Zertifikat der Phil.Fak Patrick Sahle XML-Basics WS 08/09
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? • Organisatorisches
Netzwerke • Internet-Grundtechnologien • ein Schritt zurück: HTML/CSS • Programmieren am Beispiel: PHP • Online-Datenbanken: MySQL • Kursinhalte
"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 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) • Beispielprojekt
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 • Netzwerke • 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)
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 • Netzwerke
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 • Internet-Grundtechnologien
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 • Ein Schritt zurück: HTML, CSS, Javascript
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 • Übungen: HTML und CSS
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 • Einstieg in PHP
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. • PHP schreiben: Editoren
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 ( 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 } • Grundlegendes in PHP
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 in HTML
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 Code-Konventionen
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 Poor Man's Debugging
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) • PHP-Übungen
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 • Funktionen in PHP
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 • PHP-Übungen
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) • MySQL – Einstieg, Allgemeines, Konzepte
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 • PHPMyAdmin – Erstes Arbeiten mit SQL
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) • SQL als Abfragesprache
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)