Multimediakurs Leinfelder: Inhalt / Modul 9: "Client-Server-Interaktion/ 9.3.2b online-Abfrage einer Datenbank am Beispiel von FileMakerPro

(© copyright)     Letzte Änderungen:20.03.2011


Modul 9.3.2b: Serverseitige Aspekte von Client-Server-Interaktionen:
Datenbankanbindung - Online-Abfrage einer Datenbank via Web

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.2b: html-Online-Abfrage einer FileMaker-Datenbank und vorkonfigurierte Abfragen.

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

Wenn wir unsere Gästeliste-Datenbank nun abfragen wollen, müssen wir ein neues Webtemplat erstellen. Dies könnte z.B. so aussehen:

Wir haben einige Datenbankfelder weggelassen. Zum Durchsuchen genügen die drei angegebenen Felder. Der Nutzer soll nach Namen, Ort, Land, Ankunftstag oder einer Kombination davon suchen sollen, ggf. soll er auch alle Einträge auf einmal aufrufen können.

Der html-code für das Suchformular (den ich wiederum durch Weglassen der Tabellenmarkierung vereinfacht habe) sieht folgendermaßen aus:

Sie verstehen das meiste bereits von selbst. Bei den Hiddenfeldern sind neu zwei -SortField-Befehle mit den dazugehörigen -SortOrder-Befehlen für die Datenbank. Der Value gibt an, auf welches Feld sich die Sortierung bezieht, bzw. ob die Sortierung aufsteigend (ascending) oder absteigend (descending) stattfinden soll. Unsere Sortierergebnisse werden also zuerst nach Ankunftstag, danach alphabetisch nach Namen sortiert. Zwei weitere Hiddenfelder geben mit entsprechenden Befehlen im Namensattribut an, wieviel Treffer max. auf einer Suchseite anzuzeigen sind (-max) bzw. wie die Suchoptionen verknüpft werden sollen (d.h. mit welchem logical operator, -lop, hier and, es gäbe auch or).

Ganz unten beim Submit-Button finden Sie noch den Datenbankbefehl -find, beim Alle aufrufen-Button den Datenbankbefehl -findall . Damit weiß das FMPro-Plugin bzw. die Datenbank, was es mit den eingehenden Daten machen soll, nämlich in den Suchmodus schalten und suchen.

Bei den Formularfeldern hat sich etwas getan. Sie heißen natürlich immer noch wie zuvor, aber es kam vor jedes noch ein hidden-Input, welches das notwendige für das nachfolgende Feld regelt. Das FMPro-Plugin wird nicht meinen, dass es sich um weitere Datenbankfelder handelt, da diese, wie auch die obigen hiddenfelder im Namensfeld eine Anweisung beinhalten (beginnt immer mit -), in diesem Fall haben alle die Anweisung -op, d.h. Operator. Als Value wird dann der Art des Operators angegeben. Wir haben cn verwendet, was contain bedeutet (bei Eingabe von Müller wird also auch Müllerlein, Obermüller etc. gefunden). Wir hätten auch eq für equal verwenden können (dann würen wirklich nur Müller gefunden worden). Für den Ankunftstag finden Sie als Operator gte, welches "größer gleich als" bedeutet. Wenn also ein Ankunftstag eingegeben wird, werden alle aufgelistet, die ab diesem Tag angekommen sind (das entsprechende Ankunftstag-Feld muss in der Datenbank als Datumsfeld charakterisiert sein, damit dieser Operator verwendet werden kann).

Na, war doch gar nicht schwer. Sehen Sie sich nochmals den Code durch, bevor wir uns ansehen, wie wir ein Suchergebnis-Templat erstellen.

<FORM ACTION="http://www.webservername.de:591/FMPro" METHOD="post">
<INPUT TYPE="hidden" NAME="-DB" VALUE="Gaesteliste">
<INPUT TYPE="hidden" NAME="-Lay" VALUE="detail">
<INPUT TYPE="hidden" NAME="-format" VALUE="search_results.htm">
<INPUT TYPE="hidden" NAME="-error" VALUE="search_error.htm">
<INPUT TYPE="hidden" NAME="
-SortField" VALUE="Ankunftstag">
<INPUT TYPE="hidden" NAME="
-SortORder" VALUE="Ascending">
<INPUT TYPE="hidden" NAME="
-SortField" VALUE="Gastnachname">
<INPUT TYPE="hidden" NAME="
-SortORder" VALUE="Ascending">
<INPUT TYPE="hidden" NAME="
-max" VALUE="20">
<INPUT TYPE="hidden" NAME="-
lop" VALUE=AND></P>


<P ALIGN=right>Gastnachname:</P>
<P><INPUT TYPE="hidden" NAME="
-op" VALUE=cn>
<INPUT TYPE=text NAME=Gastnachname VALUE="" SIZE=30></P>

<P ALIGN=right>aus Ort:</P>
<P><INPUT TYPE="hidden" NAME="
-op" VALUE=cn>
<INPUT TYPE=text NAME=Ort VALUE="" SIZE=30></P>

<P ALIGN=right>von Land:</P>
<P><INPUT TYPE="hidden" NAME="
-op" VALUE=cn>
<INPUT TYPE=text NAME=Land VALUE="" SIZE=30></P>

<P ALIGN=right>Ankunftstag:</P>
<P><INPUT TYPE="hidden" NAME="
-op" VALUE=gte>
<INPUT TYPE=text NAME=Ankunftstag VALUE="" SIZE=30></P>

<INPUT TYPE="submit" NAME="
-Find" VALUE="Suche starten">
<INPUT TYPE="submit" NAME="
-FindAll" VALUE="alle aufrufen">
<INPUT TYPE=reset VALUE="Reset this form">
</FORM>

Hinweis: Als fortgeschrittenes Feature könnte man z.B. für das Suchfeld Land alle in der Datenbank bereits eingetragenen Länder als Popup-Menu zur Verfügung stellen. Damit müsste bereits beim Aufrufen der Suchabfrageseite auf die entsprechende Datenbank und das entsprechende Datenbankfeld zugegriffen werden und dessen Inhalt (aller Datensätze) in ein Popup-Menu eingelesen werden. Technisch ist dies ohne weiteres machbar (die Erklärung würde jedoch hier zu weit führen, siehe Modul 9.3.2d). Damit müsste aber bereits beim Aufruf der html-Suchseite klar sein, auf welche Datenbank wir zugreifen. Ein entsprechender Link zur Suchseite sähe dann z.B. folgendermaßen aus:

<a href="http://www.webservername.de:591/FMPro?-db=Gaesteliste&-lay=detail&-format=search.htm&-view">durchsuchen Sie unsere G&auml;steliste!</a>

Damit wird quasi als vordefinierte Abfrage bereits eine Seite aufgerufen, die via des o.a. "Query Strings" zu Teilen aus von einer Datenbanken ausgelesenen Einträgen besteht. Näheres siehe Modul 9.3.2.d

Sind keine derartigen Vorabzugriffe nötig, würde folgendes wie üblich genügen:
<a href="http://www.webservername.de/search.htm">durchsuchen Sie unsere G&auml;steliste!</a> (oder ggf. ein anderer Pfad).

Wie stellen wir nun die Suchergebnisse zur Verfügung? (>> nächste Seite)


>> Modul 9.3.2c: Darstellung von Suchergebnissen aus Datenbankabfragen

<< Modul 9.3.2a: Datensatzgenerierung via Web