vorheriges KapitelInhaltsverzeichnisStichwortverzeichnisFeedbacknächstes Kapitel


Tag 9

Einführung in die dynamischen Werkzeuge von UltraDev

Auch wenn Sie Dreamweaver-Profi sind oder Datenbankexperte und MS-Access- oder Filemaker-Anwendungen im Schlaf einrichten, müssen Sie eine gewisse Einarbeitungszeit einplanen, um sich mit den dynamischen Programmfunktionen von UltraDev vertraut zu machen. Mit UltraDev, das traditionelle Datenbankwerkzeuge und eine weborientierte Entwicklungsumgebung unter einer Oberfläche integriert, ist Macromedia ein großer Wurf gelungen. Die Themen des heutigen Tages im Überblick:

9.1 Herkömmliche Datenbanken und das Web

Herkömmliche Datenbanken unterscheiden sich etwas von Web-basierten Datenbanken. Im ersteren Fall haben Sie sofortigen Zugriff auf die Daten und volle Kontrolle über programminterne Abläufe. Wie wir bereits gelernt haben, haben wir es im Internet mit einem verbindungslosen Protokoll zu tun, d.h., es merkt sich Ihre Eingaben nicht. Um mit UltraDev effizient arbeiten zu können, müssen Sie wissen, was Sie mit diesen dynamischen Werkzeugen tun können und was nicht.

Ziel dieses Kapitels ist es, Sie mit diesen Möglichkeiten und Einschränkungen bekannt zu machen, wobei auch einige bereits bekannte Dinge wiederholt und vertieft werden. Ich denke, dass ein Überblick über die verschiedenen Programmfunktionen, die der Entwicklung dynamischer Sites dienen, ganz nützlich sein wird. Wenn Sie die gestrige Lektion durchgearbeitet haben, wissen Sie, wie man eine Datenbankverbindung einrichtet und können alles Weitere nachvollziehen. In Woche 1 haben Sie die Werkzeuge kennen gelernt, die der Erstellung statischer Sites dienen. Nun werden wir uns die Werkzeuge ansehen, die eine Website dynamisch machen.

Wenn Sie mit MS Access oder einem anderen Datenbankprogramm vertraut sind, wird Ihnen die Art und Weise, wie UltraDev Daten handhabt, bekannt vorkommen. Um Ihre Datenbank vom Desktop ins Web zu bekommen, gibt es drei wichtige Werkzeuge oder Grundfunktionalitäten: Datenbankverbindung, Serververhalten und Datenbindungen.

Datenbankverbindungen

Mit Datenbankverbindungen haben wir uns in Tag 8, »Mac und Windows-PC für die Datenbankanbindung fit machen«, beschäftigt. Datenbankverbindungen sind die Grundlage für die Kommunikation von UltraDev und dem gewählten Anwendungsserver mit dem Datenbankserver. Datenbankverbindungen gelten für die komplette Site und sind spezifisch für das jeweilige Projekt. Die Verbindungsdaten werden im Verzeichnis der Site in einem eigenen Ordner Connections gespeichert.

Da die Verbindungsdaten zusammen mit den übrigen Dokumenten der Site gespeichert werden, sind diese Daten auf jedem anderen Rechner verfügbar, auf dem die Site mit denselben Parametern definiert wurde.

Darüber hinaus wird eine Datei connections.xml, gespeichert im Ordner Connections, angelegt. Sie können diese Datei um Ihre eigenen Treiber-Konfigurationen ergänzen, womit sich die manuelle Eingabe der Verbindungsdaten erübrigt, wenn Sie eine weitere Datenbank anbinden. Gestern haben wir uns mit der Konfiguration von JDBC-Treibern beschäftigt. Sie werden sich wahrscheinlich noch daran erinnern, dass dieser Vorgang mit einem Haufen Schreibarbeit verbunden war, die Sie sich sparen können, wenn Sie besagte Datei um einen Eintrag driverinfo ergänzen, in dem die Defaulteinstellungen eines bestimmten Treibers gespeichert werden Im Falle eines JDBC-Treibers würde das so aussehen:

MySQL JDBC:
Driver Class Name-"org.gjt.mm.mysql.Driver"
Access URL-"jdbc:mysql://[hostname]:[port]/[database]"

Anhand dieser Daten können wir in der connections.xml folgendes driverinfo-Objekt erzeugen:

<driverinfo name="org.gjt.mm.mysql.Driver"
urltemplate="jdbc:mysql://[hostname]:[port]/[database]"/>

Damit Sie die mit den im Folgenden vorgestellten Werkzeugen arbeiten können, müssen Sie eine funktionierende Datenbankverbindung eingerichtet haben.

Serververhalten

Wenn Sie eine Datenbankverbindung eingerichtet haben, ist der nächste Schritt in der Entwicklung dynamischer Websites die Zuweisung von Serververhalten, die auf dieser Verbindung aufsetzen. Mithilfe der Serververhaltenpalette (siehe Abb. 9.1) können Sie Serververhalten zuweisen und bearbeiten.

Abbildung 9.1:  Serververhalten zuweisen und editieren mit de Serververhaltenpalette

Sie können Sie die Serververhaltenpalette als fortgeschrittene Variante der Standard- Verhaltenspalette vorstellen, die wir zur Erstellung konventioneller HTML-Dokumente verwendet haben. Der Unterschied liegt darin, dass der Programmcode eines Verhaltens in diesem Fall nicht clientseitig, sondern vom Server abgearbeitet wird. Das bedeutet, dass Sie nun nicht mehr den Unwägbarkeiten von JavaScript unterliegen, sondern sich beim Einsatz dynamischer Elemente ganz auf die Performance Ihres Servers verlassen können.

Neben diesen Vorteilen gibt es wie immer auch den einen oder anderen Nachteil. Das größte Plus ist sicher, dass egal welche Serververhalten Sie einsetzen, diese auf jeder Plattform funktionieren, unabhängig davon, ob JavaScript aktiviert ist oder nicht. Solange der Server selbst richtig konfiguriert ist, können Sie jede beliebige dynamische Anwendung entwickeln, ohne sich über die Anwenderplattform Gedanken machen zu müssen.

Serververhalten sind nicht in jedem Fall völlig unabhängig vom Client. Arbeitet ein Serververhalten mit Cookies, muss der Clientbrowser diese akzeptieren. Doch ist dieser Weg immer noch zuverlässiger als eine JavaScript-Lösung.

Serververhalten sind Codefragmente, aus denen UltraDev ein funktionierendes Programm zusammensetzt. Es handelt sich hierbei um vordefinierte ASP-, JSP- bzw. ColdFusion- Routinen, die in der Kombination lauffähigen Code ergeben, der in das HTML- Dokument eingebettet wird.

Wenn Sie sich näher für die Bausteine dieses Puzzles interessieren, empfehle ich Ihnen, im Programmordner von UltraDev einen Blick in den Unterordner Configuration/ ServerBehaviors zu werfen. Sie werden dort eine lange Liste von Serververhalten finden. Diese Serververhalten sind allesamt in JavaScript programmiert und steuern alle dynamischen Funktionen von UltraDev. Als Beispiel ein Code-Schnipsel aus der Datei Recordset.js:

