306 22 8MB
German Pages 669 Year 2001
FrontPage 2002
Steffen Kepper Jörg Krause
FrontPage 2002 Professionelle Websites entwickeln
An imprint of Pearson Education München • Boston • San Francisco • Harlow, England Don Mills, Ontario • Sydney • Mexico City Madrid • Amsterdam
Die Deutsche Bibliothek – CIP-Einheitsaufnahme Ein Titeldatensatz für diese Publikation ist bei Der Deutschen Bibliothek erhältlich.
Die Informationen in diesem Produkt werden ohne Rücksicht auf einen eventuellen Patentschutz veröffentlicht. Warennamen werden ohne Gewährleistung der freien Verwendbarkeit benutzt. Bei der Zusammenstellung von Texten und Abbildungen wurde mit größter Sorgfalt vorgegangen. Trotzdem können Fehler nicht vollständig ausgeschlossen werden. Verlag, Herausgeber und Autoren können für fehlerhafte Angaben und deren Folgen weder eine juristische Verantwortung noch irgendeine Haftung übernehmen. Für Verbesserungsvorschläge und Hinweise auf Fehler sind Verlag und Herausgeber dankbar. Alle Rechte vorbehalten, auch die der fotomechanischen Wiedergabe und der Speicherung in elektronischen Medien. Die gewerbliche Nutzung der in diesem Produkt gezeigten Modelle und Arbeiten ist nicht zulässig. Fast alle Hardware- und Softwarebezeichnungen, die in diesem Buch erwähnt werden, sind gleichzeitig auch eingetragene Warenzeichen oder sollten als solche betrachtet werden. Umwelthinweis: Dieses Produkt wurde auf chlorfrei gebleichtem Papier gedruckt. Die Einschrumpffolie – zum Schutz vor Verschmutzung – ist aus umweltverträglichem und recyclingfähigem PE-Material. 10 9 8 7 6 5 4 3 2 1 04 03 02 01 ISBN 3-8273-1902-1 © 2001 by Addison-Wesley Verlag, ein Imprint der Pearson Education Deutschland GmbH, Martin-Kollar-Straße 10–12, D-81829 München/Germany Alle Rechte vorbehalten Einbandgestaltung: Lektorat: Herstellung: Korrektorat: Satz: Druck und Verarbeitung: Printed in Germany
atelier für gestaltung, niesner & huber, wuppertal Sylvia Hasselbach, [email protected] Anna Plenk, [email protected] Roswitha Leferink, Düsseldorf; Barbara Decker, München mediaService, Siegen freiburger graphische betriebe, Freiburg
Inhaltsverzeichnis Teil I: Einführung und Installation .......................................................15 1
Was ist FrontPage? ...........................................................................................17 1.1 Neu in FrontPage 2002 ............................................................................17 1.1.1 Navigation................................................................................17 1.1.2 Neue Seite oder neues Web......................................................18 1.1.3 Dynamic HTML ........................................................................20 1.1.4 Script Editor..............................................................................20 1.2 Struktur und Aufbau.................................................................................21 1.2.1 Menüsystem .............................................................................21 1.2.2 Der Editorbereich .....................................................................22 1.3 Dialoge ....................................................................................................25 1.3.1 Die wichtigsten Dialogfelder .....................................................25 1.3.2 Grundeinstellungen des Programms .........................................25 1.3.3 Seitenoptionen für ein Web ......................................................26 1.3.4 Basisoptionen eines Webs .........................................................32 1.3.5 Seiteneigenschaften..................................................................35 1.4 Die Komponenten....................................................................................39 1.4.1 Übersicht ..................................................................................39 1.4.2 Umgang mit Komponenten......................................................40
2
Server-Erweiterungen .......................................................................................43 2.1 Vorbereiten der FrontPage-Erweiterung....................................................43 2.1.1 Installation der FrontPage-Erweiterungen..................................43 2.1.2 Upgrade und Kompatibilität FrontPage 2000 zu FrontPage 2002 ........................................................................44 2.2 Konfiguration der FrontPage-Erweiterungen .............................................45 2.2.1 Einen virtuellen Server erweitern ...............................................45 2.3 SharePoint Services ..................................................................................48 2.3.1 Übersicht über die Verwaltungsfunktionen................................48 2.3.2 SharePoint Konfigurationseinstellungen ....................................49 2.3.3 SharePoint-Verwaltung virtueller Server ....................................51 2.3.4 SharePoint Websites und FrontPage..........................................54 2.4 SharePoint-Teamfunktionen .....................................................................55 2.4.1 Listen........................................................................................55 2.4.2 Diskussionsrunden ....................................................................56 2.4.3 Dokumente ..............................................................................56
6
Inhaltsverzeichnis
3
Das Internet und seine Dienste ........................................................................57 3.1 Einführung und Grundbegriffe .................................................................57 3.1.1 Grundlagen und FrontPage ......................................................58 3.1.2 Grundbegriffe...........................................................................58 3.2 Die Internet-Protokolle und ihr Ursprung..................................................62 3.2.1 Die Organisationen ICANN und IANA.......................................62 3.2.2 Das ISO/OSI-Modell und die Internet-Protokolle .......................63 3.2.3 Request For Comments (RFC) ...................................................66 3.2.4 Internetprotokolle im Detail ......................................................67 3.3 Höhere Netzwerkprotokolle......................................................................76 3.3.1 Hypertext Transfer Protocol (HTTP) ..........................................76 3.3.2 File Transfer Protocol (FTP) .......................................................81 3.3.3 Protokolle für E-Mail-Verkehr ....................................................87 3.3.4 Codierungsstandard für E-Mail: MIME ......................................92 3.3.5 Network News Transfer Protocol (NNTP)..................................96
4
Basiswissen Online-Marketing..........................................................................99 4.1 Die Gestaltung von Webseiten .................................................................99 4.1.1 Zehn Regeln für gutes Design ...................................................99 4.2 Online-Marketing ...................................................................................101 4.2.1 Definition ...............................................................................101 4.2.2 Zehn Grundregeln für erfolgreiches Marketing .......................103 4.2.3 Werbung für Online-Angebote ..............................................105 4.2.4 Optimal anmelden .................................................................105 4.2.5 Bannertauschprogramme .......................................................107 4.2.6 Werbenetzwerke.....................................................................108 4.2.7 Attraktive Werbeplätze............................................................108 4.2.8 Kundenbindung .....................................................................109 4.3 Domainnamen .......................................................................................110 4.3.1 Namen im Internet .................................................................110 4.3.2 Alternativen ............................................................................112 4.3.3 Konventionell werben.............................................................113
5
Basiswissen HTML ...........................................................................................115 5.1 Die Sprache des Web – HTML ................................................................115 5.1.1 Einführung in HTML ...............................................................115 5.1.2 Kleine Fallen in HTML .............................................................117 5.2 HTML-Grundlagen .................................................................................119 5.2.1 HTML pur ...............................................................................119 5.2.2 Ein bisschen Farbe ..................................................................120 5.2.3 Text und Layout .....................................................................121 5.2.4 Linien .....................................................................................125 5.2.5 Formatierungen......................................................................126 5.2.6 Sonderzeichen ........................................................................131 5.2.7 Bilder und Hyperlinks einbinden .............................................132
Inhaltsverzeichnis
5.3
5.4
5.5
7
5.2.8 HTML-Formulare ....................................................................139 5.2.9 Aufzählungen und Listen .......................................................147 5.2.10 Tabellen .................................................................................150 5.2.11 Fortgeschrittene Navigation....................................................159 Cascading Style Sheets ...........................................................................166 5.3.1 CSS praktisch anwenden ........................................................166 5.3.2 CSS im Detail..........................................................................169 5.3.3 Selektoren ..............................................................................171 5.3.4 Vererbung, Verschachtelung und Abhängigkeit ......................173 5.3.5 Browserprobleme ...................................................................175 5.3.6 CSS-Praxistipp ........................................................................176 JavaScript ...............................................................................................176 5.4.1 Was ist JavaScript? ..................................................................177 5.4.2 JavaScript verwenden .............................................................177 Dynamisches HTML................................................................................178 5.5.1 Übersicht ................................................................................179 5.5.2 Prinzip ....................................................................................179 5.5.3 Beispiele .................................................................................179
Teil II: Webseiten-Gestaltung mit FrontPage ....................................187 6
Arbeiten mit FrontPage-Webs ........................................................................189 6.1 Ein neues Web erstellen..........................................................................190 6.1.1 Die Webstruktur .....................................................................193 6.2 Die erste Seite ........................................................................................195 6.3 Änderungen am Web vornehmen ..........................................................196 6.3.1 Erstellen neuer Seiten..............................................................196 6.3.2 Erstellen neuer Ordner ............................................................197 6.3.3 Umbenennen von Ordnern und Dateien.................................197 6.3.4 Verschieben und Löschen von Dateien und Ordnern ..............197 6.4 Verwendung von Unterwebs ..................................................................199 6.5 Die Webvorlagen ...................................................................................200 6.5.1 Die Vorlage Leeres Web ..........................................................201 6.5.2 Die Vorlage Persönliches Web.................................................201 6.5.3 Die Vorlage Projekt-Web .........................................................204 6.5.4 Die Vorlage Kundenunterstützungs-Web ................................210 6.6 Die Web-Assistenten...............................................................................213 6.6.1 Der Web-Assistent für Firmenpräsenz im Internet....................213 6.6.2 Der Diskussionsweb-Assistent..................................................225 6.7 Webs importieren und ergänzen ............................................................231 6.7.1 Der Webimport-Assistent ........................................................231 6.7.2 Dateien, Ordner und Webs importieren ..................................235
8
Inhaltsverzeichnis
6.8
6.9
7
Import eines Webs als ein Unterweb.......................................................237 6.8.1 Vorbereitung ..........................................................................237 6.8.2 Ein Unterweb veröffentlichen..................................................238 Konfiguration von Webs .........................................................................240 6.9.1 Allgemeine Optionen..............................................................241 6.9.2 Webparameter........................................................................244 6.9.3 Zugriffsberechtigungen ..........................................................246 6.9.4 Quellcodekontrolle .................................................................247 6.9.5 Erweiterte Verzeichnisstruktur von Webs .................................248
Erstellen und Gestalten von Internetseiten ...................................................251 7.1 Was sind Internetseiten?.........................................................................251 7.1.1 Was ist Hypertext? ..................................................................252 7.1.2 Die Struktur von HTML ...........................................................252 7.1.3 Adressierung von Seiten .........................................................255 7.2 Einstieg in die Seitengestaltung ..............................................................257 7.2.1 Eine neue Seite erstellen .........................................................257 7.2.2 Speichern von Seiten ..............................................................258 7.2.3 Dateitypen in FrontPage .........................................................259 7.3 Seiteneigenschaften ...............................................................................260 7.3.1 Allgemeine Optionen..............................................................261 7.3.2 Hintergrund............................................................................262 7.3.3 Meta-Tags ..............................................................................264 7.3.4 Sprache und Codierung..........................................................269 7.3.5 Arbeitsgruppe.........................................................................270 7.3.6 System- und Benutzervariablen...............................................271 7.4 Text .......................................................................................................271 7.4.1 Besonderheiten von HTML-Text..............................................272 7.4.2 Text eingeben und bearbeiten ................................................274 7.4.3 Absätze und Umbrüche ..........................................................277 7.4.4 Überschriften ..........................................................................280 7.4.5 Zeichenformatierungen ..........................................................281 7.4.6 Zeichenformatierungen ..........................................................286 7.4.7 Spracheinstellungen und Rechtschreibung..............................289 7.5 Grafiken einfügen...................................................................................291 7.5.1 Bilder einfügen .......................................................................292 7.5.2 Die ClipArt-Gallery..................................................................293 7.5.3 Clip Organizer ........................................................................296 7.6 Hyperlinks ..............................................................................................297 7.6.1 Text mit Hyperlinks versehen ..................................................297 7.6.2 E-Mails versenden ...................................................................299 7.6.3 Textmarken ............................................................................300 7.6.4 Hyperlinks an Grafiken ............................................................301 7.6.5 Image Maps ...........................................................................301
Inhaltsverzeichnis
7.7
7.8
9
7.6.6 Rollovers.................................................................................303 7.6.7 Hinter den Kulissen .................................................................304 Seitenvorlagen .......................................................................................306 7.7.1 Vorlagen auswählen ...............................................................307 7.7.2 Neu aus vorhandener Seite .....................................................309 Websites für alle .....................................................................................310 7.8.1 Plattformübergreifende Seitenentwicklung .............................310 7.8.2 Schriftarten.............................................................................312 7.8.3 Browserkompatibilität .............................................................314 7.8.4 Anpassungen für behinderte Internetnutzer ............................317 7.8.5 Hardwarevoraussetzungen......................................................318 7.8.6 Farben ....................................................................................319 7.8.7 Die Geschwindigkeit der Anbindung ......................................321
8
Bilder und Design ...........................................................................................325 8.1 Grundlagen des Designs.........................................................................325 8.2 Bilder in Internetseiten ...........................................................................330 8.2.1 GIF .........................................................................................330 8.2.2 JPEG .......................................................................................333 8.2.3 Andere Formate......................................................................334 8.2.4 Formate im Vergleich..............................................................335 8.3 Bilder vorbereiten und bereitstellen ........................................................336 8.3.1 Bilder digitalisieren .................................................................336 8.3.2 Andere Ressourcen .................................................................337 8.4 Bilder mit FrontPage bearbeiten .............................................................337 8.4.1 Bilder einfügen .......................................................................337 8.4.2 Die Bildeigenschaften festlegen ..............................................338 8.4.3 Bilder in FrontPage bearbeiten ................................................341 8.5 FrontPage-Designs .................................................................................346 8.5.1 Designs zuweisen ...................................................................346 8.5.2 Designs ändern.......................................................................347 8.5.3 Randbereiche definieren .........................................................349
9
FrontPage-Webs veröffentlichen....................................................................351 9.1 Die Fehler-Checkliste ..............................................................................351 9.1.1 Stimmen die Inhalte?..............................................................351 9.1.2 Haben Sie alle rechtlichen Aspekte berücksichtigt?..................355 9.1.3 Ist alles korrekt geschrieben? ..................................................356 9.1.4 Sind alle Seiten verlinkt? .........................................................357 9.1.5 Sind alle Seitentitel richtig benannt? .......................................358 9.1.6 Funktionieren alle Hyperlinks?.................................................359 9.1.7 Welche Schwachpunkte hat Ihr Web? .....................................361 9.1.8 Wie stellen Browser das Web dar?...........................................364 9.1.9 Sind die Seiten bereit für Suchmaschinen?..............................365 9.1.10 Was sagen andere zu Ihrem Web? ..........................................366
10
Inhaltsverzeichnis
9.2
9.3
9.4
9.5 9.6
Seíten für die Veröffentlichung auswählen ..............................................366 9.2.1 Synchronisierung....................................................................367 9.2.2 Seiten zur Veröffentlichung kennzeichnen ..............................367 Das Web veröffentlichen ........................................................................368 9.3.1 Die Daten des Webservers ......................................................368 9.3.2 Optionen für die Veröffentlichung ..........................................369 9.3.3 Server mit Servererweiterungen ..............................................369 9.3.4 Server ohne Servererweiterungen ...........................................370 Andere Veröffentlichungswege...............................................................372 9.4.1 Der Windows-FTP-Client .........................................................373 9.4.2 Andere FTP-Programme..........................................................374 Veröffentlichung auf dem lokalen System ...............................................374 Nach der Veröffentlichung .....................................................................375 9.6.1 Site-Check ..............................................................................375 9.6.2 Anmeldung bei Suchmaschinen..............................................375
Teil III: Fortgeschrittene Webs erstellen ...........................................377 10 Layout und Interaktion ...................................................................................379 10.1 Tabellen .................................................................................................379 10.1.1 Anlegen einer Tabelle .............................................................379 10.1.2 Tabellen bearbeiten ................................................................383 10.1.3 Die Größe von Zellen verändern .............................................386 10.1.4 Tabellen formatieren...............................................................387 10.1.5 Umwandlung von Tabellen und Text ......................................389 10.1.6 Dokumentvorlagen für Tabellen..............................................390 10.2 Formulare ..............................................................................................391 10.2.1 Formulare erzeugen................................................................392 10.2.2 Formulare anpassen................................................................392 10.2.3 Die Formularfelder im Überblick .............................................399 10.2.4 Dokumentvorlagen und Assistenten für Formulare ..................407 10.2.5 Der Formular-Assistent............................................................408 10.3 Frames ...................................................................................................411 10.3.1 Ein Frameset und Seiten anlegen ............................................412 10.3.2 Frames sinnvoll einsetzen........................................................413 10.3.3 Browser ohne Frameunterstützung ansprechen ......................414 10.3.4 Frames teilen und verschachteln .............................................414 10.3.5 Frameeigenschaften anpassen ................................................415 10.3.6 Darstellung der Frames anpassen............................................417 10.3.7 Zielframes für Hyperlinks anlegen ...........................................417 10.4 Listen .....................................................................................................418 10.4.1 Aufzählungen .........................................................................419 10.4.2 Nummerierungen...................................................................420 10.4.3 Definitionslisten ......................................................................421 10.4.4 Listen einsetzen ......................................................................422
erstellt von ciando
Inhaltsverzeichnis
11
11 Stylesheets und Dynamic HTML.....................................................................423 11.1 Stylesheets verstehen .............................................................................424 11.2 Stylesheets verknüpfen und einbetten ....................................................426 11.2.1 Stylesheet-Typen ....................................................................426 11.2.2 Selektoren ..............................................................................427 11.2.3 Externe Stylesheets mit dem Dokument verknüpfen ...............428 11.3 Stylesheets definieren .............................................................................428 11.4 Stylesheets anpassen ..............................................................................430 11.4.1 Zeicheneigenschaften .............................................................430 11.4.2 Absatzeigenschaften ...............................................................432 11.4.3 Rahmeneigenschaften ............................................................433 11.5 Positionierung mit Stylesheets ................................................................435 11.5.1 Relative und absolute Positionierung.......................................435 11.6 DHTML-Effekte .......................................................................................437 11.6.1 Animationseffekte ...................................................................437 11.6.2 Mouseover-Effekte ..................................................................438 11.6.3 Effekte für den Internet Explorer .............................................438 11.6.4 Seitenübergänge ....................................................................440 12 Die FrontPage- Komponenten........................................................................441 12.1 Nutzen und Funktion der Komponenten ................................................441 12.1.1 Komponenteneigenschaften anpassen ....................................443 12.2 Inhaltsverzeichnis ...................................................................................443 12.3 Suchformular .........................................................................................445 12.4 Navigationsleisten ..................................................................................446 12.5 Seitenbanner..........................................................................................448 12.6 Elemente einschließen............................................................................449 12.6.1 Seiten einschließen .................................................................449 12.6.2 Seiten nach Zeitplan einschließen ...........................................450 12.6.3 Bild nach Zeitplan einschließen...............................................451 12.7 Anzeigenwechsler ..................................................................................451 12.8 Hoverschaltfläche ...................................................................................452 12.9 Office-Komponenten..............................................................................453 12.9.1 Office-Tabelle .........................................................................453 12.9.2 Office Diagramm ....................................................................455 12.9.3 Office Pivot Table ...................................................................455 12.10 Weitere Komponenten ...........................................................................456 12.10.1 Zugriffszähler..........................................................................456 12.10.2 Kommentar ............................................................................457 12.10.3 Ersetzen..................................................................................457 12.10.4 Datum und Uhrzeit.................................................................458 12.10.5 Laufschrift...............................................................................459 12.10.6 HTML-Markup ........................................................................460 12.10.7 Java-Applets............................................................................461
12
Inhaltsverzeichnis
12.10.8 12.10.9 12.10.10 12.10.11
Andere Dateiformate einbinden ..............................................462 Video......................................................................................463 ActiveX-Steuerelemente..........................................................464 Entwurfszeit-Steuerelemente...................................................466
Teil IV: FrontPage-Webs erweitern ....................................................469 13 Web-Management mit FrontPage..................................................................471 13.1 Ein Web planen ......................................................................................471 13.1.1 Wieso wollen Sie eine Internetpräsenz errichten? ....................471 13.1.2 Was soll kommuniziert werden?..............................................472 13.1.3 Wer ist die Zielgruppe, wer die Konkurrenz? ...........................472 13.1.4 Wie sollen die Inhalte präsentiert werden? ..............................473 13.1.5 Welche Gestaltungsmittel sind angemessen? ..........................473 13.1.6 Wie sieht die Zeitplanung aus? ...............................................473 13.1.7 Wer arbeitet am Web mit?......................................................474 13.1.8 Welche technischen Erfordernisse gibt es? ..............................474 13.1.9 Welche Kosten verursacht die Web-Site?.................................474 13.1.10 Wie wird die Web-Site bekannt gemacht?...............................475 13.2 Mit der Navigationsansicht arbeiten .......................................................475 13.2.1 Eine Webstruktur erzeugen .....................................................476 13.2.2 Die Ansicht anpassen ..............................................................477 13.3 Aufgabenverwaltung ..............................................................................477 13.3.1 Kategorien..............................................................................478 13.3.2 Kategorien erstellen und verwalten .........................................479 13.3.3 Mehrautorenumgebung .........................................................479 13.3.4 Prüfstatus ...............................................................................480 13.3.5 Aufgaben erstellen ..................................................................480 13.3.6 Berichte ..................................................................................481 13.3.7 Aufgaben erledigen und prüfen ..............................................483 14 Datenbankanbindung und Programmierung ................................................485 14.1 Datenbankpraxis ....................................................................................485 14.1.1 Das Datenbankprojekt ............................................................485 14.1.2 Planung der Datenbankstruktur ..............................................485 14.1.3 Entwurf der Seiten und Formulare ..........................................486 14.1.4 Aktivierung des Datenbankzugriffs ..........................................487 14.1.5 Erweiterung durch Active Server Pages ...................................491 14.2 Datenbankfunktionen im Detail..............................................................493 14.2.1 Verbindung zu einer Datenbank .............................................494 14.2.2 Formulare und Datenbanken ..................................................496 14.3 Umgang mit den generierten Codes ......................................................498 14.3.1 Die Ergebnisseite ....................................................................499 14.3.2 Formularauswertung...............................................................499 14.3.3 Interaktiver Datenbankeditor ..................................................500
Inhaltsverzeichnis
13
15 Programmierung von Webseiten ...................................................................503 15.1 Active Server Pages ................................................................................503 15.1.1 Die Programmierung mit VBScript ..........................................503 15.1.2 Eine Einführung in VBScript ....................................................507 15.1.3 Programmieren mit VBScript ..................................................511 15.2 Übersicht Bibliotheken ...........................................................................515 15.2.1 Zusätzliche allgemeine Bibliotheken........................................515 15.2.2 Objekte des Webservers..........................................................516 15.2.3 Mitgelieferte Komponenten ....................................................517 15.3 Datenspeicherung ..................................................................................526 15.3.1 Kollektionen mit Scripting.Dictionary......................................526 15.3.2 Dateizugriff.............................................................................528 15.4 Webserver-Bibliothek..............................................................................538 15.4.1 Die Objekte Request und Response.........................................538 15.4.2 Daten aus einem Formular entnehmen ...................................540 15.4.3 Daten mit Hilfe des URL übertragen........................................544 15.4.4 Weiterleitung (Redirection) .....................................................545 15.4.5 Wie Sie Sessions benutzen können..........................................546 15.4.6 Applikationen .........................................................................552 15.5 Datenbankzugriff ...................................................................................556 15.5.1 Einführung in ADO .................................................................556 15.5.2 Einführung in SQL ..................................................................558 15.5.3 ADO praktisch verwenden ......................................................575 15.6 Die FrontPage-Skriptbibliotheken ...........................................................584 15.6.1 Übersicht FrontPage-Skriptbibliotheken ..................................585 15.6.2 Die Datei global.asa eines FrontPage-Webs.............................585 15.6.3 Die Formularbibliothek fpdbform.inc ......................................588 15.6.4 Die Datenbankbibliothek fpdblib.inc.......................................590 15.6.5 Die Datenbankbibliothek fpdbrgnX.inc...................................594 15.7 Der Microsoft Skript-Editor .....................................................................601 15.7.1 Übersicht über die Entwicklungsumgebung ............................601 15.7.2 Seiteneigenschaften: Einstellungen für ASP .............................604
Teil V: Anhang ....................................................................................607 A
Die FrontPage-Werkzeuge..............................................................................609 A.1 FrontPage 2002 .....................................................................................609 A.1.1 Standard (Kapitel 1, 6 und 7) .................................................609 A.1.2 Format (Kapitel 7)...................................................................611 A.1.3 Berichte (Kapitel 6) .................................................................612 A.1.4 DHTML-Effekte (Abschnitt 11.4) .............................................612 A.1.5 Formatvorlage (Kapitel 11) .....................................................612
14
Inhaltsverzeichnis
A.1.6 A.1.7 A.1.8 A.1.9
Grafik (Kapitel 8) ....................................................................613 Navigation (Kapitel 6).............................................................614 Positionierung (Kapitel 11) .....................................................615 Tabellen (Abschnitt 10.1) .......................................................616
B
HTML-Referenz ...............................................................................................617 B.1 HTML 3.2...............................................................................................617 B.1.1 HTML 3.2-Elemente................................................................617 B.1.2 Übersicht und Einteilung ........................................................619 B.1.3 HTML 3.2-Elemente................................................................619 B.1.4 Liste der Elemente ..................................................................638 B.2 HTML 4..................................................................................................638 B.2.1 HTML 4 – Einführung .............................................................638 B.2.2 Liste der Elemente ..................................................................639 B.2.3 Neue strukturelle Elemente in HTML 4....................................640 B.3 Cascading Style Sheets - CSS..................................................................646 B.3.1 CSS – Klassenübersicht ...........................................................646 B.3.2 Die CSS-Referenztabellen........................................................647 B.3.3 Weitere Informationen............................................................653
C
Angebote im Internet .....................................................................................655 C.1 Offizielle Web Sites.................................................................................655 C.2 Newsgroups zu FrontPage......................................................................655 C.3 Tipps & Tricks ........................................................................................656 C.4 Englische Web Sites zum Thema ............................................................656 C.5 Themes (FrontPage-Designs) ..................................................................656 C.6 FrontPage-Add-ins..................................................................................657 C.7 Newsgroups zu Internet-Themen ...........................................................657 C.7.1 Deutschsprachige Newsgroups...............................................657 C.7.2 Englischsprachige Newsgroups ...............................................657 C.8 Bildarchive .............................................................................................658 C.8.1 Online-Anbieter ......................................................................658 C.8.2 Anbieter von Clip-Art-Sammlungen ........................................658 C.9 Online-Recht ..........................................................................................658 C.9.1 Newsgroups ...........................................................................658 C.10 Suchmaschinen und Verzeichnisse..........................................................659 C.11 Software und Services ............................................................................659
D
Die Autoren.....................................................................................................661 Stichwortverzeichnis.......................................................................................663
I Einführung und Installation Díe Frage mag Ihnen unsinnig erscheinen. Wer kauft sich schon ein FrontPage-Buch und weiß nicht, was das ist? Die Beantwortung nimmt trotzdem einigen Raum ein. Neueinsteiger erfahren, was sie mit FrontPage machen können und ob der Einsatz für einen bestimmten Zweck lohnt. Umsteiger von der 98er oder der 2000er Version – und solche, die es werden wollen – lernen die Vorteile und Erweiterungen kennen. FrontPage ist ein Werkzeug zur Entwicklung von Hypertext-Systemen, die im Folgenden als Webs bezeichnet werden. Das Programm unterstützt Sie beim Design, bei der Verknüpfung von Seiten und der Erstellung des Layouts. Es existieren Hilfsmittel zur Kontrolle auf fehlerhafte Verknüpfungen, der Versionskontrolle und zum Upload der Daten auf einen Server. Nicht zuletzt unterstützt FrontPage die Entwicklung von Skripten – sowohl auf dem Server als auch für den Browser. FrontPage ist ein komplexes Autorenwerkzeug, das sich vielfältig in die Microsoft Office Umgebung einklinkt. Viele Dialoge sind vereinheitlicht und teilweise mit anderen Programmen identisch. Entsprechend können sich Einstellungen in FrontPage auch auf andere Teile der Office-Suite auswirken, auch auf den Internet Explorer.
erstellt von ciando
FrontPage und der Internet Explorer Die Betrachtung der fertigen Seiten wird in aller Regel mit dem Internet Explorer erfolgen. An dieser Stelle sei gleich gesagt, dass Sie auf jeden Fall auch den Netscape Navigator installieren sollten, um Ihre Layouts auf „Browserfestigkeit“ zu prüfen. Trotzdem ist der Internet Explorer ein wesentlicher Bestandteil der Entwicklungsumgebung. Auf die Besonderheiten im Umgang wird in den entsprechenden Abschnitten hingewiesen.
1
Was ist FrontPage?
1.1
Neu in FrontPage 2002
Wenn Sie bereits mit FrontPage 2000 gearbeitet haben, werden Sie sich sicherlich sehr gut zurechtfinden in FP 2002. Die Bedienung ist grundsätzlich gleich geblieben wurde und lediglich den neuesten Windows-Versionen angepasst. Der Schritt von FP 98 nach FP 2002, in dem die beiden Komponenten FrontPage Editor und FrontPage Explorer zu einem einzigen Programm zusammengefasst wurden, war wesentlich umfangreicher und mit größerem Aufwand an Umstellung verbunden. Das Arbeiten mit FP 2002 ist im Prinzip genau gleich geblieben. Die neue Version hat an Umfang zugelegt. So gibt es beispielsweise noch das eine oder andere Design (früher: FrontPage Themen) mehr zur Auswahl und einige neue Servererweiterungen. Am auffälligsten ist sicherlich das neue Wording in der deutschen Version von FrontPage 2002. Die Benennung von Menüpunkten, Schaltflächen, Funktionen etc. hat sich in der neuen Version an vielen Stellen geändert, was oft von zweifelhaftem Nutzen ist. Es heißt nun zum Beispiel „Grafik“, was vorher „Bild“ hieß und aus „Spread Sheet“ wurde die „Office-Tabelle“. Gemeint ist natürlich nach wie vor dasselbe.
1.1.1
Navigation
Die Navigation zwischen den einzelnen Bearbeitungsfenstern erfolgt über die graue Werkzeugleiste ANSICHTEN an der linken Seite: 왘 Seite. In dieser Ansicht bearbeiten Sie die Seite in zwei Modi (Im WYSI-
WYG1-Editor oder im HTML-Quellcode). Eine dritte Ansicht bietet eine Vorschaufunktion. Der Wechsel erfolgt mit drei Registerkarten im Bearbeitungsfenster:
왘 Ordner. Diese Ansicht zeigt alle Ordner Ihres Projekts an und erlaubt die
Navigation. 왘 Berichte. In dieser Ansicht können Sie sich die Ergebnisse der verschiede-
nen Berichte anschauen. Berichte bieten eine gute Unterstützung für die Fehlersuche.
1. WYSIWYG = What You See Is What You Get
17
1 Was ist FrontPage? 왘 Navigation. Wenn Sie Webseiten mit den Navigationselementen von
FrontPage aufbauen, können Sie hier die Navigation grafisch entwerfen. 왘 Hyperlinks. Alle Hyperlinks der Site finden Sie in der dieser Ansicht. Ein
gutes Werkzeug zur Fehlersuche. 왘 Aufgaben. Ob im Team oder alleine: Definieren Sie alle Aufgaben, und
schon verfügen Sie über ein einfaches, aber leistungsfähiges Projektmanagementwerkzeug.
1.1.2
Neue Seite oder neues Web
Die Schritte zum Öffnen neuer Seiten oder ganzer Webs sind in FrontPage 2002 neu angeordnet. Ob Sie nur eine leere neue Seite anlegen wollen oder ein ganzes Web mit Hilfe eines Assistenten – alles das geht über das Menü DATEI | NEU | SEITE ODER WEB. Abbildung 1.1: Neue Seite oder Web im zweiten Untermenü
Es öffnet sich ein Fenster, im Aussehen ganz den neuesten Windows-Versionen entsprechend. Hier finden Sie auf einen Blick unter anderem die zuletzt aufgerufenen Seiten, die Vorlagen für eine leere Seite oder ein leeres Web und die Links auf eigene und vorgegebene Seiten- und Webvorlagen.
18
Neu in FrontPage 2002 Abbildung 1.2: Das Fenster „Neue Seite oder neues Web“ – mit neuem Gesicht
Bereits das Fenster für die Seitenvorlagen beispielsweise kommt dann aber wieder im altbekannten Windows-Gewand. Man ist sich offenbar noch nicht vollständig im Klaren darüber, ob das neue Layout gut oder schlecht ist. Bei FrontPage dürfen Sie es sich aussuchen, hier gibt es beides. Abbildung 1.3: Das Fenster „Seitenvorlagen“ – Altbekanntes
19
1 Was ist FrontPage?
1.1.3
Dynamic HTML
Die direkte Unterstützung für Dynamic HTML gibt es seit FrontPage 2000. Dabei werden allerdings bei weitem nicht alle Möglichkeiten ausgereizt, die DHTML bietet. Die einstellbaren Effekte beschränken sich auf die Animation von Elementen oder der gesamten Seite. Hervorzuheben ist die Unterstützung beider Browser – die Animationen laufen auch auf Netscape Navigator (ab Version 4). Browser mit der Versionsnummer 3 oder kleiner stellen die Elemente statisch dar. Abbildung 1.4: Funktionsleiste für DHTML-Effekte
Die Effekte werden in externen JavaScript-Dateien zur Verfügung gestellt und mit
Neues Fenster!
Fenster zu!
Listing 5.50: Fenster können Sie nur mit JavaScript wieder schließen
Je nach Browser muss das Schließen des Fensters bestätigt werden. Beachten Sie, dass der Nutzer sich möglicherweise nicht daran hält und alle geöffneten Fenster offen lässt und dadurch Layout und Organisation stört. Abbildung 5.18: Alle Macht liegt beim Nutzer. Ohne Sicherheitsabfrage wird das oberste Fenster nicht geschlossen.
Teile und herrsche! Framesets
Sie sehen praktisch in Echtzeit, wie die Schleife arbeitet und Wert für Wert im Browser erscheint. Die innere Schleife bremst etwas und gibt Punkte aus, um die Ausgabe besser zu veranschaulichen. Mit dem Beispiel kennen Sie schon die erste Methode des Objekts: Write. Spannend ist immer die Abfrage von Servervariablen, teilweise werden wertvolle Informationen vom Browser geliefert. Versuchen Sie:
Setzen Sie für „variable“ eine der folgenden Zeichenketten ein. Nicht alle Werte werden für die praktische Programmierarbeit wirklich benötigt. Die wichtigsten sind: 왘 HTTP_REFERER
Wenn Ihre Seite durch Anklicken eines Hyperlinks auf einer anderen Seite erreicht wurde, enthält diese Variable die URL der Seite, von der der Nutzer kam. Oft sind es Suchmaschinen wie YAHOO!. Die Auswertung gibt wertvolle Hinweise, wer Ihre „heimlichen Werbeträger“ sind. 왘 HTTP_USER_AGENT
Der Typ des Browsers wird angezeigt. Sie können auswerten, welche Browser Ihre Nutzer bevorzugen, und die Gestaltung der Seiten daraufhin ausrichten. 왘 REMOTE_ADDR
Dieses Feld enthält die IP-Adresse, mit der der Browser die Verbindung hergestellt hat. Daraus können Sie mit Hilfe eines Domainname-Servers (DNS) die Domain rekonstruieren. Bedenken Sie aber, dass große Onlinedienste und Provider IP-Adressen dynamisch vergeben und derselbe Nutzer jeden Tag eine andere Nummer haben kann. Sie können aber die Class-B- und -C-Netze auswerten und feststellen, ob häufiger von T-Online oder AOL aus zugegriffen wird. 왘 QUERY_STRING
Diese Variable enthält die Zeichenkette nach dem Fragezeichen, dem Trennzeichen für die Übertragung von Parametern zum Server. Die Verwendung lernen Sie bei der Übergabe von Formulardaten kennen. 왘 SCRIPT_NAME
Dies ist der virtuelle (relative) Pfad der aktuellen ASP-Seite. Damit können Sie Seiten automatisch mit sich selbst referenzieren, ohne den Stand-
539
15 Programmierung von Webseiten
ort zu kennen. Diese Funktion ist wertvoll, wenn Sie Skripten schreiben, die Sie verkaufen möchten und die auf jedem Webserver ohne Änderungen arbeiten sollen. 왘 SERVER_NAME
Der Name des Webservers oder die IP-Adresse. 왘 PATH_TRANSLATED
Der physische Pfad des ASP-Skripts auf der Festplatte des Webservers.
15.4.2
Daten aus einem Formular entnehmen
Der einzig mögliche direkte Weg in HTML, über den Informationen vom Nutzer zu Ihrer Datenbank gelangen, führt über HTML-Formulare. Erinnern Sie sich an die Art und Weise, wie HTML die Formulare verarbeitet. Die Elemente eines Formulars bestehen aus einem Typ (Texteingabefeld, Kontrollkästchen usw.), einem Namen des Elements und einem bestimmten Wert, der vorgegeben wird und vom Nutzer verändert werden kann. Das Abfragen der Felder eines Formulars kann in FrontPage 2002 mit dem WebBot BESTÄTIGUNGSFELD erfolgen. Allerdings ist die Funktion primitiv und auf FrontPage-Erweiterungen im Server angewiesen. Wie kann man nun den Inhalt von HTML-Formularen mit Active Server Pages auswerten? Nach dem Erstellen des Formulars geben Sie im -Tag das Skript an, mit dem die Auswertung erfolgt. In FrontPage wählen Sie im Dialogfeld FORMULAREIGENSCHAFTEN die Schaltfläche OPTIONEN... Im Formular fügen Sie ein Feld mit dem Namen „Vorname“ ein. Der Umgang mit Formularfeldern selbst ändert sich bei der Nutzung von Skripten nicht, Sie können die FrontPage-Funktionen wie gewohnt einsetzen. Abbildung 15.1: ASP-Skript zur Auswertung eines Formulars angeben
540
Webserver-Bibliothek
Benutzt werden die bereits vorgestellten Request-Objekte. Das Übertragen des Formulars mittels HTTP nutzt den Prozess Request (Anforderung) dieses Protokolls. Das ASP-Objekt Request enthält eine Kollektion, mit deren Hilfe sich die Daten leicht auswerten lassen. Die Kollektion besteht immer aus einem Wertepaar. Im Fall der hier benutzten Formkollektion besteht das Paar aus dem Namen des Elements und seinem Inhalt. In der HTML-Ansicht können Sie sich davon überzeugen, ob der Befehl korrekt eingetragen wurde:
Testen Sie den folgenden Quelltext als „Antwortseite“ (ANTWORT.ASP):
Willkommen!
Hallo . Danke für die Registrierung!
Grundsätzlich besteht jedoch keine Möglichkeit Daten mit dieser Methode auf einer Seite einzugeben und dann sofort auszuwerten. Formulare müssen immer gesendet und dann der nächsten Seite übergeben werden. Manchmal kann es stören, die Abfrage der Inhalte auf so direktem Wege vornehmen zu müssen. Andererseits beeindruckt die Einfachheit, mit der Informationen übertragen werden können. Felder mit mehreren Werten Oft können Dialoge stark vereinfacht werden, wenn die Nutzer mehrere Optionen gleichzeitig auswählen können. Ein beliebtes Beispiel ist die Auswahl aus einem Listenfeld. Der folgende Quellcode zeigt mögliche Eintragungen eines Newsdienstes, von denen einer oder auch mehrere Einträge ausgewählt werden können. Schauen Sie sich zunächst das Formular an, mit dem die Daten abgefragt werden:
Bestellung Newsservice mit Listbox
Bestellung Newsservice
Sportinformationen Regionalinfo Börsenticker Internet Nachrichten Klatsch und Tratsch
541
15 Programmierung von Webseiten
Die Auswertung ist sehr einfach, denn Sie können die Methoden der Formkollektion anwenden. Jedes multiple Element bildet eine solche Kollektion. Hier ist der Quellcode für das Skript register.asp:
Ihre Bestellung
Vielen Dank für Ihre Bestellung.
Sie haben Dienste abonniert:
Es werden die in den -Tags übergebenen Werte ausgegeben. Wenn Sie keine direkte Ausgabe planen, benötigen die Werte zur weiteren Verarbeitung in Variablen keine langen Beschreibungen. Textfelder abfragen Sehr häufig werden Formulare mit einem allgemeinen Textfeld beendet, in dem der Nutzer einen Kommentar zu Ihrer Webseite unterbringen kann. Auch Anzeigensysteme nutzen das HTML-Element zur Erfassung längerer Texte. Die Übertragung solcher Elemente nach VBScript ist sehr einfach, denn VBScript kennt keine enge Begrenzung der Zeichenkettenlänge. Theoretisch können Zeichenketten bis zu 2 Milliarden Zeichen (2 GByte) enthalten – sicher genug, um auch riesige Textfelder aufzunehmen.
Bitte schreiben Sie uns Ihre Meinung:
Daten per Formular übertragen Wenn Formulare aufgebaut werden, können Sie die Gelegenheit nutzen und andere im Skript erzeugte Daten übertragen. Vor allem bei komplexen Anwendungen können Skripten so von mehreren anderen Stellen aus aufgerufen werden. Die Übergabe bestimmter Variablen steuert dann die Skripten. Da auch globale Variablen sich nur auf den aktuellen Skript beziehen und Datenbanken nicht immer sinnvoll oder möglich sind, ist eine solche Alternative gefragt, die kleinere Datenmengen leicht überträgt.
542
Webserver-Bibliothek
In HTML gibt es dafür den Tag . Dieses Feld wird nicht angezeigt, der darin festgeschriebene Wert wird trotzdem wie jeder andere Feldname übertragen. Sie können solche Felder im Dialog FORMULAREIGENSCHAFTEN erzeugen. Klicken Sie auf die Schaltfläche ERWEITERT... und geben Sie Namen und Werte für das Feld ein. Statt der Werte können Sie im Quellcode später Skriptfragmente einbauen. Abbildung 15.2: Versteckte Felder bequem per Dialog erzeugen
Erzeugt wird mit diesem Dialog HTML-Code, der etwa folgendermaßen aussieht:
Der folgende Code zeigt eine umfangreichere Anwendung:
Woher haben Sie von uns gehört?
Sagen Sie uns, wie Sie auf uns aufmerksam wurden:
Zeitungsanzeige
Fernsehspot
Trikotwerbung
Im Beispiel wird der Wert „advertising“ dem Feld survey zugewiesen. Landen mehrere Formularseiten auf der gleichen Antwortseite, können Sie die Herkunft damit unterscheiden. Zusätzlich lassen sich so auch anderswo im Skript erzeugte Daten zwischen den Seiten übertragen. Die Auswertung erfolgt mit der normalen Abfrage von Formularfeldern, wie zuvor schon beschrieben – nutzen Sie das bereits gezeigte Skript register.asp.
543
15 Programmierung von Webseiten
Die Übertragung der Formularwerte und -namen findet im HTTP-Header statt. Die verantwortliche Methode in HTML heißt „post“ (deutsch: veröffentlichen im Sinne von senden); sie wird über gestartet. Um die Zeichen auch unabhängig von den Formular- und Request-Befehlen codieren und decodieren zu können, kennt VBScript spezielle Funktionen. Dies gilt auch für die zweite Methode, GET, mit der Daten an die URL angehängt werden.
15.4.3 Server .HTMLEncode
Daten mit Hilfe des URL übertragen
Wenn Sie HTML-Codes anzeigen möchten, können Sie die Methode Server.HTMLEncode benutzen. Als Parameter wird eine Zeichenkette erwartet, die umgewandelt zurückgegeben wird. Die Anwendung ist immer dann gegeben, wenn Sie erwarten, dass die Zeichenkette HTML-Tags enthält, diese Tags auf dem Browser jedoch nicht ausgeführt werden sollen. Das folgende Listing zeigt eine entsprechende Anwendung:
Ausgabe 1:
Ausgabe 2:
Server .URLEncode
Ganz ähnlich arbeitet die Methode Server.URLEncode, mit der die Codes so erzeugt werden, als würde die Zeichenkette über die URL übertragen werden. Damit ist es möglich, auch Werte aus normalen Variablen mit zu übertragen und auszuwerten. Der folgende Abschnitt erklärt, wie Daten auch ohne Formulare zwischen Webseiten ausgetauscht werden können. Auch hier werden Methoden des Objekts Request benutzt.
Einfache Variablen-/Wertepaare
Formulare sind auffällige Erscheinungen auf einer Webseite. Manchmal ist ein Hyperlink zur Navigation sinnvoller oder technisch einfach unumgänglich. Der folgende Hyperlink wurde um Variablen-/Wertpaare verlängert: http://www.seite.de/scripte.asp?variable1=Wert1&variable2=Wert2
Drei spezielle Zeichen finden dabei Verwendung. Das Trennungszeichen zwischen dem URL und den angehängten Parametern ist das Fragezeichen. Jedes einzelne Wertepaar wird mit einem &-Zeichen getrennt. Zwischen Variable und Wert steht ein Gleichheitszeichen. Sie können theoretisch beliebig viele Werte übertragen. Beachten Sie aber, dass die Browser ganz unterschiedliche Längen für die komplette URL akzeptieren. Der Internet Explorer akzeptiert ca. 2.000 Zeichen. Request.QueryString
544
Die Auswertung wird mit der Methode Request.QueryString vorgenommen. Diese Methode extrahiert die einzelnen Werte aus dem URL. Schauen Sie sich ein kleines Beispiel an, das zur Bestellung von Büchern dient (Haben Sie den Schriftsteller erkannt?):
Webserver-Bibliothek
Was möchten Sie bestellen?
Willkommen in unserem Buchladen Ihre Bestellung bitte:
Der Unbesiegbare
Der Schnupfen
Sterntagebücher
Eden
Jeder Link führt auf die Seite weiter.asp, wo die Bestellung ausgewertet wird. Den Quelltext finden Sie hier:
Ihre Bestellung
Willkommen in unserem Buchladen Sie haben das Buch
von Stanislaw Lem bestellt. Vielen Dank!
Wenn Sie beliebige Werte übertragen möchten, muss jeder einzelne Wert in die URL-Form gebracht werden. Das erste Beispiel arbeitet auch ohne URL Encode, denn es werden keine speziellen Zeichen übermittelt. Um Fehlern vorzubeugen, sollten Sie aber immer mit URLEncode arbeiten.
15.4.4
Weiterleitung (Redirection)
Suchmaschinen versuchen heutzutage alles, um jede greifbare Information zu bekommen. Dazu werden so genannte Robots oder Spider verwendet, kleine Programme, die HTML-Seiten durchsuchen und indizieren. Solche Programme verfolgen auch Links und nehmen normalerweise Ihr gesamtes Web auf. Dabei kann es vorkommen, dass Seiten im Index der Suchmaschine
Response.Redirect
545
15 Programmierung von Webseiten
stehen, die potenzielle Nutzer eigentlich auf so direktem Wege nie erreichen sollten. Sie müssen dann dafür sorgen, dass der verlorene Surfer wieder auf den rechten Pfad zurückgeführt wird. Mit ASP ist das sehr einfach. Wenn Sie eine Registrierungsseite haben und jemand zufällig auf der Antwortseite zur Registrierung landet, dann senden Sie ihn direkt zum eigentlichen Formular zurück:
Registrierung erfolgreich
Danke für die Registrierung!
Beachten Sie, dass die Anweisung zum Umleiten noch vor dem ersten HTML-Befehl steht. Sie können mit diesem Befehl auch jede andere Seite im Internet erreichen. Normalerweise sollte das so funktionieren, dass der Nutzer die Umleitung nicht bemerkt.
15.4.5
Wie Sie Sessions benutzen können
Wann Sessions angewandt werden Neben der reinen Interaktivität, das heißt der Reaktion des Webservers auf Eingaben der Nutzer, sind oft auch länger zurückliegende Informationen über die Surfer sinnvoll zu gebrauchen. So könnte eine intelligente Webseite die persönlichen Interessensgebiete speichern und News entsprechend auswählen. Der Besucher wird stärker an das Angebot gebunden, wenn er bei seinen Besuchen persönlich angesprochen wird. Ein anderes Problem ist die statistische Auswertung der Bewegung der Surfer über Ihre Seiten. Auch diese Informationen lassen sich mit der Hilfe von Sessions speichern. Der Vorteil, vor allem für kleinere Projekte, ist der mögliche Verzicht auf Datenbanken. Prinzipiell funktionieren alle diese Anwendungen auch oder besser mit Datenbanken; nur für die Speicherung der Lieblingsfarbe ist der Aufwand und die daraus resultierende Serverbelastung nicht gerechtfertigt. Warum Sessions sinnvoll sind
546
Sessions haben ihren Ursprung in Begrenzungen des HTTP-Protokolls. Dieses Protokoll, dass die Verbindung von Webserver und Browser steuert, ist ein so genanntes verbindungsloses oder statusloses Protokoll. Für jedes einzelne Objekt, jede Seite, jedes Plug-In wird immer wieder erneut eine Verbindung aufgebaut. Der Webserver kann also in größeren Abständen zugreifende Nutzer nicht wieder zuordnen. Er liefert nur Daten an irgend-
Webserver-Bibliothek
welche immer wieder und irgendwann anfordernde Browser. Alle Interaktionen beruhen auf einem primitiven Frage-Antwort-Spiel (Request and Response). Sessions lösen dieses Problem, indem Sie einen Status über mehrere Webseiten mitführen und die von HTTP nicht unterstützten Informationen speichern. Gelegentlich werden Sie Berichte finden, in denen vor der Verwendung von Sessions gewarnt wird. Deshalb möchte ich hier die technischen Hintergründe erläutern, um die Entscheidung für oder wider Sessions transparent zu machen. Das Session-Objekt, auf dem alle Methoden und Eigenschaften aufbauen, kann selbst keine Daten speichern. Sessions nutzen Cookies zur Speicherung der Informationen. Cookies werden im folgenden Abschnitt ausführlich erklärt, denn ihr Verständnis ist für den Umgang mit dem Objekt Session sinnvoll.
Pro und Contra Sessions
Cookies als Informationsspeicher Cookies (deutsch: Kekse) haben einen völlig irreführenden, harmlosen Namen. Aber sie sind bekannt und oft verteufelt als der Angriffspunkt des bösen Hackers aus dem Web, der sich an den privaten Dateien der Surfer zu schaffen machen will. Cookies wurden von Netscape erfunden und sind seit der ersten Version ihres Browsers Navigator dabei. Später wurde daraus ein Standard, der auch vom World Wide Web Consortium W3.ORG unterstützt wird. Die meisten Browser unterstützen heute Cookies.
Wo kamen die Cookies her?
Cookies sind eine oder mehrere Dateien, die der Browser anlegt und in denen (und nur in denen) der Server auf Wunsch Informationen unterbringen und wieder auslesen kann. Der Sinn von Cookies ist die Wiedererkennung des Nutzers bei einer späteren Session. Cookies lösen also ein gravierendes Problem des HTTP-Protokolls. Cookies können temporär sein, also am Ende einer Session wieder gelöscht werden, andere sind permanent und werden nie oder sehr viel später gelöscht. Cookies werden zwischen Server und Browser durch HTTP-Header übertragen. Durch Senden eines Set-Cookie-Headers wird ein Cookie in der CookieDatei erzeugt. Soll beispielsweise der Name eines Nutzers gespeichert werden, sieht der zugehörige Header folgendermaßen aus:
Die Technik der Cookies
Set-Cookie: UserName=Roger+Waters; path=/ ; domain=comzept.de; expires=Tuesday, 01-Jan-99 00:00:01 GMT
Der neue Eintrag in der Cookie-Datei wird jetzt erstellt. Das Pluszeichen zwischen Vor- und Zuname deutet darauf hin, dass die Datei URL-codiert ist. Die Variable path schränkt die Rückgabe des Eintrages auf Seiten ein, die von dem benannten Pfad aus anfragen. Mit domain wird die Rückgabe auf die angegebene Domain eingeschränkt. Server, die aus anderen Domains das Cookie abfragen, erhalten keine Antwort. Das ist auch der Grund, warum fremde Server Einträge wirklich nicht lesen können. expires gibt das Datum an, an dem der Eintrag ungültig und vom Browser gelöscht wird. Aller-
547
15 Programmierung von Webseiten
dings kann der Browser den Eintrag auch schon früher löschen, wenn die Datei zu groß wird. Der Cookie wird, wenn Domain und Pfadangabe stimmen, nun in jede Anfrage eingebaut, die der Browser an den Server stellt. Für jedes Verzeichnis im Webserver können Sie also eigene Cookies erzeugen. Cookies erzeugen und lesen
Cookies werden direkt von ASP unterstützt. Das Response-Objekt enthält eine Kollektion Cookies; daraus kann ein Cookie-Objekt und ein CookieDictionary erzeugt werden. Dictionaries sind Speicherobjekte vom Typ Dictionary, die Paare aus Schlüssel und Wert speichern:
Response.Cookies
Die etwas abenteuerlich anmutende Schreibweise zum Setzen des Verfallsdatums und der anderen Eigenschaften resultiert aus der Tatsache, dass der Eintrag (das Cookie) selbst ein Objekt, Expires die entsprechende Eigenschaft ist. Sie müssen das Datum nur dann angeben, wenn das Cookie länger als eine Session gespeichert werden soll. Für eine Warenkorbfunktion wäre es also nicht unbedingt erforderlich. Cookies werden über HTTP-Header übertragen. Es ist deshalb notwendig, diesen Code an den Anfang des Skripts vor der ersten Ausgabe zu stellen. Folgende Eigenschaften können Sie benutzen: 왘 Path
Damit wird angegeben, wann der Browser das Cookie sendet. Wenn Sie ein Unterverzeichnis /SCRIPTS haben und der Aufruf von einer Seite in diesem Verzeichnis kommt, wird der Cookie gesendet, sonst nicht. 왘 Domain
Damit wird die Domain angegeben, aus welcher der Aufruf kommen darf. Damit wird das Auslesen fremder Cookies verhindert. 왘 Expires
Gibt das Verfallsdatum des Cookies an. 왘 Secure
Wenn der Webserver den Secure Socket Layer (SSL) unterstützt, wird die Transaktion mit einer sicheren Übertragung ausgeführt. Sie können ein Cookie leicht wieder lesen. Dazu wird das schon bekannte Request-Objekt benutzt:
548
Webserver-Bibliothek
Wie bei allen regulären Objekten, die eine Kollektion bilden, kann auch hier wieder mit einer Schleife auf alle Cookies zugegriffen werden. Wollen Sie sich über den Begriff Cookie keine Gedanken machen, verwenden Sie besser die in ein eigenes Modell integrierten Sessions. Wegen der komfortablen Arbeitsweise sind Sessions immer vorzuziehen. Indes dürfen Sie nicht vergessen, dass Session-Objekte intern auf Cookies zurückgreifen. Manchmal sind Cookies nicht erwünscht. ASP Session-IDs benutzen generell Cookies, also auch dann, wenn Sie gar keine Variablen gesetzt haben. Wenn ein Benutzer die Sicherheitseinstellungen im Browser so gewählt hat, dass vor eintreffenden Cookies gewarnt wird, kann dies ausgesprochen lästig sein. Möglicherweise verlieren Sie Benutzer. Sie können die folgende Serverdirektive verwenden, um die Anwendung von Sessions und damit die Verwendung von Cookies grundsätzlich zu verbieten. Sie müssen diesen Eintrag auf jeder Seite vornehmen:
Darüber hinaus beschleunigt die Verwendung dieses Befehls die Abarbeitung der Skripte. Auch wenn es keine Rolle spielt, ob Cookies verwendet werden oder nicht, ist es sinnvoll, die Verarbeitung zu unterdrücken, wenn Sie die Funktion nicht ausdrücklich benötigen. Wenn Sie bisher HTML-Seiten mit JavaScript programmieren, werden Sie auch dort vielleicht bereits mit Cookies gearbeitet haben. Die von JavaScript browserseitig generierten Cookies unterscheiden sich grundlegend von den vom Server gesetzten und lassen sich nicht austauschen oder gegenseitig beeinflussen. Ereignisse beim Start und Ende von Anwendung und Sitzung Windows-Programmierer mögen sich vielleicht schon gefragt haben, wo denn die Ereignissteuerung stattfindet. Die Interaktion findet nicht über Ereignisse statt, sondern über Protokolle. Trotzdem gibt es zwei Ereignisse, die stattfinden und die auch ausgewertet und bedient werden können, wenn sie ausgelöst werden: der Beginn und das Ende einer Session. In jedem Web, das heißt in jedem virtuellen Server, gibt es die Möglichkeit, diese Ereignisse mit einem besonderen Skript zu steuern. Der Status wird auch dadurch deutlich, dass diese Skriptdatei eine spezielle Endung hat. Sie heißt GLOBAL.ASA. Wenn Sie Datenbankkomponenten in FrontPage einfügen, wird die Datei GLOBAL.ASA automatisch erzeugt und mit den entsprechenden Werten geladen. Diese Datei hat die folgende Struktur, wenn Sie noch keine eigenen Befehle eingetragen haben:
Die Datei GLOBAL.ASA
Am Beginn einer Session wird die Prozedur Session_OnStart aufgerufen, die enthaltenen Befehle werden ausgeführt. Die Bedeutung der Prozeduren Application_OnStart und Application_OnEnd werden im nächsten Abschnitt zum Thema Applikationen erklärt. Beachten Sie, dass die Prozeduren in der Datei GLOBAL.ASA keine Ausgaben erzeugen können. Sie dürfen weder HTML-Code noch Response.Write-Methoden enthalten. Das gilt, obwohl der HTML-Tag
15.4.6
Applikationen
Bislang wurden Skripte immer so aufgebaut, dass jeder einzelne Prozess zu der vom Nutzer sichtbaren Seite passt. Praktisch entspricht diese Vorgehensweise der Kopplung von Oberfläche und zugehörigem Programmcode. Moderne Software-Entwicklungssysteme wie Visual Basic oder Delphi arbeiten ähnlich. All diese Systeme haben jedoch eine gemeinsame Zone im Hintergrund zu Eigen, die alle Prozesse zusammenführt – das Fenster. Mit dem Application-Objekt wird eine solche Zusammenführung auch in ASP möglich, obwohl auf dem Webserver kein Fenster erzeugt wird. Als Applikation wird hier die Zusammenfassung mehrerer Skripten verstanden. Das in Abschnitt 14.1 Datenbankpraxis gezeigte Projekt ist eine solche Applikation. Natürlich sind Applikationen nicht nur eine Sammlung von Skripten. Es gibt eine ganze Reihe interessanter Funktionen, die zur Entwicklung großer Projekte nötig sind und bisher gefehlt haben: 왘 Daten können zwischen Skripten ausgetauscht werden. 왘 Daten können auch zwischen Nutzern ausgetauscht werden. 왘 Am Beginn und am Ende einer Applikation werden spezielle Ereignisse
ausgelöst und können behandelt werden. 왘 Mit Hilfe der Managementkonsole können Applikationen unterschiedli-
che Eigenschaften zugewiesen werden, beispielsweise ein Timeout-Wert.
552
Webserver-Bibliothek 왘 Applikationen können in eigenen Adressräumen unter Windows NT ar-
beiten und sind damit voneinander getrennt. 왘 Eine Applikation, die abstürzt oder gestoppt wird, zieht andere nicht in
Mitleidenschaft. Ein Web kann mehrere Applikationen haben, jeder virtuelle Server sollte eine eigene Applikation (oder viele) haben, und jedes Programm, das für sich abgeschlossene Aufgaben ausführt, sollte eine eigene Applikation sein. Sie können Applikationen auch benutzen, um Nutzern Funktionen zur Verfügung zu stellen. So können Sie eine Shopapplikation betreiben, die von verschiedenen Webs auf dem Computer benutzt wird und trotzdem unterschiedliche Darstellungen hat. Für jede Applikation muss mit der Managementkonsole ein Basisverzeichnis (engl. Root Directory) festgelegt werden. Die Applikation besteht dann aus dem zum Basisverzeichnis erklärten Ordner und allen Unterordnern und den darin enthaltenen Dateien. Definieren Sie einen der Unterordner erneut als Basisverzeichnis, fällt er aus der Struktur der übergeordneten Applikation heraus. Zwei Applikationen können sich nicht überlappen und einen Ordner teilen. Nach der ersten Installation der Active Server Pages ist eine so genannte Standardapplikation schon erstellt. Diese bezieht sich auf das Stammverzeichnis des Webservers.
Eine Applikation wird definiert
Die Definition einer neuen Applikation führt immer über die Managementkonsole. Starten Sie die Konsole, wählen Sie den IIS und anschließend dort die STANDARDWEBSITE aus (in der englischen Version DEFAULT WEBSITE). Abbildung 15.3: Die StandardWebSite ist die erste, schon von der Installationsroutine eingerichtete Applikation
553
15 Programmierung von Webseiten
Wenn Sie auf dem Entwicklungssystem arbeiten, werden Sie normalerweise nur mit Unterverzeichnissen in Berührung kommen. Auf einem Webserver im Netz können Applikationen natürlich auch virtuellen Servern mit eigener IP zugeordnet werden. Das Applikations-Objekt (Application) Zur Steuerung und Verwaltung der Applikationen dient ein eingebautes Objekt, das Objekt Application. Die Arbeitsweise ist dem Session-Objekt sehr ähnlich. Der einzige Unterschied ist die Position des Objekts. Die Applikation bezieht sich auf alle laufenden Skripten, die aus dem Verzeichnis der Applikation gestartet werden. Die definierten Variablen stehen also auch allen Skripten zur Verfügung. Dadurch können Sie Daten zwischen Skripten und zwischen Nutzern austauschen. Die Variablen des ApplicationObjekts
Die Variablen des Objekts Application können von allen Skripten und Nutzern gesehen werden – sie sind global. Von den Sessionvariablen unterscheiden sich Applikationen durch drei Eigenschaften: 왘 Applikationsvariablen basieren nicht auf Cookies. 왘 Der Webserver muss keine Session mitführen, um mit der Applikations-
variablen zu arbeiten. 왘 Die Verwendung ist risikolos und mit allen Browsern kompatibel. Applikationsvariablen erzeugen und nutzen
Eine neue Variable ist schnell erzeugt. Übergeben Sie dem Objekt einfach die Variable und den zu speichernden Wert:
Mit Applikationsvariablen arbeiten
Wurde die Variable einmal definiert, kann sie auf jeder anderen Seite von jedem Nutzer gelesen werden, wie im folgenden Listing gezeigt:
Applikationen nutzen
Es spielt keine Rolle, welcher Nutzer diese Seite aufruft, wann er dies tut und ob er zwischen dem Seitenwechsel die Sitzung beendet.
554
Webserver-Bibliothek
Einmal definierte Variablen lassen sich nicht wieder löschen. Sie bleiben erhalten, bis der Webserver heruntergefahren wird oder die Applikation mit der Managementkonsole entfernt wird. Das ist bei der Planung der Skripten wichtig zu wissen, denn wenn Sie immer wieder neue Variablen mit Zufallsgeneratoren erzeugen (was sich bei den Sessions noch anbot), wird der Server belastet. Variablen brauchen Speicherplatz und kosten Rechenleistung.
Applikationsvariablen löschen
Die Applikationsereignisse Die Ereignissteuerung wurde bereits beim Objekt Session angesprochen. Ganz ähnlich funktioniert die Ereignissteuerung bei einer Applikation. Auch diese Ereignisse werden mit Skripten bedient, die sich in der Datei global.asa befinden. Jede Applikation hat eine eigene global.asa-Datei. Die beiden darin untergebrachten applikationsbezogenen Prozeduren starten, wenn die erste Seite der Applikation, beispielsweise index.asp, das erste Mal aufgerufen wird. Der erste Nutzer, der nach dem Start des Webservers die Seite besucht, löst das Ereignis aus. Jeder weitere Nutzer löst nur die Session-Prozeduren Session_OnStart und Session_OnEnd aus. Nach der ersten Initialisierung der Applikationsvariablen stehen diese nun immer zur Verfügung. Die Skripten innerhalb der Prozeduren Application_OnStart und Application_OnEnd sind einigen Einschränkungen unterworfen. So dürfen keine Ausgaben in irgendeiner Form erfolgen, HTML-Code darf nicht enthalten sein, und Sie sollten keine Absprünge auf andere Seiten programmieren (mit Response.Redirect). Die Skripten werden automatisch vor der ersten Seite gestartet und wieder verlassen.
Applikationsereignisse steuern
Eine gute Anwendung ist ein Hitzähler für Ihre Webseite. Damit der Zähler auch exakt arbeitet, ist es sinnvoll über die interne Arbeitsweise nachzudenken. Der Webserver liefert Seiten an Nutzer, wann immer diese die Seiten anfordern. So entstehen parallel laufende Prozesse. Da alle Prozesse Zeit brauchen, um ausgeführt zu werden, ergibt sich möglicherweise ein Problem. Wenn zwei Nutzer gleichzeitig eine Seite aufrufen, werden die Werte parallel verarbeitet. Wenn der Ursprungswert der Variablen 4 ist, schreibt Nutzer 1 mit seiner Sitzung den Wert 5 zurück. Bis dahin hat aber auch Nutzer 2 die Seite gestartet, ebenfalls den Wert 4 ermittelt und 5 zurück geschrieben. Danach steht der Zähler auf 5 und nicht, wie es richtig wäre, auf 6. Denken Sie daran, dass ein Multitasking-Betriebssystem Prozesse parallel ausführt. Wenn sich die Ergebnisse beeinflussen müssen, sind besondere Maßnahmen angebracht. Das Application-Objekt kennt deshalb zwei besondere Methoden, die dazu gedacht sind andere Prozesse vorübergehend zu stoppen – Lock und UnLock. Eine gute GLOBAL.ASA-Anwendung ist der im nächsten Listing vorgestellte, fehlerfrei arbeitende Hitcounter. Der FrontPage-Counter ZÄHLER arbeitet auch fehlerfrei, ist aber auf die FrontPage-Erweiterungen angewiesen.
Application .Lock Application. Unlock
Jede Session, die startet, ruft die Prozedur Session_OnStart auf. Als erstes wird die gesamte Applikation verriegelt (engl. Lock), sodass andere Prozesse nicht ausgelöst werden können. Dann wird der Wert der Variablen erhöht und die Applikation wieder freigegeben. Die in dieser Zeit aufgelaufenen Anfragen gehen nicht verloren oder werden mit Fehlermeldungen abgeschmettert. Die Prozesse warten einfach und werden dann nacheinander abgearbeitet. Wenn 50 Nutzer gleichzeitig zugreifen, wird sich der Hitzähler korrekt um 50 erhöhen. Die Zeit, die der letzte Nutzer warten muss, ist gering. Eine Addition benötigt nur wenige Millisekunden, 50 Additionen benötigen vielleicht eine halbe Sekunde. Wenn Sie auch in anderen Skripten intensiv mit Application.Lock arbeiten, sollten Sie bedenken, dass längere Blockierungen die Gesamtleistung des Webservers drastisch reduzieren können.
15.5 Datenbankzugriff Um in ASP eine leistungsstarke Datenbankumgebung zur Verfügung zu stellen, liefert Microsoft die ActiveX-Data-Objekte (ADO) mit aus. Diese ermöglichen den Zugriff auf ODBC-Datenbanken direkt aus VBScript und JScript heraus. Insgesamt gibt es sieben Objekte, welche die Datenbankanbindung leicht und einfach unterstützen. Außerdem können Sie SQL zur Abfrage der Daten verwenden.
15.5.1
Einführung in ADO
Übersicht ADO-Objekte Die folgenden Objekte gehören alle zur Klasse ActiveX-Data-Object Database (ADODB): 왘 CONNECTION
Stellt eine Verbindung mit einem SQL-Server her. 왘 RECORDSET
Stellt die Datenschnittstelle zu den Tabellen der Datenbank her. 왘 STREAM
Zugriff auf sequenzielle Daten und XML.
556
Datenbankzugriff 왘 RECORD
Lokale Speicherung eines einzelnen Datensatzes. 왘 FIELD
Erlaubt den Zugriff auf ein einzelnes Feld. 왘 COMMAND
Sendet einzelne Kommandos an einen SQL-Server oder startet gespeicherte Prozeduren. 왘 PARAMETER
Erlaubt den Zugriff auf die Rückgabewerte oder Parameter einer gespeicherten Prozedur. 왘 PROPERTY
Ermöglicht den Zugriff auf Eigenschaften der SQL-Datenbank. 왘 ERROR
Ein Objekt zur Behandlung von Fehlermeldungen. Das Objektmodell ADO basiert auf einem einfachen Objektmodell, in dem bestimmte Objekte in Abhängigkeit zu anderen Objekten stehen. Einige Objekte bilden Kollektionen, deren Elemente wiederum Objekte bilden. Abbildung 15.4 zeigt die Verknüpfungen der Objekte untereinander.
Die „Nordwind“Datenbank ist Bestandteil von Office 2002
Abbildung 15.4: Das ADO-Objektmodell in der Übersicht
557
15 Programmierung von Webseiten
Jedes Objekt kann verschiedene Eigenschaften enthalten, deren Abhängigkeiten die folgende Abbildung zeigt. Abbildung 15.5: Eigenschaften werden aus allen Objekten abgeleitet
Die folgenden Beispiele gehen davon aus, dass eine Datenbankdatei unter der ODBC-Steuerung von Windows unter dem Namen nordwind.dsn aktiviert ist. Erscheinen bei der Ausführung der Beispiele Fehler, liegt ein Problem mit der Konfiguration vor.
15.5.2
Einführung in SQL
Die folgende Einführung zeigt die Grundzüge der Abfragesprache SQL. Die konkrete Anwendung hängt von der vorhandenen Datenbank ab. SQL ist eine Datenbankabfragesprache. Der große Vorteil ist, dass Sie mit der Kenntnis dieser Sprache viele Datenbanken benutzen können, die mit SQL kompatibel sind. Dadurch werden Ihre Datenbankanwendungen unabhängig von einer bestimmten Datenbank eines einzelnen Herstellers. Im deutschen Sprachraum hat es sich übrigens eingebürgert, die drei Buchstaben auch deutsch und einzeln auszusprechen, wenn von SQL die Rede ist. Technisch sind SQL-Abfragen kleine Befehlszeilen oder Tags, die an den Server gesendet werden. Die Befehle sind in englischer Sprache gehalten und sollten den Sinn der Abfrage erkennen lassen. Sie können in SQL auch kleine Programme schreiben. Allerdings ist SQL ganz streng auf die Bedienung von Datenbanken ausgerichtet. SQL alleine bringt wenig. Sinnvoll ist die Integration in eine Programmier- oder Skriptsprache, eben VBScript. Welche Programme werden verwendet? Fast alle modernen Datenbank verstehen SQL
558
Das einfachste SQL-fähige Programm besitzen Sie vielleicht schon. In Office XP ist auch die Datenbank Access 2002 enthalten. Prinzipiell ist Access SQLfähig und könnte eingesetzt werden. Allerdings hat Access Probleme, meh-
Datenbankzugriff
rere Prozesse parallel zu bearbeiten. Sie sollten Access auf keinen Fall für einen Webserver einsetzen. Eine bessere – und teurere – Wahl ist der Microsoft SQL Server 2000. Unabhängig davon gibt es eine ganze Reihe guter SQL-Datenbanken wie Informix, Oracle oder Sybase. In diesem Buch wird im Wesentlichen der SQL Server 2000 und Access 2000 vorgestellt, sodass Sie sowohl ein Entwicklungssystem als auch einen Produktionsserver nutzen können. Was ist eine Datenbank? Wenn Sie noch keine klare Vorstellung davon haben, was eine Datenbank eigentlich ist, lesen Sie die folgende kurze Einführung. Ansonsten springen Sie zum nächsten Abschnitt ADO praktisch verwenden ADO praktisch verwenden.
Eine Datenbank fasst Daten zusammen
Datenbanken dienen der Speicherung von Daten. Das können Namen, Adressen, Zahlen, Zeichenketten usw. sein. Daten stehen auch untereinander in Beziehung. So sind die Teile einer Adresse eine zusammengehörende Einheit. Eine solche Einheit nennt man Datensatz (engl. record). Die Teile eines Datensatzes bilden die Felder (engl. fields). Jedes Feld hat zwei grundlegende Eigenschaften – einen Namen und einen Datentyp. Wenn Sie Adressen speichern, könnten die Felder und Datentypen so aussehen:
Felder und Datensätze
FIRMA, String(80) STRASSE, String(80) ORT, String(50) PLZ, Integer
Die Bedeutung dieser Ausgaben ist leicht zu verstehen. Das Feld FIRMA kann Zeichenketten mit bis zu 80 Zeichen aufnehmen, das Feld PLZ (Postleitzahl) kann ganzzahlige Werte aufnehmen usw. Um viele Daten übersichtlich anzeigen zu können, hat sich die Tabellenform als besonders praktisch erwiesen. Dabei bildet jede Spalte ein Feld ab, jede Zeile enthält einen Datensatz. Mehrere Tabellen bilden eine Datenbank. FIRMA
STRASSE
ORT
PLZ
Silicon Projects GmbH
Ostendstraße 1
Berlin
12459
Yoolia AG
Mariannenstraße 31-32
Berlin
10999
Tabelle 15.2: Die Darstellung in Tabellenform hat sich bewährt.
Die Spaltenbreite und andere „Anzeigewerte“ spielen innerhalb der Tabelle natürlich keine Rolle. Wie kann nun ein bestimmter Datensatz ermittelt werden? Intern läuft immer ein so genannter Index mit. Jeder Datensatz hat einen Indexwert – eine ID. Damit ist der Datensatz auch dann eindeutig und einmalig, wenn der gesamte Inhalt mit einem anderen Datensatz identisch ist.
559
15 Programmierung von Webseiten
Das alles ist für die Praxis nicht ausreichend. Die Firmen in unserem Beispiel haben mehrere Mitarbeiter, die als Ansprechpartner zu verwalten sind. Eine mögliche Feldstruktur wäre: NAME, String(60) EMAIL, String(60) TELEFON, String(60) GEBURTSTAG, Datum
Sie können dann die folgenden Mitarbeiter in der neuen Tabelle anordnen: Tabelle 15.3: Eine einfache Tabelle mit vier Spalten
Beziehungen zwischen Datenbanktabellen herstellen
Tabelle 15.4: Die Tabelle wird mit einem Schlüsselfeld ergänzt
NAME
EMAIL
TELEFON
GEBURTSTAG
Jörg Krause
[email protected]
030/ 56301030
26.05.1964
Andreas Hoffmann
[email protected]
030/ 61103211
23.09.1972
Arnd Schwierholz
[email protected]
030/ 61103212
10.02.1971
Das scheint recht einfach. Wie kann aber die Zuordnung der Mitarbeiter zu den Firmen aus der ersten Tabelle erfolgen? Sicher wäre eine Lösung, jedem Datensatz in der ersten Tabelle wieder eine Tabelle mit allen Ansprechpartner zuzuordnen. Aber bei 1.000 Firmen hätten wir dann 1.000 Tabellen mit Ansprechpartnern, in denen meist nur ein einziger Datensatz vorhanden ist. Für die Arbeit mit Datenbanken ist das sehr unpraktisch. Deshalb baut man eine Beziehung (engl. relationship) zwischen Tabellen auf. Datenbanksysteme, die so arbeiten, nennt man deshalb auch relationale Datenbanken. Dazu wird die erste Tabelle einfach mit einem so genannten Schlüssel (engl. key) ergänzt. Der Schlüssel wird auch in der zweiten Tabelle eingesetzt. Die Tabelle sieht dann folgendermaßen aus: F_KEY
FIRMA
STRASSE
ORT
PLZ
1
Silicon Projects GmbH
Ostendstraße 1
Berlin
12451
2
Yoolia AG
Mariannenstraße 31-32
Berlin
10999
Die zweite Tabelle wird jetzt mit der ersten verbunden. Dazu wird auch diese Tabelle mit den Schlüsseln aus der nächsten Tabelle ergänzt. Damit wir zu jedem Ansprechpartner weitere Informationen hinzufügen können, erhält auch diese Tabelle eigene Schlüsselwerte. Diese führenden Schlüssel bilden den Index der Tabelle. Indizes haben bei der Abfrage mit SQL noch eine besondere Bedeutung. Die zweite Tabelle, ergänzt um die Schlüssel, sehen Sie nachfolgend:
560
Datenbankzugriff
KEY
NAME
EMAIL
TELEFON
GEBURTSTAG
P_ KEY
1
Jörg Krause
[email protected]
030/ 56301030
26.05.1964
1
2
Andreas Hoffmann
[email protected]
030/ 61103211
23.09.1972
2
3
Arnd Schwierholz
[email protected]
030/ 61103212
10.02.1971
1
Tabelle 15.5: Verknüpfung zweier Tabellen durch Schlüsselfelder
Sie sehen anhand des Schlüssels der letzten Tabelle, welcher Ansprechpartner zu welcher Firma gehört. Die Nummer im Feld p_key ist mit der Nummer im Indexfeld f_key der vorhergehenden Tabelle verknüpft. Für die folgenden Beispiele wollen wir unseren beiden Tabellen noch einen netten Namen geben. Jede Abfrage kann sich dann auf den Namen beziehen. Die erste Tabelle soll firmen heißen, die zweite partner. Eine Datenbank entsteht, wenn Sie viele Tabellen mit oder ohne solche Verknüpfungen zusammenfassen und gemeinsam anordnen. Physisch werden aus diese Weise mehrere Tabellen in einer Datei gemeinsam untergebracht. Datenbankdateien können Sie nicht mit Texteditoren betrachten. Zum einen befinden sich in der Datenbank fast immer mehrere Tabellen, zum anderen komprimieren moderne Datenbanken die Daten. Wenn Sie für die Namen 80 Zeichen festlegen, werden Sie dies kaum bei allen Namen ausnutzen. Moderne SQL-Datenbanken speichern nicht die gesamte Länge, sondern nur den wirklich belegten Speicherplatz. Trotzdem haben SQL-Datenbanken eine bestimmte Basisgröße, auch ohne Daten. Alle Angaben über Tabellen- und Feldstrukturen werden immer mitgespeichert. Um SQL zu verstehen, müssen Sie eine grundsätzliche Eigenschaft kennen. SQL ist eine Abfragesprache, die davon ausgeht, dass Sie bestimmte Datensätze selektieren, auswählen oder filtern möchten. Davon geht jede Abfrage aus. Es gibt keinen Befehl der Art „TABELLE ANZEIGEN“. Es gibt Befehle der Art „ZEIGE email IN Tabelle 1 MIT name=krause“. Datensätze werden nach ihren Inhalten und Verknüpfungen behandelt. Normalerweise gehen Sie davon aus, dass die Datensätze durchnummeriert sind und Sie einfach Datensatz eins bis zehn anzeigen lassen. SQL kennt eine solche Zählung nicht. Es gibt keinen Datensatz eins oder zehn bzw. einen ersten oder letzten Datensatz. Wenn Sie Zahlen zur Verwaltung brauchen, dann fügen Sie ein Feld hinzu; nennen Sie es MEINENUMMER und nummerieren Sie jeden neuen Datensatz mit einer aufsteigenden Zahl. Dann können Sie nach MEINENUMMER=1 oder MEINENUMMER3) (stimmen bei DIFFERENCE>2)
Wie arbeitet SOUNDEX intern? Zuerst wird der erste Buchstabe beider Zeichenketten als Basis verwendet. Stimmt dieser überein, steht das erste Zeichen fest. Dann geht es mit den nächsten Konsonanten weiter. Vokale werden ignoriert (das Y zählt als Vokal!), es sei denn, der Vokal steht an erster Stelle (Yahoo). Performance-Tipp: Die Verwendung dieser Funktionen ist recht sinnvoll, wenngleich die meisten SQL-Datenbanken Probleme mit der Leistung haben. Eine hohe Belastung der Datenbank kann auch gute Server in die Knie zwingen. RTRIM LTRIM
Aus VBScript kennen Sie die Funktionen LTRIM und RTRIM zum Beseitigen überflüssiger Leerzeichen. SQL kennt diese Funktionen auch: SELECT RTRIM(name) FROM partner
572
Datenbankzugriff
SELECT LTRIM(name) FROM partner
Sie können diese Funktionen auch miteinander verschachteln, denn die dritte Funktion TRIM gibt es nicht: SELECT LTRIM(RTRIM(name)) FROM partner
Die Anwendung ist dann sinnvoll, wenn Sie statt VARCHAR mit CHAR als Datentyp arbeiten. SQL füllt Felder vom Typ CHAR mit Leerzeichen auf, bis die gewünschte Länge erreicht wird. Bei der Ausgabe kann das lästig sein. Die Trim-Funktionen bringen eine Zeichenkette wieder in die richtige Form. Daten und Zeiten Die einfachste Funktion ist das Äquivalent zum VBScript-Befehl DATE. In SQL fragen Sie das aktuelle Datum und die aktuelle Zeit mit GETDATE ab. Auch hier dient die Systemuhr des Servers als Basis. Sie können diese Funktion benutzen, um bei Datumsfeldern einen variablen Standardwert zu setzen:
GETDATA
CREATE TABLE logdata ( name VARCHAR(50), date DATETIME DEFAULT GETDATA() )
Sie können die Ausgabe des Datums vielfältig beeinflussen. Am einfachsten ist wieder die Funktion CONVERT, die als dritten Parameter einen Code enthalten kann, der die Formatierung des Datums und der Zeit bestimmt. Code
Standard
Ausgabeformat
0
Vorauswahl
mon dd yyyy hh:mi[AM|PM]
1
USA I
mm/dd/yy
2
ANSI
yy.mm.dd
3
England
dd/mm/yy
4
Deutschland
dd.mm.yy
5
Italien
dd-mm-yy
6 7
Tabelle 15.7: Stylecodes für die Funktion CONVERT
dd mm yy England, Brief
mon dd, yy
8
Zeit
hh:mi:ss
9
Millisekunde
mon dd yyyy hh:mi:ss:iii[AM|PM]
10
USA II
mm-dd-yy
11
Japan
yy/mm/dd
12
ISO
yymmdd
573
15 Programmierung von Webseiten
Code
Standard
Ausgabeformat
13
Europa mein
14
Zeit Europa
allge- dd mon yyyy hh:mi:ss:iii(24) hh:mi:ss:iii(24)
Anmerkungen: Die Codes 0, 9 und 13 geben das Jahr immer vierstellig zurück. Ansonsten können Sie zum Code 100 addieren, also statt 4 einfach 104 schreiben, um das Datum vierstellig zu machen. Nur die Codes 13 und 14 können die Uhr in unserem 24-Stunden-Format anzeigen. Die Zeichen bedeuten im Einzelnen: iii = Millisekunden, dreistellig, ss = Sekunden, mi = Minuten, hh = Stunden [AM|PM] = entweder AM (vormittag) oder PM (nachmittag), (24) = 24-Stunden-Format dd = Tag, mm = Monat in Ziffernform, mon = Monat als Abkürzung (Jan, Feb, Nov usw.) yy = Jahr in zweistelliger Form, yyyy = Jahr in vierstelliger Form DATEPART
Damit Sie gezielt Teile von Zeitangaben aus der Funktion DATETIME ziehen können, bietet SQL die Funktion DATEPART: SELECT name DATEPART(mm, login) FROM logdata
Statt „mm“ können Sie einen der Codes in der folgenden Tabelle verwenden: Tabelle 15.8: Die Abkürzungen für die Steuerung der Funktion
DATEPART
DATENAME
574
Code
Name
Beschreibung
Wertebereich
yy
Year
Jahr
1753-9999
qq
Quarter
Quartal
1-4
mm
Month
Monat
1-12
dy
Day of year
Tag im Jahr
1-366
dd
Day
Tag
1-31
wk
Week
Woche
1-53
dw
Weekday
Wochentag
1-7 (Sonntag =1 bis Samstag)
hh
Hour
Stunde
0-23
mi
Minute
Minute
0-59
ss
Second
Sekunde
0-59
ms
Millisecond
Millisekunde
0-999
Ergänzend sei noch die Funktion DATENAME erwähnt, die genauso wie die Funktion DATEPART eingesetzt wird. Allerdings werden Zeichenketten statt Zahlen zurückgegeben. Für die Codes „mm“ und „dw“ ergibt sich die Ausgabe des Monatsnamens (January, December) und des Wochentages (Monday, Friday). Die Sprache ist vom Produkt abhängig; In der Regel wird es Englisch sein.
Datenbankzugriff
Berechnungen mit Daten können recht aufwändig sein. Auch hier hilft SQL weiter und stellt zwei weitere Funktionen zur Verfügung: DATEDIFF und DATEADD. Ähnlich wie VBScript werden damit Differenzen berechnet bzw. ein Zieldatum ermittelt. Die Tabelle Registrierung soll Kunden speichern, die für vier Wochen ein Abonnement bezahlt haben. Sie können das Ablaufen des Abos einfach auf der Basis des Datumsfeldes abostart ermitteln:
DATEDIFF DATEADD
SELECT name DATEADD(mm,1,abostart) FROM registrierung
15.5.3
ADO praktisch verwenden
Datensätze lesen und schreiben Das folgende Beispiel zeigt den Zugriff auf die Beispieldatenbank nordwind, das Schreiben eines Datensatzes mit INSERT und das Lesen eines Datensatzes mit SELECT. Dann fügt dieses Skript einen Datensatz an und gibt den ersten (schon vorhandenen) aus.
ADO Beispiel
Die Methoden Open, Execute und Close werden benutzt. Die Methode Open eröffnet eine Verbindung zu einem SQL-Server via ODBC. Mit Execute werden SQL-Befehle direkt an den SQL-Server gesendet. Sie können hier alles verwenden, was unter SQL erlaubt ist. Mit Close wird die Verbindung wieder geschlossen. Verbindungen öffnen und schließen Mit diesem Objekt eröffnen Sie die Verbindung zu einer Datenbank und schließen sie wieder. Jede Kommunikation mit einer Datenbank kann nur stattfinden, wenn die Verbindung eröffnet wurde. So können Sie SQL-Befehle nur nutzen, wenn eine SQL-Datenbank auch von ASP aus erreicht werden kann.
575
15 Programmierung von Webseiten Connection .Open Connection .Close
Um die Verbindung zu eröffnen, wird eine Instanz des Objekts Connection erzeugt. Die Methode Open eröffnet die Verbindung:
Das ist recht umständlich, wenn Sie an 126 Stellen die Verbindung zur Datenbank herstellen. Da jeder Nutzer seine eigene Verbindung öffnet, bietet sich eine Sessionvariable für die Speicherung des Pfades zur Datenbank an. Öffnen Sie dazu die Datei GLOBAL.ASA, und definieren Sie eine Sessionvariable in der Prozedur Session_OnStart: Session("db_pfad") = "DSN=nordwind"
Der häufig benutzte Objektname RS steht für Recordset (dt. Datensatz). Sie benötigen das Datensatzobjekt, weil der SQL-Server seine Daten zunächst „irgendwohin“ produziert. Die Methode Execute hat zwei weitere Parameter, die folgende Bedeutung haben: 왘 RecordsAffected
Dieser Parameter steht als nächster nach dem SQL-Befehl und enthält nach der Ausführung des Kommandos die Anzahl der betroffenen Datensätze. 왘 Options
Für diesen Parameter darf eine von vier Konstanten eingesetzt sein. Die Übergabe erlaubt es ADO, effizienter zu arbeiten. Die Parameter sind aber optional und haben folgende Bedeutung: 왘 adCMDTable
Der Parameter ist der Name einer Tabelle. 왘 adCMDText
Kommando in Textform. Das ist die normale Form. 왘 adCMDStoredProc
Der erste Parameter ist der Name einer gespeicherten SQL-Prozedur. 왘 adCMDUnknown
Nicht bekannt; das ist der Wert, den ASP annimmt, wenn Sie gar nichts angeben.
576
Datenbankzugriff
Um die Konstanten auch nutzen zu können, müssen Sie eine spezielle Datei einschließen, welche die Definitionen enthält:
Der Unterschied zu dem vorangegangenen Beispiel liegt in der Methode Open und den damit verbundenen Parametern. Die ersten beiden sind relativ klar: In Form einer Zeichenkette wird der SQL-Befehl übergeben und dann die Datenverbindung, auf die sich das Kommando bezieht. Der letzte Parameter bezeichnet den Typ des Datensatzzeigers (engl. Cursor Type). Die angegebene Konstante ist in der Datei adovbc.inc definiert, die vorher mit einem INCLUDE-Kommando eingefügt werden muss.
Der Datensatzzeiger
Die folgenden Datensatzzeiger können Sie angeben: 왘 adOpenForwardOnly
Mit diesem Zeiger können Sie sich nur vorwärts durch das Datensatzobjekt bewegen. Dies ist der Standardzeiger, der benutzt wird, wenn Sie keinen speziellen Wert angeben. 왘 adOpenKeySet
Sie können sich in beide Richtungen im Datensatzobjekt bewegen. Durch eine Verbindung mit der Tabelle wird angezeigt, wenn Sie auf einen einzelnen Datensatz zeigen, der von einem anderen Nutzer gelöscht oder verändert wurde. Neu hinzugefügte Datensätze werden dagegen an dieser Stelle nicht angezeigt. 왘 adOpenDynamic
Sie können sich in beide Richtungen im Datensatzobjekt bewegen. Durch eine Verbindung mit der Tabelle wird angezeigt, wenn Sie auf einen einzelnen Datensatz zeigen, der von einem anderen Nutzer gelöscht oder verändert oder neu hinzugefügt wurde. 왘 adOpenStatic
Sie können sich in beide Richtungen im Datensatzobjekt bewegen. Änderungen, die in dieser Zeit erfolgen, werden nicht wiedergegeben. Neben der Auswahl des Datensatzzeigers kann auch das Verhalten der angesprochenen Tabelle gegenüber gleichzeitigen Änderungen durch andere Nutzer gesteuert werden. Es ist sehr wichtig darüber nachzudenken, welche Aktionen durch andere Nutzer in möglicherweise anderen Skripten in der Tabelle erfolgen können. Denken Sie daran, dass eine gut besuchte Seite gleichzeitig von mehreren Personen benutzt wird. Das folgende Beispiel zeigt, wo der zusätzliche Parameter eingesetzt wird:
Wie in den Beispielen zum Lesen der Datenbanktabelle angedeutet, besteht auch die Möglichkeit, Werte in die Tabelle zu schreiben. Unterstützt wird das durch mehrere Methoden, die einen komfortablen Umgang mit SQL erlauben. Hier eine Übersicht:
Erweiterte Methoden
왘 AddNew
Fügt dem Datensatzobjekt einen neuen Datensatz hinzu. 왘 CancelBatch
Wenn das Datensatzobjekt im Batch-Modus ist, wird der Stapellauf damit unterbrochen. 왘 CancelUpdate
Macht alle Änderungen rückgängig, die am Datensatzobjekt bis zur Ausführung der UPDATE-Methode vorgenommen wurden. 왘 Delete
Löscht einen Datensatz vom Datensatzobjekt. 왘 Update
Speichert alle Änderungen, die am Datensatzobjekt vorgenommen wurden. 왘 UpdateBatch
Speichert alle Änderungen, die an einem oder mehreren Datensätzen vorgenommen wurden, wenn mit Batchprogrammen gearbeitet wird. Beachten Sie, dass die ADO-Methoden etwas langsamer sind als die direkte Verwendung von SQL. Wenn Sie SQL beherrschen, nutzen Sie bevorzugt den direkten Weg! Ein einfaches Navigationsinstrument wurde bereits erläutert, die Methode MoveNext. Damit bewegen Sie den Datenbankzeiger einen Datensatz (Zeile) weiter. Nach dem Öffnen der Tabelle steht der Zeiger auf der ersten Position, und die Abarbeitung endet mit dem Erreichen des Dateiendes, EOF wird TRUE. Für eine komfortable und vor allem schnelle Abfrage reicht das aber nicht aus. Die wichtigsten einfachen Navigationsbefehle bewegen den Datensatzzeiger komfortabler:
Einfache Navigationsinstrumente
왘 Move anzahl
Bewegt den Datensatzzeiger um anzahl Positionen weiter Richtung Datenbank-Ende (positive Werte) oder Anfang (negative Werte).
581
15 Programmierung von Webseiten 왘 MoveFirst
Setzt den Datenbankzeiger wieder auf die erste Zeile. 왘 MoveNext
Bewegt den Datensatzzeiger eine Position weiter. 왘 MovePrevious
Bewegt den Datensatzzeiger eine Position zurück. 왘 MoveLast
Setzt den Datenbankzeiger wieder auf die letzte Zeile. Bedenken Sie, dass einige dieser Methoden einen ganz bestimmten Typ des Datensatzobjekts benötigen. So können Sie mit dem Parameter adOpenFor wardOnly kreierte Objekte nicht benutzen, um durch MovePrevious einen Datensatz zurück zu gelangen. Direkte Positionierung
Mit einigen Eigenschaften können Sie Ihre Navigationsskripte ebenfalls gut unterstützen: 왘 AbsolutePosition
Setzt den Datensatzzeiger auf eine bestimmte Position oder gibt die Position des Datensatzzeigers aus. 왘 BOF
Ist TRUE, wenn der Datensatzzeiger am Beginn des Datensatzobjekts steht, also in der ersten Zeile der Tabelle. 왘 EOF
Ist TRUE, wenn der Datensatzzeiger am Ende des Datensatzobjekts steht, also in der letzten Zeile der Tabelle. 왘 RecordCount
Gibt die Anzahl der Datensätze in der Tabelle zurück. Wenn gegenüber der Original-SQL-Tabelle im Datensatzobjekt nur eine Auswahl steht (beispielsweise durch die WHERE-Bedingung eingeschränkt), werden nur die wirklich im Datensatzobjekt befindlichen Datensätze gezählt. Das nächste Beispiel zeigt unter Verwendung verschiedener Navigationsmethoden, wie die Tabelle rückwärts ausgegeben werden kann:
Tabelle von hinten anzeigen
erzeugt. Syntax:
, [
]oder | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
TR Table Row. Bildet die Reihe einer Tabelle. Sie können beliebig oft | ||||||||||
oder als erstes Element hinter
|