Multimediakurs Leinfelder: Inhalt / Modul 9: "Client-Server-Interaktion/ 9.3.2c online-Darstellung von Suchergebnissen aus Datenbankabfragen

(© copyright)     Letzte Änderungen:20.03.2011


Modul 9.3.2c: Serverseitige Aspekte von Client-Server-Interaktionen: Datenbankanbindung - Webdarstellung von Suchergebnissen aus Datenbankabfragen

Modul 9-Start

9.1: Einleitung und Generelles |
9.2: Web-Email-Feedback | Formulare | Formularverwendung und -aktionen
9.3: Serverkkonfigurierung, plugins und cgis | Datenbanksatzerstellung via Web |
Datenbanksuche via Web |Suchergebnisanzeige im Web | Datensatzeditierung via Web
vorformulierte Datenbankabfragen und db-basierte Webseiten |
Webseiten mit SSI, ASP, JSP, PHP, XML |
9.4: Zusammenfassung

9.3.2c: html-Online-Darstellung einer FileMaker-Datenbank-Suchabfrage

Dieses Kapitel schließt direkt an das vorhergehende an, welches Sie deshalb zuvor durcharbeiten sollten

Unten als Beispiel eine echte Datenbankabfrage aus der Intranet der Paläontologie München. Aus Datenschutzgründen habe ich die Namen unkenntlich gemacht. Wie Sie sehen, sind im Originalbeispiel noch mehr Felder in der Datenbank, z.B. auch Titel, Abreisetag sowie Grund (siehe auch nächste Seite). Außerdem ist das Ganze als Frames angelegt, so dass man vom oberen Frame aus sowohl aufrufen als auch neu eintragen kann (das Ganze ist nur ein Screenshot, die Links sind also nicht anklickbar).

Nehmen wir einmal das komplette Templat für obige Suchergebnisse (d.h. die Tabelle im unteren Frame), diesmal mit Tabellen, da diese nun wichtig sind, um die Datensätze zu unterteilen (sie könnten jedoch mit einem Tabellenrand von 0 unsichtbar gemacht werden). Ich schreibe die Erläuterungen in Rot als Kommentartags unten rein. Grüne Markierungen im Text beziehen sich direkt auf die Kommentare.

Zuvor aber noch Wichtiges zum Verständnis:

Die hier erläuterte Verbindung zwischen Webseiten und Filemaker-Datenbanken funktioniert via CDML (Claris Data Markup Language). -DB, -op, -Find und anderer bereits oben verwendeter Code stammt bereits aus CDML. CDML ist nur eine von vielen Datenbank-Auszeichnungssprachen, in diesem Fall wurde sie speziell für Filemaker-Datenbanken entwickelt. Besonders interessant sind natürlich Standard-Auszeichnungssprachen (auch Datenbank-Schnittstellen genannt) wie z.B. ODBC (Open Database Connectivity) oder SQL (Standard Query Language), welche für verschiedenste Datenbanken in gleicher Weise funktionieren. ODBC versteht FileMaker zwar ebenso, genauso wie XML (in der nächsten Version wohl auch SQL). Allerdings kann eine CDML-Anbindung, die wir hier nun exemplarisch von Hand machen, fast automatisch erstellt werden. Zum einen kann FileMakerPro völlig automatisch entsprechende Webseiten mit CDML-Anbindung generieren (die dann aber wenig anpassbar sind), zum anderen gibt es Tools (etwa bei FilemakerPro 5 oder noch besser beim leider nicht mehr vertriebenen Webeditor Claris Homepage), die einen sehr bei der Arbeit unterstützen.

Claris Homepage besitzt z.B. einen Assistenten, der Seiten wie die hier behandelten quasi halbautomatisch erstellt. Man gibt an, welche Felder der Datenbank aufgenommen werden sollen, welche Suchfelder benutzt werden sollen, ob die Detailergebnisse editierbar sein sollen uvm. Danach erstellt der Webeditor die entsprechenden Seiten (so wie in 9.3.2a beschrieben) vollkommen selbständig. Sie können dann noch weiter editiert werden. Alternativ kann man via Drag und Drop einfach CDML-Markensymbole auf Webseiten ziehen.