//Copyright 2000 Macromedia,Inc.All rights reserved.
//***************GLOBALS VARS *****************
var helpDoc =MM.HELP_ssAdvancedRecordset
var SP_Mode =false;//Since we have different formatting behavior based
//on whether the object is a stored proc or not,
//we use this as a switch to keep track of what's
//the current selection.
//The following constants and vars are used to build up the SQL statement.
var CONST_SELECT="SELECT";
var CONST_FROM="FROM";
var CONST_WHERE="WHERE";
var CONST_EQUALS="=";
var CONST_ORDERBY="ORDER BY";
var var_select="*";
var var_from="";
var var_where="";
var var_orderby=";
var gSimpleParamName="MMColParam"
var ERROR_MESSAGE="";

Wie Sie sehen, enthalten diese Programmdateien die Funktionen, mit denen das Serververhalten den erforderlichen SQL-Code erzeugt. Sie können diese Dateien Ihren Erfordernissen entsprechend umschreiben und die Variablen durch die Standardwerte ersetzen, die Sie in Ihrer Entwicklungsumgebung verwenden, doch möchte ich Ihnen von zu massiven Eingriffen abraten.

In diesem Codefragment könnten Sie z.B. die Defaultwerte ändern, die an den Datenbankserver übermittelt werden. Wenn Sie diese Programmdateien ausgiebiger unter die Lupe nehmen, werden Sie auch an die Codeteile stoßen, die dann tatsächlich ins HTML-Dokument eingesetzt werden. Wenn Sie jedoch an diesen Dateien Änderungen vornehmen, müssen Sie sich der Tatsache bewusst sein, dass Ihre fertige Anwendung nicht mehr mit dem originalen Macromedia-Code arbeitet, der sozusagen unter härtesten Praxisbedingungen seine Tauglichkeit bewiesen hat. Einem ausgemachten Programmierer wird das freilich vielleicht bloß ein müdes Schulterzucken entlocken.

Als Neuling in diesen Dingen muss Ihnen aber klar sein, dass Sie durch Veränderungen am Originalcode Ihren Garantieanspruch verwirken. Und es dürfte mehr als unwahrscheinlich sein, dass Sie irgendwo einen UltraDev-User finden, der Ihnen dann noch weiterhelfen kann.

Also, was sind nun diese famosen Serververhalten und was können sie für uns tun? Lassen Sie uns zu diesem Zweck die wichtigsten Serververhalten und ihre Arbeitsweise unter die Lupe nehmen.

Standard-Serververhalten

Auf einer grundlegenden Ebene ist die dynamische Datenbankanbindung von UltraDev eine einfache Sache - Sie zeigen damit Informationen aus einer Datenbank an und verändern sie gegebenenfalls. Es gibt fünf Hauptfunktionen und ein paar weitere einfache Verhaltensweisen, die nachfolgend beschrieben werden.

Datensatzgruppe

Unter einer Datensatzgruppe versteht man die Gesamtheit aller Datensätze, die auf eine Datenbankabfrage hin zurückgegeben werden. In UltraDev werden Datensatzgruppen dadurch erzeugt, dass man der Anwendung die SQL-Anweisungen übergibt, die sie ausführen soll, sich entspannt zurücklehnt und das Programm arbeiten lässt. Eine Datensatzgruppe kann aus mehreren Datensätzen bestehen, doch ist jeweils nur der erste Datensatz zugänglich, nachdem die Datensatzgruppe erzeugt wurde. Um auf die weiteren Datensätze zugreifen zu können, müssen Sie weitere Serververhalten hinzufügen, die die erstellte Datensatzgruppe handeln können.

Sie haben zwei Möglichkeiten, Datensatzgruppen zu erzeugen - die erste ist die einfache Abfrage (siehe Abb. 9.2).

Abbildung 9.2:  Für einfach aufgebaute Datensatzgruppen genügt die einfache Abfrage.

Mit einfachen Abfragen lassen sich Gruppen von Datensätzen aus einer Datenbanktabelle ohne großen Aufwand selektieren. Wenn Sie z.B. Datensätze anhand von im URL-Feld übergebenen Parametern auswählen wollen und das endgültige Abfrageergebnis dann ausgehend vom Inhalt einer bestimmten Spalte sortieren lassen wollen, wählen Sie für die Erstellung einer Datensatzgruppe die einfache Variante. Hierbei sind Sie an automatisch erzeugte SQL-Anweisungen gebunden. In manchen Fällen genügen aber diese Standard- Routinen nicht.

Klicken Sie auf die Schaltfläche Erweitert. Es öffnet sich die in Abb. 9.3 gezeigte Eingabemaske, die eine weit flexiblere Erzeugung von Datensatzgruppen erlaubt.

Abbildung 9.3:  Erweiterte Abfragen ermöglichen eine bessere Kontrolle über die Anwendung.

Im Modus Erweitert können Sie selbst geschriebene SQL-Abfragen an den Datenbankserver schicken und seine Leistungsfähigkeit ausreizen. Von hier aus haben Sie direkten Zugriff auf Tabellen, Ansichten und gespeicherte Prozeduren. Ferner weisen Sie hier den Abfragevariablen, die UltraDev verwendet, einen Wert zu.

Mit Abfragevariablen können Sie vom Client übermittelte Daten wie Request-Werte, Cookies und Sitzungsvariable einer lokalen Variablen in UltraDev zuweisen und für Abfragen verwenden. Diese Einbindung von Clientdaten in eine SQL-Abfrage ist im einfachen Abfragemodus nicht möglich.

Definiert werden diese internen Abfragevariablen durch Klick auf das Plussymbol (+) und Vergabe eines Variablennamen sowie durch Setzen des Standardwerts und des Laufzeitwerts.

Seien Sie vorsichtig beim Setzen von Standardwerten. Sie sind zwar sehr nützlich, wenn man sich in der Live-Data-Ansicht Ergebnisse von Abfragen anzeigen lassen will, ohne Anwendereingaben simulieren zu müssen. Nur passiert es leider allzu oft, dass man Standardwerte setzt und nicht mehr daran denkt, sie wieder zu löschen.

Nehmen wir zum Beispiel an, dass Sie eine Anmeldeseite erzeugen, die Benutzernamen und Kennwort abfragt und auf ihre Richtigkeit überprüft. Wenn Sie Standardwerte für Benutzernamen und Kennwort gesetzt haben, könnte ein Anwender ein leeres Formular abschicken und sich trotzdem einloggen. Da bei der Überprüfung keine Daten gefunden wurden, werden die leeren Eingabefelder mit den Standardwerten ausgefüllt.

Falls Sie mit UltraDev kompliziertere Features wie das Durchsuchen von Datenbeständen oder benutzerdefinierte Abfragen in Ihre Anwendungen implementieren wollen, brauchen Sie diese Suchvariablen.

Sobald die Datensatzgruppe definiert ist, können Sie durch Klicken auf die Schaltfläche Testen Ihre Abfrage in Echtzeit testen.

Datensatz einfügen

Mit dem Serververhalten Datensatz einfügen können Sie einen neuen Datensatz in eine Datenbank schreiben. Dieser Datensatz wird aus einem Formular gelesen und über die definierte Datenbankverbindung zu einer bestimmten Tabelle übertragen. Dieses Verhalten funktioniert nur in Verbindung mit einem HTML-Formular. Doch mit etwas Erfindungsgabe und etwas Programmierung können Sie mit diesem Verhalten bestimmte Informationen vom Anwender abfragen. In einer späteren Lektion werden wir dieses Verhalten dazu benützen, Artikel in einem Warenkorb abzulegen.

