Impressum | Kontakt | Jobs
Aufdringliche Selbstdarstellung seit 1996
Homepage
von
Alexander
Auer

COLD FUSION (TEIL III)

Die ersten beiden Teile dieses Einführungstutorials beschäftigten sich mit dem Syntax und den wichtigsten Befehlen. Der vorliegende dritte Teil soll nun die Anwendungsmöglichkeiten anhand praktischer Beispiele deutlich machen.

Die vorliegenden Beispiele dienen vor allem dazu, mit dem Syntax näher vertraut zu werden und einige der am häufigsten verwendeten Funktionen und Befehle näher zu beleuchten.
Zur Erinnerung sei nochmals erwähnt, daß ein Cold Fusion Server installiert sein muss, der den Code entsprechend interpretiert. Eine Testversion kann unter http://www.allaire.com/Products/coldfusion/ heruntergeladen werden. Cold Fusion Dateien müssen die Endung .cfm aufweisen.


Dateien auslesen / schreiben

Datei Lese- und Schreiboperationen sollen am Beispiel eines Counter verdeutlicht werden:
<CFFILE ACTION="Read" FILE="counter.txt" VARIABLE="counter">
<CFSET counter=#file.counter#+1>
<CFFILE ACTION="Write" FILE="counter.txt" OUTPUT="counter">
<CFOUTPUT>#counter#</CFOUTPUT>

Der Befehl, mit dem in Cold Fusion Dateioperationen ausgeführt werden können, lautet CFFILE.
Der Parameter 'action' definiert die Art der Operation (lesen, schreiben, kopieren, löschen, ...). Mittels 'file' wird festgelegt, um welche Datei (Dateiname) es sich handelt.
Beim Auslesen wird der Inhalt in Form einer Variable gespeichert, die entsprechend weiterverarbeitet werden kann.
In obigem Beispiel wird also eine Datei geöffnet (diese muss vorhanden sein und zwar mit einem numerischen Eintrag) und der Inhalt wird in die Variable 'counter' gelesen. Anschließend wird der Wert dieser Variablen um 1 erhöht und die veränderte Variable wieder in dem File 'counter.txt' gespeichert.
Zuletzt erfolgt noch mittels CFOUTPUT die Ausgabe des Wertes am Bildschirm.


E-Mail Operationen

Ein Beispiel, um Inhalte die mittels HTML Formular übergeben werden als E-Mail weiterzusenden, fand sich schon im ersten Teil des Tutorials. Allerdings nur mit den minimalen Parametern, nämlich Subject des Mails und Empfänger.
Zusätzlich können noch jede Menge weiterer Parameter übergeben werden. Hier eine komplette Auflistung:
<CFMAIL TO="Empfänger"
FROM="Absender"
CC="Kopie an:"
SUBJECT="Thema"
TYPE="Nachrichtentyp"
QUERY="Abfragename"
MAXROWS="maximale Zahl an Nachrichten"
MIMEATTACH="Pfad"
GROUP="Abfragespalte"
STARTROW="Abfragezeile"
SERVER="Servername"
PORT="Anschlußnummer"
TIMEOUT="Sekunden">

Die meisten Parameter sind aus gängigen E-Mail Programmen bekannt. 'TYPE' kann den Wert 'HTML erhalten, wenn in der Nachricht HTML-Befehle enthalten sind.
'QUERY' bezieht sich auf mögliche davor definierte Datenbankabfragen, aus denen die Inhalte der Mail (Variablen) bezogen werden sollen.
Bei Datenbank-gesteuerten Mail-Sendungen ist es hilfreich, das Attribut 'MAXROWS' zu setzen, das die maximale Anzahl an Mails festlegt, die gesendet werden dürfen. Ebenso kann mittels 'STARTROW' festgelegt werden, ab welcher Datenreihe mit dem Mailversand begonnen werden soll.
'MIMEATTACH' wird verwendet, wenn zusätzlich zum Text auch Dateien angehängt werden sollen.
'SERVER' und 'PORT' müssen definiert werden, wenn im Cold Fusion Administrator kein entsprechender Eintrag vorhanden ist.
'TIMEOUT' steht für den Wert in Sekunden, bis die Verbindung zum SMTP-Server unterbrochen wird.


Zufällige Aktionen

Zeitweise kann es sehr hilfreich sein, 'zufällige' Aktionen zu setzen, um den Eindruck einer dynamischen, spontanen Webseite zu erzeugen.
Hier ein Beispiel, bei dem zufällige Links aus einer Datenbank gezogen werden:
<CFQUERY NAME="getID" DATASOURCE="WEBDATEN">
select max(id) as maxid from links
</CFQUERY>
<CFSET LINKID= #RandRange(1, maxid)#>
<CFQUERY NAME="getlink" DATASOURCE="WEBDATEN">
select description, url from links where id='#linkid#'
</CFQUERY>
<CFOUTPUT QUERY="getlink">
<a href="#url#">#description#</a>
</CFOUTPUT>

