Webbasierte Anwendungen – BG 13 (benutzt ”Webdesign und Multimedia”) http://worgtsone.scienceontheweb.net/ - mailto: worgtsone @ hush.com 02. Januar 2008 – 2. Mai 2016 Inhaltsverzeichnis 1 Intro 3 2 Server und Clients, Protokolle und Ports 3 3 Abgeben 13er zur Bewertung 2016. Termin : 3.1 index.html . . . . . . . . . . . . . . . . . 3.2 muddle.php . . . . . . . . . . . . . . . . 3.3 farbraum.php . . . . . . . . . . . . . . . 3.4 fakultaeten.php . . . . . . . . . . . . . . 3.5 fortune.php . . . . . . . . . . . . . . . . 3.6 nullstel.php . . . . . . . . . . . . . . . . . 3.7 ostproxy . . . . . . . . . . . . . . . . . . 3.7.1 Was . . . . . . . . . . . . . . . . . 3.7.2 Dokumentation . . . . . . . . . . 3.7.3 Vortrag und Vorführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 4 4 4 4 4 4 5 5 5 5 4 Abgeben 13er zur Bewertung 2015. Termin : 4.1 index.html . . . . . . . . . . . . . . . . . 4.2 muddle.php . . . . . . . . . . . . . . . . 4.3 farbraum.php . . . . . . . . . . . . . . . 4.4 fakultaeten.php . . . . . . . . . . . . . . 4.5 fortune.php . . . . . . . . . . . . . . . . 4.6 nullstel.php . . . . . . . . . . . . . . . . . 4.7 ostproxy . . . . . . . . . . . . . . . . . . 4.7.1 Was . . . . . . . . . . . . . . . . . 4.7.2 Dokumentation . . . . . . . . . . 4.7.3 Vortrag und Vorführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 6 6 6 6 6 6 7 7 7 7 5 Abgeben 13er zur Bewertung 2014. Termin : 5.1 lehrer.php . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 8 6 Abgeben 13er zur Bewertung 2013. Termin : 6.1 Für WA (Webbasierte Anwendungen) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 9 7 Internet im Unternehmen (Intranet) 11 8 PHP 8.1 8.2 8.3 8.4 8.5 12 12 12 12 12 12 Einbinden in html-Seiten Variablen . . . . . . . . . Kontrollstrukturen . . . . Parsen des Inputs . . . . Felder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . INHALTSVERZEICHNIS 2 8.6 Übung : NimSpiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 9 Datenbanken 9.1 Ganz Simpel : Eine Tabelle fürs Gästebuch . . . . . . . . . . . . . 9.2 Auch simpel : Zwei Tabellen für MYBUY, ein Versteigerungshaus. 9.3 Datentypen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.4 SQL: Select . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.5 SQL: Insert . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 13 13 14 14 14 10 PHP und Datenbanken 10.1 Öffnen und Schließen . . . 10.2 Lesen . . . . . . . . . . . . . 10.3 Schreiben . . . . . . . . . . 10.4 Sessions öffnen und prüfen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 14 14 14 14 11 Javascript 11.1 Einbinden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2 Felder manipulieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.3 Binäre und Hexadezimale Ausgabe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 15 15 15 12 Einen Span auslesen 12.1 Aufgaben . . . . . . . 12.1.1 Befehle . . . . . 12.1.2 Faku . . . . . . . 12.1.3 ggt . . . . . . . 12.1.4 Lisa . . . . . . . 12.1.5 Dezi, Bine, Hexa 16 17 17 17 17 17 17 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 Klausur 18 14 Klausur-Rückgabe 18 Disclaimer Wissen ist zum Teilen da. Ich teile mein Wissen mit Ihnen, lieber Kollege. Ich bin aber nicht perfekt. Unter [email protected] nehme ich dankbar Ihre Verbesserungsvorschl”age entgegen. * Legal Blurb: Alle Informationen in diesem Dokument sind falsch, unvolständig, irreführend, irrelevant und / oder funktionieren einfach nicht. Wenn Sie es trotzdem benutzen, und es geht dabei etwas kaputt, ist das Ihr Problem, nicht meins. 1 1 INTRO 3 Intro Beide Kurse dienen zur Unterstützung des LK Datenbanken. Die Schüler sollen sich Accounts auf www.my-place.us holen, da liegt php5 und mysql dahinter. Webbasierte Anwendungen (WA) ist ein TG-Kurs. Die Schüler müssen ihn belegen, mehr als 0P haben, insgesamt 4 haben, davon 2 einbringen. Datenbanken müssen über JDBC eingebunden werden. Webdesign und Multimedia (WM) ist ein TWG-Kurs. Die Schüler müssen ihn nicht belegen, außer sie wollen ins 18MonateModell – oder sie haben keinen Kunstkurs (???). Bildbearbeitung. Bewegte Bilder, aber keine Videos. Die folgenden Kapitel gegebn den Stoffverteilungsplan für 14 Wochen wieder. 2 Server und Clients, Protokolle und Ports Bedeutung von eCommerce, eMail, eBank, eWissen (wiki), eJobs, eDatenschutz... Suchen von Webspace mit php-Modul und mysql-Datenbank schon dran. 3 ABGEBEN 13ER ZUR BEWERTUNG 2016. TERMIN : 3 4 Abgeben 13er zur Bewertung 2016. Termin : Sende deine Internet-Adresse der Hauptseite bis zum Termin oder früher an meine dienstliche emailAdresse. Alle php-Dateien einmal als *.php und einmal als *.phps hochladen. 3.1 index.html Schreiben Sie eine index.html im BorderLayout mit flashy Werbung links, rechts und unten (zB ein selbstgeschriebenes animated gif/png), einer Überschrift oben und HyperLinks auf Ihre Seiten mitten. 3.2 muddle.php Der User liefert eine Datei, in der csv (komma-separierte) Werte stehen: vorname,nachname,klasse,passwort,forceChange,email Der Webserver nimmt sie, parst sie Zeile für Zeile, generiert einen Usernamen aus vorname.nachname.klasse.jahreszahl (zB john.doe.999.2015) und schreibt das alles in sql zurück auf den Bildschirm. Sie haben sich eine kleine Bibliothek geschrieben und benutzen die BibliotheksFunktionen openDB(params), sqlDB(params) und closeDB(params). Jede Funktion gibt ein result vom Typ Result zurück, das eine Fehlernummer (0=allesOK) und eine FehlerBeschreibung enthält. Beschreiben Sie in HTML, welche Funktion Sie mit welchen Parametern wann warum aufrufen und was sie mit dem result anfangen. 3.3 farbraum.php Der User wünscht sich eine Zahl zwischen 8 (0x008) und 45 (0xfff). Sie geben ihm alle hexadezimal dreistelligen Farben, deren Summe diese Zahl ist, in einer Tabelle maximal 16x16, als Farbe und Zahl. 3.4 fakultaeten.php liefert , als Schleife und Funktion in PHP programmiert, 0! 1! 2! 3! 4! 5! = = = = = = 1 1 2 1*2*3 = 6 // nur die 3 und die 4 werden erl\"autert 1*2*3*4 = 24 120 und so weiter bis (Beispielwerte): 9! = 362880 10! = 3625171.2 , aber das ist offensichtlich Unfug. 3.5 fortune.php Wählt einen von 5 fröhlichen Sprüchen oder Witzen zufällig aus und zeigt ihn an. 3.6 nullstel.php php rechnet mit Radianten. Gesucht ist die Nullstelle von sin(x)-kx, 0¡k¡0, 5, im Intervall ]0,π[. k wird vom Benutzer eingegeben. Falls es nicht im Wertebereich liegt, wird es nochmal angefordert, mit Fehlermeldung in ROT. Zur Nullstelle wird eine 5-zeilige Wertetabelle angezeigt, deren dritte Zeile die Nullstelle ist, ansonsten Schrittweite 0,1. 3 ABGEBEN 13ER ZUR BEWERTUNG 2016. TERMIN : 3.7 3.7.1 5 ostproxy Was Gesucht ist ein lauffähiger Proxy, lokal, in Java 1.5 oder früher, auf Port 8080. Er soll 1. alle Anfragen vom Browser auffangen und loggen, ja auch die in https etc. diese soll er diesmal aber nur archivieren und ggf ascii-fiziert anzeigen. ascii-fiziert heißt: alle bösen zeichen (0-31 und 128-∞) werden durch YYYzahlYYY ersetzt. ggf heißt: die Taste s toggelt Ausgabe an/aus. loggen heißt: ascii-fiziert in eine Datei schreiben, zB ./log.txt. 2. auf Anfragen nach text auf Servern namens *adfarm* und *facebock* eine gültige html-Seite zurückliefern, die da lautet: ”Ihre Privatsfäre wurde geschytzt von ostproxy.” 3. auf Anfragen nach Bildern auf Servern namens *adfarm* und *facebock* ein Bild zurückliefern, wo drinsteht: ”Ihre Privatsfäre wurde geschytzt von ostproxy.” 4. auf Anfragen nach flash-streams auf Servern namens *adfarm* und *facebock* einen flash-stream zurückliefern, wo drinsteht: ”Ihre Privatsfäre wurde geschytzt von ostproxy.” 5. den Referer entfernen; 6. alle anderen Anfragen durchlassen, beantworten lassen und OHNE ANZEIGE zurückliefern. 7. ostproxy soll auch in der Lage sein, gepostete Dateien weiterzuleiten (hint: Content-Length auswerten). ostproxy soll folgende main-Methode (oder Konstruktor) enthalten: while (true){ String request = accept(); myrequest = processRequest(); String response = hole(myrequest); String myresponse = processResponse(); connection.send(myresponse); } 3.7.2 Dokumentation Eine Seite auf einem Server mit 3 Kapiteln: ”Was ostproxy Tolles für dich tun kann”, ”Installation” (incl. Voraussetzungen und Anmerkungen zu Apfel-Usern) und ”Quelltext”. 3.7.3 Vortrag und Vorführung Kurzfassung: ”Was ostproxy Tolles für dich tun kann”, Vorstellen der main-Methode, Beispiel : Rauswerfen von *facebock* und Referer, Installation und Ansurfen interessanter Seiten. * Neu : Beamer ist zugelassen, aber nur für pdf-Folien im Vollbildmodus und Querformat. Jede Seite dieser pdfs trägt in der Fußzeile Autor(en), Titel, Seite x von y, Datum, Schule. 4 ABGEBEN 13ER ZUR BEWERTUNG 2015. TERMIN : 4 6 Abgeben 13er zur Bewertung 2015. Termin : Sende deine Internet-Adresse der Hauptseite bis zum Termin oder früher an meine dienstliche emailAdresse. Alle php-Dateien einmal als *.php und einmal als *.phps hochladen. 4.1 index.html Schreiben Sie eine index.html im BorderLayout mit flashy Werbung links, rechts und unten (zB ein selbstgeschriebenes animated gif/png), einer Überschrift oben und HyperLinks auf Ihre Seiten mitten. 4.2 muddle.php Der User liefert eine Datei, in der csv (komma-separierte) Werte stehen: vorname,nachname,klasse,passwort,forceChange,email Der Webserver nimmt sie, parst sie Zeile für Zeile, generiert einen Usernamen aus vorname.nachname.klasse.jahreszahl (zB john.doe.999.2015) und schreibt das alles [[per sql in eine DatenbankTabelle – nein,]] in sql, [[ aber ]] zurück auf den Bildschirm. Sie haben sich eine kleine Bibliothek geschrieben und benutzen die BibliotheksFunktionen openDB(params), sqlDB(params) und closeDB(params). jede Funktion gibt ein result vom Typ Result zurück, das eine Fehlernummer (0=allesOK) und eine FehlerBeschreibung enthält. Beschreiben Sie in HTML, welche Funktion Sie mit welchen Parametern wann warum aufrufen und was sie mit dem result anfangen. 4.3 farbraum.php Der User wünscht sich eine Zahl zwischen 0 (0x000) und 4095 (0xfff). Sie geben ihm alle hexadezimal dreistelligen Farben, deren Summe diese Zahl ist, in einer Tabelle maximal 16x16. 4.4 fakultaeten.php liefert 0! 1! 2! 3! 4! 5! = = = = = = 1 1 2 1*2*3 = 6 // nur die 3 und die 4 werden erl\"autert 1*2*3*4 = 24 120 und so weiter bis (Beispielwerte): 9! = 362880 10! = 3625171.2 , aber das ist offensichtlich Unfug. 4.5 fortune.php Wählt einen von 5 fröhlichen Sprüchen oder Witzen zufällig aus und zeigt ihn an. 4.6 nullstel.php php rechnet mit Radianten. Gesucht ist die Nullstelle von sin(x)-kx, 0¡k¡3, im Intervall ]0,π[. k wird vom Benutzer eingegeben. Zur Nullstelle wird eine 5-zeilige Wertetabelle angezeigt, deren dritte Zeile die Nullstelle ist, ansonsten Schrittweite 0,1. 4 ABGEBEN 13ER ZUR BEWERTUNG 2015. TERMIN : 4.7 4.7.1 7 ostproxy Was Gesucht ist ein lauffähiger Proxy, lokal, in Java 1.5 oder früher, auf Port 8080. Er soll 1. alle Anfragen vom Browser auffangen, 2. auf Anfragen nach text auf Servern namens *adfarm* und *facebock* eine gültige html-Seite zurückliefern, die da lautet: ”Ihre Privatsfäre wurde geschytzt von ostproxy.” 3. auf Anfragen nach Bildern auf Servern namens *adfarm* und *facebock* ein Bild zurückliefern, wo drinsteht: ”Ihre Privatsfäre wurde geschytzt von ostproxy.” 4. auf Anfragen nach flash-streams auf Servern namens *adfarm* und *facebock* einen flash-stream zurückliefern, wo drinsteht: ”Ihre Privatsfäre wurde geschytzt von ostproxy.” 5. den Referer entfernen; 6. alle anderen Anfragen durchlassen, beantworten lassen und zurückliefern. Änderung: ostproxy soll auch in der Lage sein, gepostete Dateien weiterzuleiten (hint: Content-Length auswerten). ostproxy soll folgende main-Methode (oder Konstruktor) enthalten: while (true){ String request = accept(); myrequest = processRequest(); String response = hole(myrequest); String myresponse = processResponse(); connection.send(myresponse); } 4.7.2 Dokumentation Eine Seite auf einem Server mit 3 Kapiteln: ”Was ostproxy Tolles für dich tun kann”, ”Installation” (incl. Voraussetzungen und Anmerkungen zu Apfel-Usern) und ”Quelltext”. 4.7.3 Vortrag und Vorführung Kurzfassung: ”Was ostproxy Tolles für dich tun kann”, Vorstellen der main-Methode, Beispiel : Rauswerfen von *facebock* und Referer, Installation und Ansurfen interessanter Seiten. * Neu : Beamer ist zugelassen, aber nur für pdf-Folien im Vollbildmodus und Querformat. Jede Seite trägt in der Fußzeile Autor(en), Titel, Seite x von y, Datum, Schule. 5 ABGEBEN 13ER ZUR BEWERTUNG 2014. TERMIN : 5 8 Abgeben 13er zur Bewertung 2014. Termin : Sende deine Internet-Adresse der Hauptseite bis zum Termin oder früher an meine dienstliche emailAdresse. Alle php-Dateien einmal als *.php und einmal als *.phps hochladen. 5.1 lehrer.php Lehrer schleppen stets ein Rotes Büchelein mit sich herum, in dem sie alles mögliche festhalten. Schicker ist allerdings ein tablet. Keine History. Knopf NeueKlasseAnlegen: legt neue Klasse an, mit Nummer (zB 333), Beschreibung (zB Werkzeugmechaniker), Klassenlehrer (zB West) und beliebig vielen Einträgen Vorname-Nachname. Knopf Klasse ändern: ändert Einträge, löscht oder hinzufügt Schüler. Knopf Klasse exportieren: Alle Daten dieser Klasse werden in eine Datei dieses Namens rausgeschrieben. Einstellungen–Pausen: ändert Anfangszeiten der 0. bis 14. Stunde. Knopf Anwesenheit: ein Schüler ist anwesend, wenn er in der Tabelle SchülerÜberTermin angetickt wird. An einem Tag können mehrere Termine sein. Es gibt einen Knopf AlleAnwesend. Anticken eines Schülers in diesem Fall führt zu Abwesend. LangeAnticken/Rechtsklick führt zu Kontextmenü: fehltUnentschuldigt, fehltEntschuldigt, fehltMitKrankschreibung, beurlaubt, sonstiges (mit Kommentar). Auf jeder Seite wird in der Kopfzeile groß und deutlich Datum, Uhrzeit, Fach, Stunde und Klassennummer angezeigt. Tabelle Schüler über Bewertung1, Bewertung2, Bewertung3. Sie haben frei vergebbare Zusätze, zB schriftlich, mündlich, sonstig. Knopf NeueBewertung fragt nach Art, zB mdlLeistungenHeute, merkt sich den Zeitpunkt (Datum und Uhrzeit) und aktiviert dann die Spalte. Anticken eines Schülers öffnet ein kleines Feld mit 0-15 sowie dem Toggle Zeige Notenpunkte/Schulnoten. Im Kopf der Tabelle gibt es einen Knopf SetzeAlleAuf... 80 Minuten nach jeder Anwesenheit drängt sich stets ein Logbuch-Fenster nach vorne, sagt Termin und Klasse und verlangt Einträge zu Inhalt (default: Aktuelles) und Hausaufgaben (default: keine). Tabelle SchülerÜberErmahnung: Anticken gibt Feld für GelbeKarte, RoteKarte, EintragKlassenbuch, und merkt sich Beschreibung (Fließtext) und Zeitpunkt. Tabelle Notenbesprechung: gibt alle Bewertungen, darunter Gewicht (1 bis 5), dann Anzahl der GelbenKarten/RotenKarten/Einträge. Spalte BerechneteNote, Spalte PädagogischeNote, Knopf ÜbernimmBerechneteNoteALzPädagogischeNote. Die Pädagogische Note kann händisch geändert werden. Dahinter stehen stets die FehlstundenGesamt, FehlstundenEntschuldigt, FehlstundenUnentschuldigt. Da die Anwendung hauptsächlich aus Tabellen besteht, ist das Hauptmenü die Anzeige einer Klasse, die anderen sind als Tabs (Reiter) in reinen Pastellfarben angeordnet. Nach jeder Eingabe merkt sich der Server den neuen Stand aller Eintragungen in einer einzigen Datei namens Schule.txt. Jeden Sonntag erstellt er im selben Verzeichnis ein Backup dieser Datei, indem er den Zeitpunkt in japanischer Schreibweise dranhängt. Es gibt eine Seite Einstellungen. 6 ABGEBEN 13ER ZUR BEWERTUNG 2013. TERMIN : 6 9 Abgeben 13er zur Bewertung 2013. Termin : Sende deine Internet-Adresse der Hauptseite bis zum Termin oder früher an meine dienstliche emailAdresse. Alle php-Dateien einmal als *.php und einmal als *.phps hochladen. 6.1 Für WA (Webbasierte Anwendungen) • Erstelle eine index-Seite mit Links auf die anderen Seiten. • tabelle19x19.php in php. Jede Tabellenzelle sei mit spaltennummer X zeilennumer beschriftet. Ferner gibt es einen Knopf, der die kleinste Zeilen-/Spaltennummer zwischen 1 und 5 toggelt. • lampenspiel.php 5x5 in php. Es gibt einen Knopf: alle Lampen aus. Die Seite erkennt, wenn es gelöst ist, und gibt ein Fenster mit großer Schrift aus. • rgbn.php in php. Ein Schnitt senkrecht zur Hauptdiagonale des RGB-Würfels, dreieckig oder sechseckig, so daß rot+grün+blau=const. In einer 40x40-Tabelle. 4 Knöpfe: const um +-1 bzw. +-10 verändern. Die definierten Felder erhalten ihren Farbcode in 6-stelligen hex-Zahlen. • dritwurz.html : Iteratives Wurzelziehen nach Lisa. Nur Eingabefeld; oder Ausgabe und anschließend Eingabe. Gesucht ist w, die 3. wurzel von z. Ich setze a auf z und b und c auf 1. Anschließend setze ich a auf den Mittelwert von a, b und c. Dann b auf a. Dann c so, daß a*b*c = z. Solange, bis a und c nahe genug aneinander (ca. 1E-9) sind. Dann gebe ich a als w aus. • sortByDesign.html Ein BorderLayout mittels Tabellen. Oben und rechts flashy Werbung als marquee text. Text und Hintergrund wechseln alle 0,25sec die Farbe und sind komplementär. Links zwei Knöpfe: DEUTSCH und ENGLISCH. Beim Klick wechselt die Sprache. Darunter eine UL mit OL’s drin : elektronik01 elektronik0101 elektronik0102 elektronik0103 elektronik02 elektronik0201 elektronik0202 elektronik0203 elektronik03 elektronik0301 elektronik0302 elektronik0303 Untendrin, in hellgrau auf dunkelweiß, Links zu Impressum, Datenschutz-Richtlinie und Abo-Service. Mitten drin: Eine Tabelle, sortiert nach der ersten Spalte, aufsteigend. Format der EingabeDatei unter warez.html: 6 ABGEBEN 13ER ZUR BEWERTUNG 2013. TERMIN : 10 ArtikelId;Bezeichnung;Lagerbestand;EUR 0001;Schraube0001;17;0,13 0013;Mutter0013;-5;0,99 Im Tabellenkopf steht der Spaltenname. Wenn nicht nach diesem sortiert ist, sortiert sich die Tabelle durch Mausklick auf den Spaltennamen aufsteigend; sonst absteigend. Hinweis: Felder sortiert man nach der n. Spalte so: // danke Tom // JSON funktioniert unter firefox 2.0 nicht var a = [ [2,2,2], [3,1,2], [1,2,4] ] ; sortBy (a, 1); document.write (JSON.stringify(a)); function sortBy (array, pos) { array.sort ( function (a,b) { return a[pos] - b[pos]; } ); } 7 7 INTERNET IM UNTERNEHMEN (INTRANET) 11 Internet im Unternehmen (Intranet) In einer richtigen Firma sind die Verantwortlichkeiten (auch bei Absenz) klar geregelt. Und die Vorgänge. Und die Limits. Und die Benutzerrechte. Dazu brauchen die einzelnen Benutzer – wenn mans weit treibt – nur einen Browser. Der zeigt ihnen alles, was sie machen müssen: Informationen (auch verlinkt), Bilder, Schaltflächen... Beispiel Schadenserfassung Versicherung. Ein Brief kommt an: ”Ich hatte am ... einen Schaden und möchte, daß der mit meiner Police Nr. ... geregelt wird.” In einer ordentlichen Firma braucht der Mitarbeiter nicht aufzustehen und nicht zu telefonieren, um • den Brief aufzumachen; • Adresse, Email und Telefonnummer nachzuschauen; • die Police anzuschauen (obs sie gibt, ob die Prämien gezahlt sind, ob sie zu dieser Person gehört, ob der genannte Schaden gedeckt ist, ... was Versicherungs-Sachbearbeiter halt so tun. • um einen Brief rauszuschicken: ”Sehr geehrter Herr Keks, danke für Ihr Schreiben vom .... Leider müssen wir Ihnen mitteilen, daß wir zwei verschiedene Postanschriften von Ihnen haben, daß Sie 2 Prämien zurückliegen, daß eine Police mit der von Ihnen angegebenen Nummer nicht existiert und die einzige, die Sie bei uns haben, nur wirksam wird, wenn ein durch Hagel ausgelöstes Feuer Ihren Garten vernichtet. Mit freundlichen Gewürzen... ” • einen Rundruf an den Versicherungs-Unternehmen-Schutzbund schicken, ob da jemand mogelt. So isses wirtschaftlich. Also : Das Internet dient dem schnellen, globalen Informationsaustausch durch • Browsen http • Email pop, smtp • ftp (”Leech”) • Internettelefonie Dieser Datenaustausch funktioniert schnell, sicher, g”unstig und arbeitszeitunabh”angig. • Werbung • eCommerce, eMail, eBank, eWissen (wiki), eJobs, eDatenschutz... • Finden neuer Kunden • E-Commerce • Kundenpflege (CRM - Customer Relationship Management) • Online-Kataloge, -Datenbanken, -Support • Vermeiden von Filialen, wenn’s doch Email, Cash-Systeme und Kurierdienste gibt Im Unternehmen : Gemeinsames Benutzen von 1. Druckern 2. Massenspeichern (zB Festplatten auf einem Rechner, von dem wirklich backups gemacht werden) 3. Mail-Server und Fax-Server 8 PHP 8 12 PHP 8.1 Einbinden in html-Seiten 8.2 Variablen 8.3 Kontrollstrukturen 8.4 Parsen des Inputs 8.5 Felder Sauschwer! $f $f $f $f [] ; [0] = 5 ; [’’keks’’] = 9 ; [13] = ’’keks’’ ; 8.6 Übung : NimSpiel Der Rechner zeigt eine Seite: nimspiel by worgtsone -- [Neues Spiel] ======================================== Gegeben sind 20 Steine. Nimm [1], [2] oder [3] Steine. Wer den letzten nimmt, hat gewonnen. Du f\"angst an. Statt Steinen gibt es auch Frösche oder Kekse. Es gibt 20 bis 30 Steine. Man kann 1..2, 1..3 oder 1..4 Steine nehmen. Das ist BEI EINEM SPIEL konstant. Von 5 Spielen soll der Rechner 1 per Zufall spielen. Hinter den Link ”[Neues Spiel]” kommt die URL nimspiel.php?neuesS=ja. Ein Codeschnipsel: ... if ($\_GET[’’neuesS’’] == ’’ja’’ ) { ... // neues Spiel } else { // Eingabe // Verarbeitung // Ausgabe ... 9 DATENBANKEN 9 13 Datenbanken 9.1 Ganz Simpel : Eine Tabelle fürs Gästebuch TODO : Aufgabe Gästebuch ausformulieren. Ist übrigens langweilig. 9.2 Auch simpel : Zwei Tabellen für MYBUY, ein Versteigerungshaus. Keine Bewertungen. Nur Vorkasse. Keine Packstation. Hermes, DHL, UPS, DPD, FedEx okay. Böse IPs dürfen gucken, aber nicht kaufen. Es gibt einen User anton, Passwort: 12345687. Die Schüler dürfen die Möglichkeit schaffen, sich als neuer User zu registrieren (KANN). Das ERM ist: artikel : id (auto), bezeichnung, startpreis, beschreibung in html mit bildern (text), anbieter id, startzeit, endzeit, meistbietender, gebot. user : id (auto), screenname, vorname, nachname, adresse (text), passwort (als MD5-hash). (artikel.anbieter id : user.id) = (n : 1) (artikel.meistbietender : user.id) = (n : 1) SELECT * FROM artikel WHERE user.screenname=’’0815’’ AND anbieter\_id=user.id ORDER BY gebot DESCENDING; 10 PHP UND DATENBANKEN 9.3 Datentypen 9.4 SQL: Select 9.5 SQL: Insert 10 PHP und Datenbanken 10.1 Öffnen und Schließen 10.2 Lesen 10.3 Schreiben 10.4 Sessions öffnen und prüfen Geht gerüchteweise so: $<$?php if (isset($\_session[’’egal’’] == 5)) echo ’’du bist eingeloggt.$<$br$>$’’; else { echo ’’du bist NICHT eingeloggt.$<$br$>$’’; session\_start(); $\_session[’’egal’’] = 5; } ?$>$ 14 11 JAVASCRIPT 11 15 Javascript JavaScript ist zum Aufpeppen, Aufmöbeln oder UnbenutzbarMachen von Webseiten. 11.1 Einbinden Entweder in der Seite, im Head: $<$script type=’’text/javascript’’$>$ $<$!-// hide from old crappy browsers alert (’’Hallo Wellt! \n\n tab\t tab\t tab\t tab\t tab\n Tsch\"u\ss{}.’’); // --$>$ $<$/script$>$ Oder einer Extra-Datei. Hier ein HTML Schnipsel: $<$script type=’’text/javascript’’ src=’’fibo.js’’$>$$<$/script$>$ Und hier fibo.js: function fibo (z) { if (z$<$3) return 1; return fibo(z-1) + fibo(z-2); } document.write (’$<$h1$>$fibo$<$/h1$>$$<$hr$>$’); for (i=1; i$<$29; i++) { document.write (fibo(i) + ’ - ’); } 11.2 Felder manipulieren Wie in Übung fibo gesehen, überschreibt document.write das komplette sonstige html-Dokument. Wir wollen nun einen Umrechner gestalten. Dazu erzeugen wir eine tabelle mit Eingabefeldern vom Type text mit den Namen text01 und text02. Wir setzen beider value auf beliebige Zahlen. Daneben kommt ein Knopf vom Typ button (nicht submit!) mit value=”=” und onclick=nonsens(). Darunter kommt text03. Ein Stück Javascript definiert die Funktion nonsens() wie folgt: function nonsens(){ a = document.getElementById(’’id01’’).value; b = document.getElementById(’’id02’’).value; c = a * b; document.getElementById(’’id03’’).value = c; 11.3 Binäre und Hexadezimale Ausgabe Die Variablen beherrschen merkwürdigerweise die Methode toString(int basis), wobei basis die Basis des angestrebten Zahlensystems ist. 12 12 EINEN SPAN AUSLESEN Einen Span auslesen Mehr javascript gibts in javascript.pdf. $<$html$>$$<$head$>$$<$title$>$Landkart$<$/title$>$ $<$script type=text/javascript$>$ function mach(){ s = document.form01.schueler.value; // alert (’’schueler = ’’ + s); keks=’’keks’’; // document.div01 = keks; keks = document.getElementById(’div01’).firstChild.data; alert (keks); } $<$/script$>$ $<$/head$>$$<$body$>$ $<$form name=form01$>$ Gib Anzahl Schueler: $<$input type=’’text’’ name=’’schueler’’ value=’’3’’$>$ $<$input type=’’button’’ onclick=’’mach()’’ value=’’mach()’’$>$ $<$/form$>$ $<$hr$>$ $<$div id=’’div01’’$>$ gargl $<$/div$>$ $<$div id=’’div02’’$>$ gurgl $<$/div$>$ $<$/body$>$ $<$/html$>$ 16 12 EINEN SPAN AUSLESEN 12.1 Aufgaben 12.1.1 Befehle 17 Schreiben Sie sich fortlaufend eine Befehlsreferenz : Wie sie heißen, was sie tun, was sie dazu brauchen. 12.1.2 Faku Schreiben Sie faku.js, das die Fakultäten von 1 bis (EndeDesWertebereichs) erzeugt. Staunen Sie dabei über die InTime-Typumwandlung. 12.1.3 ggt Schreiben Sie eine html-Seite, die den Größten Gemeinsamen Teiler zweier Zahlen bestimmt. solange a ungleich b solange a$>$b : a=a-b solange b$>$a : b=b-a return a 12.1.4 Lisa Schreiben Sie lisa.js und ein passendes Ein-/Ausgabeblatt, das aus einer gegebenen Zahl nach dem Lisa-Verfahren die Quadratwurzel zieht. Gesucht ist die Wurzel von z. Ich setze zunächst a auf z und b auf 1. Dann setze ich a auf (a+b)/2 und b auf z/a. Solange, bis a nahe genug an b. 12.1.5 Dezi, Bine, Hexa Schreiben Sie dezi.js und ein passendes Ein-/Ausgabeblatt, das eingetippte Zahlen mit NIX oder 0x oder 0b am Anfang zunächst nach Dezimal wandelt und sodann dezimal, binär und hexadezimal ausgibt. 13 KLAUSUR 13 Klausur 14 Klausur-Rückgabe 18