Bevor Sie Datensätze in eine Tabelle schreiben bzw. diese aktualisieren oder löschen können, müssen Sie in einem HTML-Dokument ein Formular definieren. Jedes dieser Verhalten wird in Abhängigkeit von einer bestimmten Formulareingabe ausgelöst. Abb. 9.4 zeigt das Dialogfenster, in dem Sie das Verhalten Datensatz einfügen konfigurieren.

Abbildung 9.4:  Daten aus einem Formular in einer Datenbanktabelle ablegen mit Datensatz einfügen

Da wir jetzt noch keine Webanwendungen entwickeln, möchte ich Ihnen empfehlen, in ein leeres HTML-Dokument ein Formular einzufügen. So können Sie die Dialogfenster zu den einzelnen Serververhalten öffnen und den Ausführungen besser folgen.

Das Serververhalten Datensatz einfügen ist insofern ähnlich strukturiert wie die übrigen Serververhalten, als es eine Datenbankverbindung voraussetzt sowie Tabellen, in die es diese Datensätze schreiben kann. Es folgt eine Erklärung der verschiedenen Einstellungsmöglichkeiten:

Sie werden feststellen, dass die anderen datenbankspezifischen Verhaltensweisen dem Serververhalten Datensatz einfügen verblüffend ähnlich sind.

Datensatz aktualisieren

Obwohl es vielleicht zunächst so scheint, dass das Serververhalten Datensatz einfügen identisch ist mit dem Serververhalten Datensatz aktualisieren, handelt es sich doch um zwei ganz unterschiedliche Dinge. Um einen Datensatz in einer Datenbank zu aktualisieren, wählen Sie das Serververhalten Datensatz aktualisieren. Das Dialogfenster zur Konfigurierung dieses Verhaltens sehen Sie in Abb. 9.5.

Die Ähnlichkeit zwischen den beiden Fenstern ist offensichtlich, tatsächlich sind sie mehr oder weniger identisch. Gegenüber dem Serververhalten Datensatz aktualisieren müssen Sie jedoch zwei weitere Angaben machen:

Fortgeschrittene Datenmanipulation: replace into

Manche Datenbankserver verwenden anstelle der Anweisung insert into, die standardmäßig vom Serververhalten Datensatz einfügen verwendet wird, die Anweisung replace into. Die Anweisung replace into leistet im Prinzip dasselbe wie insert into, der Unterschied besteht darin, dass ein alter Eintrag zuerst aus der Tabelle gelöscht wird, wenn der neue Eintrag unter diesem Schlüssel denselben Wert hat.

Wenn Sie replace into an Stelle von insert into verwenden, können Sie Daten in eine Datenbank neu einfügen, ohne sich mit dem Serververhalten Datensatz aktualisieren beschäftigen zu müssen. Später in den Beispielen verwende ich dieses Kommando nicht (da es nicht in allen Datenbanken zur Verfügung steht), aber vielleicht möchten Sie einmal austesten, ob Ihr Datenbankserver dieses Feature unterstützt. Haben Sie sich für den MySQL-Server als Produktionsplattform entschieden, wird es Sie interessieren, dass Sie hier diese Funktion zur Verfügung haben.

Um das Serververhalten Datensatz einfügen gegen ein replace into auszutauschen, müssen Sie die Datei InsertRecord.js im Ordner Configuration/ServerBehaviors modifizieren. Diese Datei ist in vier Abschnitte gegliedert: ASP (JavaScript), ASP (VBScript), JSP und CFML. Öffnen Sie die Datei und suchen Sie den entsprechenden Abschnitt. Der Code für ASP/JavaScript beispielsweise liest sich folgendermaßen:

//***********ASP ***************
var WGHT_AspEditMain =20;
//***ASP/JavaScript ***
var PREP_AspJsEditMain ="MM_insert";
var PATT_AspJsEditMain ='Request\\([\'"]MM_insert';
var MASK_AspJsEditMain =""+

In diesem Abschnitt des Programmcodes steht eine einzelne Zeile, die die SQL-Anweisung erzeugt:

" var MM__insertStr = ' insert into ' +MM_tableName + ' 
=>;(' +MM_tableValues + ')values...

Damit UltraDev das neue Kommando verwendet, müssen Sie lediglich die insert into- Anweisung durch replace into ersetzen:

" var MM__insertStr = ' replace into ' + MM_tableName + ' 
=>;(' +MM_tableValues + ')values...

Das modifizierte Serververhalten steht danach unmittelbar zur Verfügung. In der praktischen Arbeit werden Sie keinen Unterschied feststellen, nur verwendet das Datensatz Einfügen-Verhalten statt des von UltraDev eingestellten Codes nun den neuen Code.

Falls Sie ein Serververhalten modifizieren, dürfen Sie nicht davon ausgehen, dass die modifizierte Verhaltensweise automatisch auf allen Seiten aktualisiert wird. Die Serververhalten werden zusammen mit jedem Dokument der Website gespeichert. Um den Code im Dokument zu aktualisieren, müssen Sie ihn entweder von Hand aktualisieren oder das Serververhalten löschen und wieder zuweisen.

Datensatz löschen

Vierter im Bunde ist das Serververhalten Datensatz löschen. Denn wenn man Datensätze in einer Datenbank ablegen kann, dann sollte man sie auch wieder löschen können. Von diesem Serververhalten gibt es weiter nichts zu berichten als das es genau tut, was sein Name sagt. Abb. 9.6 zeigt das Konfigurationsmenü des Serververhaltens Datensatz löschen.

Abbildung 9.6:  Datensätze per  Formular löschen: das Serververhalten Datensatz löschen

Die Einstellungen in diesem Dialogfenster lassen sich aus den vorher beschriebenen Menüs ableiten. Sie sollten damit keine Probleme haben.

Befehl

Das Allzweck-Serververhalten ist das Verhalten Befehl, zu sehen in Abb. 9.7. Über dieses Verhalten können Sie gespeicherte Prozeduren oder blanken HTML-Code ausführen und gegebenenfalls eine Datensatzgruppe ausgeben lassen. Im Unterschied zu anderen Serververhalten können Sie aber mit dem Verhalten Befehl programminterne Variablen mit Serververhalten verbinden, die so mit anderen Verhaltensweisen nicht möglich sind.

Abbildung 9.7:  Mit dem Serververhalten Befehl  können Sie gespeicherte Prozeduren und andere SQL-Abfragen ausführen lassen.

Wenn Sie einen Befehl definieren, werden Sie feststellen, dass dieses Verhalten große Ähnlichkeit mit dem Verhalten Datensatz einfügen und Datensatzgruppe hat. Wenn Sie für den Befehl einen Namen vergeben haben, müssen Sie den Typ wählen: entweder eine Standard-SQL-Anweisung (Einfügen, Aktualisieren usw.) oder eine gespeicherte Prozedur. Soll nach Ausführung des Befehls ein Datensatz zurückgegeben werden, müssen Sie noch das Kontrollfeld Folgenden Datensatz zurückgeben namens: aktivieren und einen Namen für die neue Abfrage vergeben.

Was dieses Werkzeug noch flexibler macht, ist die Tatsache, dass Sie programminterne Variablen von UltraDev wie eine normale Datensatzgruppe verwenden können. Das heißt, Sie können auf Sitzungsvariablen, Cookies usw. für die Definition des Befehls zurückgreifen. Im Gegensatz zum normalen Einfüge-Verhaltens Befehl einfügen kann das Verhalten Befehl URL-Parameter und andere Daten in einer insert-Anweisung verarbeiten. Wenn Sie sich für die fortgeschritteneren Entwicklungsmöglichkeiten mit UltraDev interessieren, dann sind Sie hier richtig. Wenn Sie den Stoff von Tag 12, »Komplexe Datenbankabfragen«, durchgearbeitet haben, können Sie mit diesem Verhalten direkt auf Datenbanken und deren Befehlssatz zugreifen.