Wir verwenden hier CDML aber nur beispielhaft, um das Prinzip der Webseitenanbindung an Datenbanken zu erklären, da diese Auszeichnungssprache besonders leicht verständlich ist. Keinesfalls geben wir eine vollständige Referenz zu CDML. Grundsätzlich ist die Anbindung mit anderen Auszeichnungssprachen vergleichbar. Wenn Sie einmal das Prinzip verstanden haben, wird es Ihnen leichter fallen, sich in andere Auszeichnungssprachen einzuarbeiten. Zum Ende dieses Moduls weisen wir insbesondere auf die Möglichkeiten hin, wie Sie auch mit Skriptsprachen (asp, jsp, php) oder anderen Auszeichnungssprachen (xml) Datenbankanbindung erreichen können. Filemaker 5 versteht übrigens auch xml.

Nun aber zur Erläuterung unserer Suchergebnisseite:

<!-- die erste Tabelle hat nen unsichtbaren Rand-->

<TABLE BORDER=0 WIDTH="100%">
<TR>
<TD WIDTH="33%">
<P ALIGN=right><FONT SIZE="+1"><B>Datenbank-Name:</B></FONT></P>
</TD>
</B></FONT><TD>
<P>Gaesteliste</P>
</TD>
<TD>
<P></P>
</TD>
</TR>
<TR>
<TD WIDTH="33%">
<P></P>
</TD>
<!-- nachfolgend werden mit sogenannten CDML-Marken (CDML-Tags) die Rangfolge des ersten und letzten gefundenen Datensatz, sowie die Zahl aller vorhandenen Datensätze eingelesen. Derartige CDML-Einlesemarken befinden sich innerhalb eckiger Klammern. Da diese Ergebnisseite ja durch eine Suchabfrage an eine Datenbank erstellt wurde, ist bekannt, welche Datenbank hier ausgelesen werden soll, entsprechende hidden-Tags sind also nicht notwendig. -->

<P><TD COLSPAN=2>
<P>Anzeige von Datensatz
[FMP-RANGESTART] bis
[FMP-RANGEEND]von [FMP-CURRENTFOUNDCOUNT] gefundenen
Datens&auml;tzen.</P>
</TD>
</TR>
</TABLE>
<IMG SRC="imgs/stpl_bar.gif" WIDTH=520 HEIGHT=12 ALIGN=bottom>

<!-- nachfolgend die eigentliche Ergebnistabelle. Jeder gefundene Datensatz wird in einer Tabellenzeile angezeigt; jedes Feld eines Datensatzes in einer Tabellenzeile. Der Gastnachname soll anklickbar sein, auf Klick soll dann eine Seite mit Detailergebnissen aufrufbar sein.

In der ersten Tabellenzeile stehen nur die Überschriften, erst danach geht es mit dem Datenbank-Einlesen los. Die einzulesenden Felder bestehen nur aus der Anweisung FMP und dem Feldnamen, das ganze wieder in eckiger Klammer. Ein Datensatz beginnt jeweils mit FMP-Record und endet auch damit. Damit weiß das generierende FMP-Plugin, dass es soviele Zeilen, wie records vorhanden sind anlegen muss (max jedoch wie in der Suchabfrage voreingestellt). Die Verlinkung zur Detailseite erfordert eine spezielle Marke FMP-LinkRecid, bei der noch angegeben werden muss, welche html-Templatseite aufzurufen ist. Diese Marke steht anstelle eines URL. -->