Zuerst wird die insgesamte Anzahl der vorhandenen Einträge (Datenbank 'webdaten', Tabelle 'links') ermittelt und in einer Variable zwischengespeichert.
Mittels 'Randrange'-Funktion erhalten wir einen zufällig gewählten Wert zwischen 1 und der ermittelten Anzahl der Einträge.
Durch eine weitere Datenbankabfrage lesen wir die Werte dieser Datenreihe aus und stellen sie mittels CFOUTPUT am Bildschirm dar.


Dynamische Aktionen

Der große Vorteil von serverseitigen Scriptsprachen im Internet ist, daß Inhalte dynamisch generiert werden, sprich sich an dem Verhalten des Users orientieren können. So können beim Aufruf ein und des selben Files unterschiedliche Aktionen gesetzt werden.
Die Ausgabe kann dabei z.B. vom Vorhandensein oder den Werten bestimmter Variablen abhängig gemacht werden.
Als Beispiel eine If-Else Schleife, die überprüft, ob ein Kunde schon in der Datenbank vorhanden ist, oder neu angelegt werden muss

<CFIF IsDefined("user") and user is 'neu'>
<CFQUERY NAME="neu" DATASOURCE="users">
INSERT INTO customer
(vorname, nachname, email)
VALUES ('#vorname#', '#nachname#', '#email# ')
</CFQUERY>

<CFELSEIF IsDefined("user") and user is 'bestehend'>

<CFQUERY NAME="kundeaktualisiseren" DATASOURCE="users">
UPDATE customer
SET
vorname = '#vorname#',
nachname = '#nachname#',
email = '#email#',
WHERE
email='#email#'
</CFQUERY>

<CFELSE>
<FORM action="datei.cfm" method="post">
<INPUT TYPE="TEXT" NAME="vorname"><br>
<INPUT TYPE="TEXT" NAME="nachname"><br>
<INPUT TYPE="TEXT" NAME="email"><br>
<INPUT TYPE="RADIO" NAME="user" value="neu" selected>Neueintrag
<INPUT TYPE="RADIO" NAME="user" value="bestehend">Bestehender Eintrag
<INPUT TYPE="SUBMIT" VALUE="Abschicken!">
</FORM>
</CFIF>

Cold Fusion bietet die Funktion 'isdefined', um abzufragen, ob eine Variable definiert ist oder nicht. In dieser If-Schleife wird zuerst abgefragt, ob die Variable 'user' vorhanden ist. Wenn dies nicht der Fall ist (nämlich beim ersten Aufruf der Seite), wird ein HTML Eingabeformular ausgeführt, in dem der Besucher Name, Vorname und e-Mail Adresse eintragen kann.
Außerdem muss er zwischen 'bestehender Eintrag' und 'Neueintrag' wählen. Die Formular-Action schickt die Daten an sich selber (Dateiname bei 'action'!) wieder zurück, allerdings diesmal mit den vorhandenen Variablen. D.h. beim erneuten Aufruf, ist die Variable 'user' vorhanden und eine der ersten beiden IF-Bedingungen erfüllt. Dadurch erfolgt entweder ein Datenbank-Neueintrag (in der Datenbank 'users', Tabelle 'customer') oder ein Update von vorhandenen Daten.
Im Normalfall sollte die Änderung bestehender Daten anhand der User-ID vorgenommen werden, was aber den Rahmen dieses Beispiels gesprengt hätte.


Automatische Weiterleitung

Manchmal ist es nötig, den Besucher auf eine andere Seite weiterzuleiten. Günstig ist dies z.B. bei Errorseiten, wenn bestimmte Inhalte nicht mehr vorhanden sind und der Besucher zur Startseite weiterverbunden wird. Cold Fusion bietet dafür den Befehl CFLOCATION.
<CFLOCATION URL="index.cfm">


HTML-Funktionen

Cold Fusion bietet einige Funktionen, mit denen Variableninhalte 'webtauglich' gemacht werden können. Diese sollten bei Formulareingaben und bei Zeichenketten, die als URL übergeben werden zum Einsatz kommen.
HTMLCodeFormat(String) wandelt alle Sonderzeichen (wie spitze Klammern, &, Leerzeichen, ...) der Variable 'string' in Ascii-Code um.
Ebenso die Funktion URLEncodedFormat(String). Die Variable 'string' wird so umgewandelt, daß sie korrekt als URL verwendet werden kann. Ist der Wert der Variablen 'Hallo Welt', so wird sie in 'Hallo+Welt' geändert.
Das gleiche Ergebnis kann man auch etwas umständlicher mittels Replace-Funktion erreichen: replace(String, 'a', 'b').
In diesem Fall wird jedes Vorkommen von 'a' in der Variablen 'string' durch 'b' ersetzt.

Eine komplette Liste aller von Cold Fusion unterstützten Funktionen findet man unter http://www.dli-usa.com/cfdocs/lang/lr030014.htm#I5. Genauso eine Referenz der verwendeten Tags unter http://www.dli-usa.com/cfdocs/lang/lr02.htm.


Zurück zur Übersicht