Der Unterschied online - offline

Wenn Sie schon Datenbankerfahrung haben, werden Sie sich vielleicht fragen: »Das ist doch alles wie bei anderen Datenbanken auch, wo liegt also das Problem?«

Der Unterschied zwischen einer gewöhnlichen Datenbank und den Serververhalten ist der, dass eine Aktion nicht unmittelbar ausgeführt wird. Serververhalten benötigen Informationen von einer Webseite, und diese Webseite verwendet die Informationen zur Ausführung des Serverhaltens. Was die Sache vielleicht etwas verwirrend macht, ist, dass der Code für ein Serververhalten in der Seite gespeichert wird, die die Daten überträgt, obwohl die übertragende Seite aller Wahrscheinlichkeit nach nicht die Seite ist, die nach Ausführung des Serververhaltens angezeigt wird.

Nachfolgend der genaue Ablauf:

  1. Es wird ein HTML-Dokument erstellt, das mithilfe eines Formulars Daten an eine Datenbank überträgt. Bei den zu übertragenden Daten kann es sich um Datensätze handeln, die beispielsweise eingefügt oder gelöscht werden müssen.
  2. Dem HTML-Dokument wird ein Serververhalten zugewiesen, das die Daten verarbeiten soll, die in dieses Dokument eingefügt werden. Bei diesen Serververhalten handelt es sich typischerweise um die Befehle Datensatz einfügen, aktualisieren oder löschen.
  3. Das Verhalten wird so konfiguriert, dass der Anwender nach Ausführung des Serververhaltens auf eine neue Seite geleitet wird.
  4. Die Webseite steht online.
  5. Ein Anwender kommt auf die Seite, füllt das Formular aus und schickt es ab.
  6. Das Formular schickt die Daten an dieselbe Seite zurück, in der das Serververhalten gespeichert ist, woraufhin das Serververhalten ausgeführt wird.
  7. Nachdem das Serververhalten ausgeführt wurde, schickt das Serververhalten den Browser zu einem anderen Dokument oder einer anderen Website.

Ich hoffe, das macht die Geschichte etwas transparenter. Der Ablauf, der sich hinter diesen Serververhalten verbirgt, mag etwas bizarr erscheinen, doch um effektive dynamische Sites zu entwickeln, müssen Sie mit diesen Hintergründen vertraut werden.

Nicht alle Serververhalten dienen jedoch dem Zweck, Daten in einer Datenbank abzulegen oder den Anwender auf eine neue Seite zu leiten. Lassen Sie uns einen Blick auf die restlichen Serververhalten werfen, die Sie zum Entwickeln von Webapplikationen brauchen.

Weitere Serververhalten

Daten in einer Datenbank anzuzeigen bzw. zu manipulieren ist das Haupteinsatzgebiet von UltraDev. Die zuvor besprochenen Serververhalten sind ein guter Einstieg in die Materie, doch reichen sie allein noch nicht aus, um eine brauchbare Webanwendung zu realisieren. Nehmen wir an, wir haben eine Datensatzgruppe mit 20 Einträgen erzeugt - wie bringen wir sie alle auf den Schirm?

Und nehmen wir weiter an, es handelt sich um 2000 Datensätze. Wie können wir dem Anwender diese 2000 Datensätze zugänglich machen, ohne sie alle in ein einziges HTML- Dokument zu packen?

Die Lösung für dieses Problem (und einige andere) bieten verschiedene zusätzliche Serververhalten, mit denen es möglich ist, die Anzeige einer Datensatzgruppe zu steuern.

Bereich wiederholen

Das Verhalten Bereich wiederholen arbeitet in einer Datensatzgruppe wie eine Schleife. Sie können sich damit mehrere Datensätze einer Gruppe auf einmal anzeigen lassen - entweder alle oder eine bestimmte Anzahl. Dieses Verhalten wiederholt nicht nur einzelne Feldwerte, sondern alles, was in einem bestimmten Bereich steht.

Die einzelnen Felder oder Spalten einer Datenbank werden in HTML-Dokumenten gewöhnlich in Tabellenform dargestellt, damit die Daten zusammengehalten werden. Wenn Sie das Verhalten Bereich wiederholen verwenden, würden Sie in diesem Fall alle Felder, die Sie wiederholen möchten, in eine einzige Tabellenzeile schreiben und auf diese Zeile das Verhalten anwenden. Von diesen Datensätzen werden dann jeweils so viele angezeigt, wie Sie im Konfigurationsdialog eingestellt haben. Abb. 9.8 zeigt das Dialogfenster Bereich wiederholen.

Abbildung 9.8:  Mehrere Datensätze auf einmal anzeigen lassen mit dem Verhalten Bereich wiederholen

Haben Sie einen bestimmten Bereich ausgewählt, der wiederholt angezeigt werden soll, fordert das Dialogfenster Sie auf, die Datensatzgruppe und die Anzahl der anzuzeigenden Datensätze einzugeben.

Zu Datensatz verschieben

Die wenigsten Anwender wollen sich durch 5.000 Datensätze auf ihrem Monitor scrollen. Tatsächlich sind den meisten schon zehn Datensätze zu viel. Wenn Sie die Anzahl der angezeigten Datensätze mit dem Verhalten Bereich wiederholen einschränken, müssen Sie auch Navigationsmöglichkeiten anbieten, um zu den vorherigen oder nachfolgenden Datensätzen in der Datenbank springen zu können.

Die Befehlsgruppe Zu Datensatz verschieben stellt alle erforderlichen Verhaltensweisen zur Verfügung, um durch eine Datensatzgruppe navigieren zu können. Sie finden diese Verhaltensweisen in der Palette Serververhalten unter dem Menüpunkt Zu Datensatz verschieben:

Man muss sich klar machen, dass diese Serververhalten jeweils nur in Verbindung mit bestimmten Datensatzgruppen funktionieren, nicht etwa mit einer kompletten Tabelle in der Datenbank. Wenn Sie also z.B. den Befehl Zum nächsten Datensatz verschieben verwenden, muss das nicht der nachfolgende Datensatz in der Tabelle sein, sondern der nächste Eintrag in der Datensatzgruppe.

Die ganze Befehlsgruppe Zu Datensatz verschieben funktioniert nach demselben Prinzip: Datensatzgruppe auswählen, Link definieren, der das Serververhalten auslöst, und fertig. Abb. 9.9 zeigt ein vorschriftsmäßig konfiguriertes Serververhalten.

Abbildung 9.9:  Die Befehlsgruppe Zu Datensatz verschieben ermöglicht die Navigation in Datensatzgruppen.

Bereich anzeigen

Der Befehl Bereich anzeigen ist mein absolutes Lieblingsserververhalten, obwohl man es eigentlich nicht braucht, um Datensätze einer Datenbank anzuzeigen. Dieses Verhalten macht genau, was sein Name vermuten lässt: Es verbirgt bzw. zeigt bestimmte Bereiche innerhalb eines Dokuments. Sie wollen wissen, wozu das gut ist?

Ein eindeutiger Anwendungsfall z.B. wäre (übrigens der einzige, den Macromedia in den Programmunterlagen dokumentiert), einen bestimmten Bereich einer Seite in Abhängigkeit von bestimmten Daten der Datensatzgruppe anzuzeigen oder auszublenden. Dieses Verhalten wird also gesteuert vom Vorhandensein (bzw. Nicht-Vorhandensein) bestimmter Einträge in der Datensatzgruppe.