<TABLE BORDER=1 WIDTH="100%">
<TR>
<TD VALIGN=top WIDTH=38>
<P></P>
</TD>
<TD ALIGN=center>
<P><B>Titel</B></P>
</TD>
<TD ALIGN=center>
<P><B>Gastvorname</B></P>
</TD>
<TD ALIGN=center>
<P><B>Gastnachname</B></P>
</TD>
<TD ALIGN=center>
<P><B>Ort</B></P>
</TD>
<TD ALIGN=center>
<P><B>Land</B></P>
</TD>
<TD ALIGN=center>
<P><B>Grund</B></P>
</TD>
<TD ALIGN=center>
<P><B>Ankunftstag</B></P>
</TD>
<TD ALIGN=center>
<P><B>Abreisetag</B></P>
</TD>
</B></CENTER></TR>
[FMP-RECORD]
<TR>
<TD VALIGN=top WIDTH=38>
<P></P>
</TD>
<TD>
<P>
[FMP-FIELD: Titel]</P>
</TD>
<TD>
<P>
[FMP-FIELD: Gastvorname]</P>
</TD>
<TD>
<P><A HREF="
[FMP-LinkRecID: format=record_detail.htm, layout=detail]">[FMP-FIELD: Gastnachname]</A></P>
</TD>
<TD>
<P>
[FMP-FIELD: Ort]</P>
</TD>
<TD>
<P>
[FMP-FIELD: Land]</P>
</TD>
<TD>
<P>
[FMP-FIELD: Grund]</P>
</TD>
<TD>
<P>
[FMP-FIELD: Ankunftstag]</P>
</TD>
<TD>
<P>
[FMP-FIELD: Abreisetag]</P>
</TD>
</CENTER></TR>
[/FMP-RECORD]
</TABLE>
<IMG SRC="imgs/stpl_bar.gif" WIDTH=520 HEIGHT=12 ALIGN=bottom><TABLE BORDER=0 WIDTH="100%">
<TR>
<TD WIDTH="33%">

<!-- Falls mehr Treffer vorhanden sind, als auf eine Seite passen, werden diese auf mehrere Seiten verteilt dargestellt. Dazu werden dann die Steuerknöpfe ggf. angezeigt, was aber in unserem Beispiel nicht nötig war, da die Trefferzahl kleiner als die auf der Suchseite eingestellte Zahl maximal anzuzeigender Treffer pro Seite war. Die entsprechenden Link-CDML-Marken erklären sich eigentlich von selbst. (suchen Sie doch mal in den Geobiolinks nach einem Begriff, der viele Treffer ermöglicht, dann werden Sie die aktivierten Knöpfe sehen).

Weiterhin wird noch ein Link auf die Suchseite angegeben. Hier wird im URL gleich Datenbank und Layout mit angegeben, was wie bereits geschildert, dann wichtig ist, wenn Teile der Datenbankeinträge gleich als Auswahlkriterien zur Verfügung gestellt werden. -->

<P>[FMP-LINKPREVIOUS]
<IMG SRC="imgs/stpl_arl.gif" WIDTH=29 HEIGHT=43 BORDER=0 ALIGN=middle><FONT SIZE="+1"><B>vorherige
Suchergebnisse</B></FONT>
[/FMP-LINKPREVIOUS]</P>
</TD>
<TD ALIGN=center WIDTH="34%">
<P>
<A HREF="FMPro?-db=Gaesteliste&-lay=detail&-format=search.htm&-view"><FONT SIZE="+1">Neue
Suche starten</FONT></A>
</P>
</TD>
</FONT><TD WIDTH="33%">
<P ALIGN=right>
[FMP-LINKNEXT]
<P ALIGN=right><FONT SIZE="+1"><B>weitere
Suchergebnisse</B></FONT><IMG SRC="imgs/stpl_arr.gif" WIDTH=29 HEIGHT=43 BORDER=0 ALIGN=middle>
[/FMP-LINKNEXT]</P>
</TD>
</TR>
</TABLE>
</CENTER>
</BODY>
</HTML>

Nun noch die Erläuterung des Templats für eine Detailergebnisseite, die auch via Webbrowser editiert und ggf. gelöscht werden kann. (>> nächste Seite)


>> Modul 9.3.2d: Darstellung und Editieren von Detailergebnissen aus Datenbankabfragen sowie Vordefinierte Abfragen.

<< Modul 9.3.2b: Suchabfragen von Datenbanken via Web