Ein Beispiel: Auf der Dokumentseite gibt es eine Schaltfläche oder einen Link Nächster Datensatz, gesteuert vom Serververhalten Zum nächsten Datensatz verschieben. Wenn Sie beim letzten Datensatz einer Gruppe angelangt sind, ist dieser Link natürlich überflüssig. Also weisen Sie diesem Link das Verhalten Bereich zeigen, wenn nicht letzter Datensatz zu.

Die Konfiguration des Verhaltens Bereich anzeigen bereitet keine Probleme (siehe Abb. 9.10).

Abbildung 9.10:  Wählen Sie zum Testen des Verhaltens die richtige Bedingung und die richtige Datensatzgruppe aus.

Zum Ein- bzw. Ausblenden von Vor/Zurück-Buttons ist das Verhalten Bereich anzeigen offensichtlich von großem Nutzen, aber es gibt noch ein paar andere, viel effektivere Einsatzmöglichkeiten.

Mit diesem Verhalten lässt sich jede Art von Information anzeigen bzw. verbergen. Damit lassen sich Webseiten erstellen, deren Inhalte in Abhängigkeit von Abfrageergebnissen komplett ausgetauscht werden. Sollen Inhalte in Abhängigkeit von bestimmten Bedingungen verborgen werden, kann das gewünschte Verhalten auch erreicht werden, indem die Inhalte angezeigt werden, wenn die Umkehrung der Bedingung zutrifft.

In einer der späteren Lektionen werden Sie lernen, wie Sie mit diesem Verhalten Login-Informationen überprüfen können und noch ein paar interessante Dinge mehr.

Dynamische Elemente

Die in der Gruppe Dynamische Elemente zusammengefassten Serververhalten gehören zu den Elementen, die Sie wahrscheinlich am häufigsten benutzen werden, auch wenn das momentan noch nicht so offensichtlich sein mag.

Wenn Sie eine Datensatzgruppe angelegt haben, wird diese Datengruppe in der Palette Datenbindungen zusammen mit einem kleinen Icon angezeigt. Klicken Sie auf das Plussymbol (+), wird der ganze Ast ausgeklappt und alle verfügbaren Datenfeldnamen angezeigt (siehe Abb. 9.11).

Abbildung 9.11:  Die Palette Datenbindungen zeigt alle verfügbaren Felder einer Datensatzgruppe an.

Um diese Datenfelder im HTML-Dokument zu platzieren, müssen Sie in der Dokumentansicht lediglich das entsprechende Feld in den Datenbindungen anklicken und mit gedrückter Maustaste an die gewünschte Stelle im Dokument ziehen.

Folgende dynamischen Elemente stehen zur Auswahl:

In den meisten Fällen reichen die Verhalten Bereich wiederholen und Dynamischer Text völlig aus, um Datenbankinhalte online auf den Monitor des Anwenders zu bringen.

9.2 Datenbindungen

Jedes Mal, wenn Sie ein Serververhalten Dynamische Elemente einer Seite zuweisen, erstellen Sie in Wirklichkeit eine Datenbindung. Die Palette Datenbindungen ist das zentrale Instrument, das Ihnen einen Überblick darüber gibt, auf welche Daten Sie Zugriff haben, mit welchem HTML-Objekt sie verknüpft sind und wie Sie sie formatieren können.

Lassen Sie uns die verschiedenen Funktionen dieser Palette nun der Reihe nach durchgehen.

Dynamische Daten

Zuallererst zeigt die Palette Datenbindungen alle Daten an, die innerhalb der definierten Datensatzgruppe verfügbar sind. In Datensatzgruppen stehen die dynamischen Daten, die Sie an Ihre Website anbinden können. Ist eine Datensatzgruppe definiert, wird sie sowohl in der Palette Serververhalten wie in der Palette Datenbindungen angezeigt.

Im Gegensatz zu anderen Serververhalten können Sie eine Datensatzgruppe (Abfrage) direkt in der Palette Datenbindungen definieren, indem Sie auf das Plussymbol (+) klicken und Datensatzgruppe (Abfrage) wählen. Diesen Datentyp werden Sie bei der Arbeit mit UltraDev sicher am häufigsten verwenden, doch stehen in dieser Ansicht auch noch weitere Daten zur Verfügung.

So können Sie auch Anforderungsvariablen und Sitzungsvariablen definieren, zwei ebenfalls sehr nützliche Datenbindungstypen. Über diese beiden Verhalten haben Sie Zugriff auf serverseitig generierte Sitzungsvariablen, URL-Parameter, Cookies, Formulardaten usw.

Im Gegensatz zu Datensatzgruppen oder Datenbindungen, die eine Datenbankverbindung voraussetzen, sind Sitzungsvariablen und auf Cookies basierende Anforderungsvariablen Site-weit zugänglich. Die meisten Bindungstypen sind seitenspezifisch und gelten nur für die Seite, für die sie definiert wurden.

Genau wie Datensatzgruppen werden diese zusätzlichen Daten in der Palette Datenbindungen angezeigt und können mit der Maus direkt ins Dokument gezogen werden.

Die Datenbindungen (Sitzungsvariable, Cookies) bringen ein gravierendes Manko der UltraDev-Entwicklungsumgebung ans Licht.

Sie können zwar zu bereits definierten Sitzungsvariablen usw. eine Datenbindung herstellen, jedoch ist es nicht möglich, Cookies oder Sessions neu zu erzeugen. Um diese Webtechniken einsetzen zu können, müssen Sie selbst Hand an den Code legen und ein neues Serververhalten schreiben. Dies wird unser letzter Tagespunkt sein.

Datenbindungen in der Dokumentansicht

Die Palette Datenbindungen hat sozusagen einen Doppelnutzen. Einerseits zeigt sie, wie wir mittlerweile wissen, alle dynamischen Daten an, die mit einem Dokument verbunden sind. Das ist die erste Information, die wir über diese Palette bekommen. Zusätzlich zeigt sie uns Informationen darüber an, wie die einzelnen Daten mit den Objekten in der Dokumentansicht verbunden sind.

Die einfachste Bindung ist z.B. die zwischen dynamischem Text in der Dokumentansicht und einem x-beliebigen Datensatz in der Palette Datenbindungen. Ziehen Sie probehalber einen Datensatz aus der Palette in die Dokumentansicht und sehen Sie sich dann die Palette noch einmal an (siehe Beispiel in Abb. 9.12). In der Spalte Binden wird angezeigt, dass das ausgewählte Feld mit »Ausgewählter Text« verbunden ist. Jede Beziehung von einem Objekt im Dokument mit einem dynamischen Datensatz wird in dieser Palette angezeigt.

Abbildung 9.12:  Die Palette Datenbindungen macht deutlich, wie Elemente in der Dokumentansicht mit Design-Zeit-Elementen verknüpft sind.

Bindungen in der Dokumentansicht beschränken sich nicht bloß auf dynamischen Text. So könnten Sie z.B. ein bereits erstelltes Popup-Menü mit einem Datensatz verknüpfen, statt per Serververhalten ein Popup-Menü oder eine Auswahlliste zu erzeugen.

Wenn Sie ein Objekt in der Dokumentansicht auswählen und den entsprechenden Datensatz in der Palette markieren, können Sie jedes der für dieses Objekt verfügbaren Attribute damit verbinden, wenn Sie auf den Button Einfügen klicken. (Die verfügbaren Attribute werden im Popup-Menü unten in der Palette angezeigt.)

Sie können Dutzende von Attributen - Name, Farbe, ausgewähltes Objekt - binden. Alles, was UltraDev als Attribut eines Objektes erkennt, kann mit dynamischen Daten verbunden werden.

Um eine Bindung zu ändern, markieren Sie die Bindung, klicken auf den Pfeil, der neben der Bindung angezeigt wird, und wählen ein neues Attribut aus.

Sie können Daten einer Datenbank auf zwei Arten dynamisch mit HTML-Objekten verknüpfen. Entweder direkt über ein Serververhalten oder indirekt über Datenbindungen. Beide Techniken werden in den nächsten Lektionen ausführlich besprochen.

Datenformate

Für jeden verbundenen Datensatz können Sie eine Formatierung wählen, mit der er an UltraDev übergeben wird - sei es zur Darstellung auf dem Monitor oder für die Datenbindung selbst. Die Formate wählen Sie aus dem Popup-Menü in der Spalte Format. Fügen Sie Ihrem Dokument dynamische Daten hinzu, damit Sie dieses Popup- Menü öffnen können. Folgende Formatierungen stehen zur Auswahl:

Die übrigen Arten der Formatierung betreffen die Kodierung von URLs, die Stringdaten enthalten, sodass sie per URL übergeben werden können. (Sonderzeichen werden in Hexagesimalcode umgewandelt.)

Falls Sie das passende Format nicht finden, können Sie es über Formatliste bearbeiten erstellen oder ein bereits vorhandenes Format anpassen. Abb. 9.13 zeigt das Dialogfenster Formatliste bearbeiten.

Abbildung 9.13:  Formatierungen bearbeiten oder hinzufügen

Wie Sie ein neues Format hinzufügen:

  1. Klicken Sie auf das Plussymbol (+).
  2. Wählen Sie das Format, das Sie ergänzen wollen (Nummer, Währung, Prozent) aus dem Popup-Menü.
  3. Setzen Sie die Attribute für Ihr neues Format: Zahl der führenden Nullen, Nachkommastellen usw.
  4. Klicken Sie auf OK.

    Abbildung 9.14:  Passen Sie Formate an die speziellen Erfordernisse Ihrer Anwendung an.

9.3 Benutzerauthentifizierung

Ab UltraDev 4.0 gibt es eine Reihe neuer Serververhalten, die der Authentifizierung des Anwenders dienen. Im Gegensatz zu anderen Verhaltensweisen verändern sie keine Daten oder die Art ihrer Darstellung. Diese Verhaltensweisen dienen dem Zweck, den Zugang zu bestimmten Seiten nur für berechtigte Anwender zuzulassen. Sie setzen eine Tabelle mit Zugangsberechtigungen voraus, die Sie selbst verwalten und pflegen müssen. In dieser Tabelle werden der Name und das Passwort des Anwenders in Klartext gespeichert. Die UltraDev-Verhaltensweisen vergleichen diese Daten mit den Eingaben des Anwenders im Anmeldeformular. Stimmen sie überein, wird eine Session-Variable MM_Username gesetzt. Auf allen weiteren Seiten wird diese Variable überprüft um festzustellen, ob der Betreffende eine Zugangsberechtigung zu diesen Seiten besitzt. Es gibt insgesamt vier Authentifizierungsverhalten, die wir nun der Reihe nach durchgehen werden.

Benutzer anmelden

Das Verhalten Benutzer anmelden (siehe Abb. 9.15) präsentiert sich zwar mit einer umfangreichen Eingabemaske, ist aber leicht zu konfigurieren. Dieses Verhalten wird zweckmäßigerweise einer Anmeldeseite zugewiesen. Alles, was Sie tun müssen, ist, ein Formular zu erstellen - der Rest wird automatisch erledigt.

Abbildung 9.15:  Das Verhalten Benutzer anmelden vergleicht Anwendereingaben aus einem Formular mit Einträgen in der Datenbank.

Um das Verhalten zu konfigurieren, müssen Sie die vier Felder der Eingabemaske entsprechend den Werten in Ihrer Site bzw. Datenbank ausfüllen:

Mit diesen wenigen Handgriffen haben Sie eine Anmeldeseite generiert. Hat das Serververhalten die nötigen Daten erhalten und überprüft, wird der Besucher auf die von Ihnen festgelegte Seite gelenkt. Ihre Aufgabe ist es nunmehr, diese Seiten zu gestalten.

Zugriff auf Seite beschränken

Wenn sich ein Besucher auf einer Website einloggen muss, dann hat das meistens einen tieferen Grund - z.B., um den Zugang zu bestimmten Informationen zu beschränken. Das Serververhalten Zugriff auf Seite beschränken ermöglicht es zu überprüfen, ob ein Besucher die erforderliche Berechtigung hat, eine bestimmte Seite anzusehen, bevor diese angezeigt wird. Es wird vorausgesetzt, das Sie bereits ein Verhalten Benutzer anmelden definiert haben, bevor Sie über dieses Verhalten eine Zugangsbeschränkung festsetzen.

Wenn Sie dieses Verhalten einsetzen wollen, brauchen Sie es lediglich der Seite zuzuweisen, die nur für bestimmte Besucher zur Verfügung stehen soll. Wie aus Abb. 9.16 ersichtlich, genügt es für die Konfigurierung dieses Verhaltens, dass Sie festlegen, auf Grund welcher Daten der Zugriff beschränkt werden soll (gültiges Login bzw. gültiges Login plus Berechtigungslevel). Hat sich der Besucher nicht korrekt eingeloggt, wird er auf die Seite geschickt, die Sie im Feld Bei verweigertem Zugriff hierher gehen eingeben.

Abbildung 9.16:  Zugriffsrechte beschränken mit Benutzernamen und Kennwort, eventuell ergänzt um einen Berechtigungslevel

Wollen Sie Zugriffsrechte zusätzlich über die Definition von Berechtigungsleveln regeln, müssen Sie bereits ein Anmeldeverhalten erstellt haben, das Berechtigungslevel überprüft. Wenn Sie Berechtigungslevel an dieser Stelle zum ersten Mal einsetzen, müssen Sie auf die Schaltfläche Definieren klicken, um die entsprechenden Level der Auswahlliste hinzuzufügen. Über die Plus- und Minussymbole können Sie Berechtigungslevel erzeugen bzw. löschen. Vorsicht: Berechtigungslevel müssen exakt so benannt sein wie ihre Entsprechungen in der Datenbank.

Haben Sie diese Berechtigungslevel bereits definiert, müssen Sie sie nur noch aus der Liste auswählen. In der Folge haben nur die Besucher Zugang zu dieser Seite, die den nötigen Berechtigungslevel besitzen.

Benutzer abmelden

Sinn und Zweck des Verhaltens Benutzer abmelden lässt sich problemlos aus seinem Namen ableiten. Auch wenn Sie dieses Verhalten auf Ihrer Website nicht wirklich brauchen, gibt es doch ein paar sinnvolle Einsatzmöglichkeiten. Sobald sich ein Besucher einloggt, legt dessen Browser für diese Session ein Cookie an. Dieses Cookie existiert nur so lange, wie der Browser geöffnet ist. Schließt der Anwender den Browser, hat er sich damit definitiv aus der Anwendung ausgeloggt und es besteht keine Notwendigkeit für ein Auslog-Verhalten.

Soll der Besucher aber die Möglichkeit haben, sich während einer Sitzung aus einem Zugangskonto auszuloggen und sich anschließend unter einem anderen Zugang wieder einzuloggen, müssen Sie dieses Verhalten implementieren. Das zugehörige Dialogfenster sehen Sie in Abb. 9.17.

Abbildung 9.17:  Konfiguration des Abmelde-Verhaltens und der Seite, die in der Folge angezeigt werden soll

Zur Konfiguration dieses Verhaltens braucht das Programm Informationen, wann das Abmelde-Verhalten aktiviert werden soll (nachdem ein Link angeklickt wurde oder wenn die Seite mit dem Abmelde-Verhalten geladen wird), und zu welcher Seite der Besucher im Anschluss gelenkt werden soll.

Wie gesagt, wirklich brauchen tun Sie dieses Verhalten nicht. Es ist ziemlich unwahrscheinlich, dass die Besucher auf Ihrer Site diesen Logout-Link überhaupt bemerken werden - so ist das eben im Internet.

Neuen Benutzernamen überprüfen

Für bestimmte Websites ist es erforderlich, dem Besucher ein Online-Anmeldeformular zur Verfügung zu stellen, über das er seinen eigenen Zugang konfigurieren kann. Hierzu muss er einen Benutzernamen und ein Kennwort eingeben können. Bei einigen Hundert registrierten Benutzern kann jedoch nicht ausgeschlossen werden, dass der gewählte Benutzername bereits vergeben ist. (Wenn Sie je versucht haben, bei einem Free- Maildienst eine persönliche Mailadresse einzurichten, dann wissen Sie wahrscheinlich, wovon ich rede.)

Das Verhalten Neuen Benutzernamen überprüfen kontrolliert, ob ein Benutzername bereits vergeben ist, bevor es ihn in die Datenbank schreibt. Das Verhalten Neuen Benutzernamen überprüfen arbeitet in Verbindung mit dem Verhalten Datensatz einfügen und verlangt zwei Eingaben: das Datenfeld, das den Benutzernamen enthält, sowie die URL der Seite, auf die der Besucher geschickt werden soll, falls der gewählte Benutzername bereits vergeben ist. Abb. 9.18 zeigt das zugehörige Dialogfenster.

Abbildung 9.18:  Wählen Sie die Spalte der Tabelle aus, die den Benutzernamen enthält, sowie die Seite, auf die der Besucher geschickt wird, falls der Name bereits vergeben ist.

Wenn Sie Anmeldeseiten entwickeln, werden Sie dieses Verhalten nicht mehr missen wollen, da damit doppelte Einträge unmöglich sind.

Technik für Fortgeschrittene: Serververhalten editieren bzw. neu erstellen

Die nachfolgenden Instruktionen sollten nur von den Lesern praktisch umgesetzt werden, die die Entwicklungsumgebung von UltraDev und zumindest eine der eingebetteten Skriptsprachen aus dem Effeff kennen.

UltraDev enthält einen eigenen Editor, mit dem Sie neue Serververhalten erzeugen bzw. bereits vorhandene Ihren Erfordernissen entsprechend modifizieren. Ich kann nur jedem dringend davon abraten, die vordefinierten Serververhalten von UltraDev in irgendeiner Form zu verändern. Wenn Sie dergleichen vorhaben, speichern Sie das Verhalten erst unter einem anderen Namen, bevor Sie den Code umschreiben.

Ich möchte Ihnen an einem kleinen Beispiel vorführen, wie sich Serververhalten anpassen lassen, damit Sie einen Eindruck davon bekommen, wie die Sache im Prinzip funktioniert. Klicken Sie in der Palette Serververhalten auf das Plussymbol (+), und wählen Sie Serververhalten bearbeiten, um ein bereits vorhandenes Serververhalten zu modifizieren (wir raten ab) oder Neues Serververhalten, um ein neues Serververhalten zu erstellen bzw. ein Serververhalten als Kopie zu speichern und dann zu modifizieren.

Nehmen wir an, Sie möchten ein neues ASP-Serververhalten definieren, das eine Session- Variable unter Bezug auf eine Anforderungsvariable setzt. Die Befehlssyntax würde sich folgendermaßen lesen:

<%Session("MySessionVariable")=Request("MyRequestVariable")%>

Im ersten Schritt wählen Sie im Popup-Menü der Serververhaltenpalette den Befehl Neues Serververhalten. Es öffnet sich das in Abb. 9.19 gezeigte Dialogfenster.

Abbildung 9.19:  Wählen Sie das Servermodell aus und vergeben Sie einen Namen für das neue Verhalten.

Wählen Sie das richtige Servermodell aus (in diesem Fall ASP) und vergeben Sie einen Namen für das neue Verhalten. Wenn Sie die Option Vorhandenes Serververhalten kopieren aktivieren, können Sie eines der bereits vorhandenen Serververhalten auswählen und modifizieren. Sie müssen dann nicht ganz blank beginnen.

Haben Sie die erforderlichen Eingaben gemacht, klicken Sie auf OK.

Im zweiten Schritt definieren Sie das eigentliche Serververhalten. Hierzu müssen Sie den erforderlichen Code im Dialogfenster Serververhalten-Erstellung einsetzen (siehe Abb. 9.20).

Abbildung 9.20:  Im Dialogfenster Serververhalten-Erstellung definieren Sie den nötigen ASP-, JSP- bzw. CFML-Code.

Jedes Serververhalten kann aus mehreren Codeblöcken bestehen, die an ganz unterschiedlichen Stellen im HTML-Dokument stehen können. Da es sich bei unserem Beispiel um ein ganz simples Serververhalten handelt (es besteht aus einem einzigen Codeblock), sollte es nicht schwierig zu definieren sein:

  1. Klicken Sie auf das Plussymbol (+), um einen neuen Codeblock hinzuzufügen. Nennen Sie ihn Set_Session_block1 (der Defaultname).
  2. Wählen Sie in den Eingabefeldern Code Einfügen und Relative Position die Option »Über dem Tag <html>« bzw. »Anfang der Datei«. Diese beiden Popup- Menüs regeln, in welchen Teil des Dokuments der Code eingefügt wird und wo er dort steht.
  3. Ändern Sie den Codeblock folgendermaßen um: <%Session("")=Request("")%>
  4. Platzieren Sie nun den Cursor zwischen die beiden Anführungszeichen der Session- Hälfte: Session(""). Klicken Sie dann auf die Schaltfläche Parameter In Codeblock einfügen. Sie werden aufgefordert, einen neuen Parameter zu definieren. Nennen Sie ihn SessionName.
  5. Setzen Sie den Cursor jetzt zwischen die Anführungszeichen der Request-Hälfte: Request(""). Klicken Sie wieder auf die Schaltfläche Parameter In Codeblock einfügen. Es öffnet sich das bereits bekannte Dialogfenster. Nennen Sie diesen Parameter RequestName.
  6. Damit haben Sie das Grundgerüst für das neue Serververhalten geschaffen. Klicken Sie nun für die weiteren Schritte auf die Schaltfläche Weiter.

Der letzte Schritt in der Definition des neuen Serververhaltens besteht darin, das nun geöffnete Dialogfenster zu konfigurieren. Dieser Vorgang ist wie so viele andere in UltraDev ebenfalls automatisiert. Wie in Abb. 9.21 zu sehen, können Sie die Anordnung der Eingabefelder im Dialogfenster verändern. Klicken Sie in der Spalte Anzeigen Als auf einen der Parameter, können Sie sie mit der Datensatzgruppe verknüpfen. Dadurch wird es möglich, dass diese Parameter mit dynamischen Daten gefüllt werden.

Abbildung 9.21:  Legen Sie die Reihenfolge und die Art der Anzeige der Eingabefelder im neuen Serververhalten fest.

Wenn Sie die erforderlichen Einstellungen vorgenommen haben, klicken Sie auf OK.

Nun wird das Serververhalten erzeugt und dem Menü der Palette Serververhalten hinzugefügt. Das Dialogfenster für unser neu erzeugtes Serververhalten ist in Abb. 9.22 zu sehen.

Wenn Sie die Beispiele in den kommenden Lektionen durcharbeiten, werden Sie feststellen, dass in manchen Fällen der automatisch generierte Codes angepasst werden muss, damit die Anwendung wie gewünscht funktioniert. Und das sind genau die Einsatzbereiche, wo wir nicht mit modifizierten Serververhalten arbeiten sollten. Rein theoretisch ginge das zwar, aber es würde länger dauern, ein Verhalten auf die gewünschte Funktionalität hin abzuändern, als einfach den Code zu editieren. Die Definition neuer Verhaltensweisen empfiehlt sich dann, wenn sich damit stets wiederkehrende Arbeitsschritte automatisieren lassen - nicht der gelegentliche Einzelfall, da die vordefinierten Verhaltensweisen nicht die gewünschte Funktionalität bieten. So gesehen ist die Möglichkeit, eigene Serververhalten zu generieren ein fantastisches Werkzeug, das gerade die Programmierergilde zu schätzen wissen wird.

Abbildung 9.22:  Das neue Serververhalten ist einsatzbereit.

9.4 Zusammenfassung

Ähnlich wie in der allerersten Lektion haben wir heute die grundlegenden Werkzeuge kennen gelernt, die wir für die weitere Arbeit brauchen. Ich weiß, es brennt Ihnen unter den Nägeln, diese Tools nun selbst auszuprobieren und eigene Sites zu kreieren, drum legen wir morgen auch gleich los damit. Später in dieser Woche werden wir uns den SQL- Befehlssatz selbst noch etwas genauer ansehen, damit Sie Ihre eigenen Abfragen generieren können, die über die Möglichkeiten der vordefinierten Routinen hinausgehen.

Nach der heutigen Lektion sollten Sie ein Verständnis für die Funktion der Serververhalten mitbringen, wissen, wo Sie sie im Programm finden und was Sie damit tun können. Auch Sinn und Zweck der Datenbindungen sollte Ihnen klar sein.

Die Palette Datenbindungen werden Sie für die Entwicklung dynamischer Websites ständig brauchen, denn sie ist die Schnittstelle zu allen Datenbankabfragen sowie sämtlichen dynamischen Daten. Über die Palette Datenbindungen können Sie außerdem die Attribute eines beliebigen HTML-Objekts in der Dokumentansicht mit dynamischen Daten verknüpfen.

Schließlich haben Sie auch noch die Möglichkeit, aus der Datenbank bezogene Daten bei der Ausgabe formatieren zu lassen. Da bestimmte Attribute in Tabellen von Datenbank zu Datenbank oft unterschiedlich formatiert sein können, kann diese Funktion in vielen Fällen ein wahres Geschenk der Götter sein.

Wenn Ihnen die Funktion einzelner Werkzeuge vielleicht jetzt noch nicht ganz klar ist, wird sich das sicher in Laufe der kommenden Lektionen ändern, wenn Sie mit praktischen Beispielen arbeiten. Die einzelnen Serververhalten werden noch einmal gründlich besprochen, wenn wir sie in eine Seite einbauen. Sie müssen also den Stoff der heutigen Lektion nicht auswendig lernen.

9.5 Fragen und Antworten

Frage:
Gibt es bei den fortgeschrittenen Abfragen irgendwelche Einschränkungen?

Antwort:
Die Abfragemöglichkeiten werden nur vom Datenbankserver begrenzt. UltraDev schickt die Abfrage so, wie sie ist, an den Server. Der SQL-Code selbst wird vom Programm nicht geparst.

Frage:
Wie kann ich einen Bereich verbergen statt ihn anzuzeigen?

Antwort:
Es ist vom Ergebnis her völlig gleich, ob ein Bereich angezeigt wird, weil eine Bedingung wahr ist, bzw. weil das Gegenteil der Bedingung wahr ist. Wenn Sie z.B. einen Bereich verbergen möchten, wenn die Bedingung A=1 erfüllt ist, können Sie das Serververhalten so konfigurieren, dass das Element angezeigt wird, wenn A1. Der Effekt ist der gleiche.

Frage:
Kann man das Verhalten Bereich wiederholen ineinander schachteln?

Antwort:
Ja und nein. Wenn Sie dieses Verhalten wie zwei ineinander geschachtelte for...next-Schleifen verwenden, werden Sie eine kleine Überraschung erleben. Der von UltraDev generierte Code initialisiert die beiden Schleifen gleichzeitig, bevor eine davon ausgeführt wird. Das hat zur Folge, dass die innere Schleife nur einmal ausgeführt wird.

Frage:
Wozu ist eigentlich der Befehl Zusätzliche Datenquellen abrufen der Datenbindungspalette gut?

Antwort:
Immer, wenn Sie in einer Palette oder einem Menü den Befehl Zusätzliche ... abrufen finden, können Sie über diesen Befehl Ihren Browser starten und direkt von der Macromedia-Website die entsprechenden Erweiterungen herunterladen.

9.6 Workshop

Der Workshop dient dazu, den gelesenen Stoff mithilfe von gezielten Fragen und Übungen zu vertiefen. Die Antworten finden Sie in Anhang A, »Quiz-Antworten«.

Quiz

  1. Welche Funktion hat das Verhalten Datensatzgruppe?
  2. Wie können Sie die Anweisung Datensatz einfügen direkt auf dem Server ausführen?
  3. Unterstützt UltraDev zusammengesetzte Primärschlüssel bei Abfragen?
  4. Gibt es neben den Serververhalten noch andere Wege, eine Site um dynamische Funktionen zu erweitern?
  5. Wie können Sie dynamische Werte bei der Ausgabe formatieren lassen?

Übungen

  1. Probieren Sie die verschiedenen Werkzeuge aus, die Sie heute kennen gelernt haben. Versuchen Sie, diese Tools zusammen mit der gestern definierten Datenbankverbindung zu testen.
  2. Machen Sie sich mit der Palette Datenbindungen vertraut. Wenn Sie eine funktionierende Datenbankverbindung eingerichtet haben, fügen Sie einige HTML- Elemente in der Dokumentansicht ein und verbinden Sie mit den Daten einer Datensatzgruppe. Sie müssen hier keine sinnvolle Anwendung erstellen, es geht darum, dass Ihnen das Prinzip in Fleisch und Blut übergeht.
  3. Wenn Sie schon Webanwendungen entwickelt haben, untersuchen Sie, wie Sie die dort implementierten Funktionen mit den Serververhalten von UltraDev realisieren können. Sie werden feststellen, dass UltraDev ein sehr flexibles Werkzeug ist, mit dem Sie eine große Anzahl von Entwicklungsaufgaben lösen können, auch wenn Sie hier nicht mit herkömmlichen Programmiersprachen arbeiten.



vorheriges KapitelInhaltsverzeichnisStichwortverzeichnisFeedbackKapitelanfangnächstes Kapitel


© Markt+Technik Verlag, ein Imprint der Pearson Education Deutschland GmbH