FileMaker® API for PHP-Lehrgang

Inhalt

Einführung
Lektion 1
Lektion 2
Lektion 3
Lektion 4
Lektion 5
Lektion 6

Einführung

Willkommen beim FileMaker API for PHP-Lehrgang!

Dieser Lehrgang zeigt Ihnen die wichtigsten Funktionen des FileMaker API for PHP. Der Lehrgang besteht aus 6 Lektionen, die Ihnen zeigen, wie Sie das API in eine FileMaker Pro-Datenbank mit einer PHP-Web-Anwendung integrieren. Jede Lektion stellt eine spezielle Fähigkeit des API vor und erläutert die Programmierung und die Funktionsweise.

Die Datenbank für den Lehrgang ist ein FileMaker-Fragebogensystem (questionnaire.fp7). Jeder Fragebogendatensatz kann mehrere Fragen enthalten. Jede Frage kann mehrere Antworten enthalten. Nur ein Fragebogen wird jeweils als der aktive Fragebogen ausgewählt. Der aktive Fragebogen ist der Fragebogen, zu dem Benutzer eingeladen werden, wenn die PHP-Web-Anwendung verwendet wird. Wenn ein Benutzer einen Online-Fragebogen ausfüllt, fügt das System einen Respondent-Datensatz für den Benutzer hinzu und speichert die Antworten des Benutzers in Bezugsdatensätzen.

Der Lehrgang baut eine PHP-Web-Anwendung schrittweise auf, wobei jede Lektion auf den vorhergehenden wie folgt beruht:

Der Lehrgang deckt nicht alle Bereiche des API ab. Nachdem Sie diese Lektionen durchgearbeitet haben, verfügen Sie jedoch über eine gute Grundlage. Weitere Informationen zu dem API finden Sie in der FileMaker API for PHP-Dokumentation.

Um die FileMaker API for PHP-Dokumentation anzuzeigen, wechseln Sie auf die Startseite der FileMaker Server Admin-Konsole und klicken auf "PHP-Site-Assistent und XSLT-Site-Assistent". Klicken Sie auf der Seite "Web Publishing-Tools" auf "FileMaker API for PHP-Dokumentation". Verwenden Sie die Dokumentation als Referenz, während Sie diesen Lehrgang durcharbeiten. Diese Referenz hilft Ihnen, die weiteren Funktionen des FileMaker API for PHP zu entdecken.

Sie sollten sich auch mit der Datenbank questionnaire.fp7 vertraut machen. Sehen Sie sich an, wie sie funktioniert und wie Fragebögen durch die Anlage von Fragen mit mehreren Antworten aufgebaut werden. Ihre Erkenntnisse zur Gestaltung der Datei questionnaire.fp7 stellen einen wesentlichen Bestandteil dar, um zu verstehen, wie die PHP-Anwendung im Lehrgang das API nutzt.

Erste Schritte

Einrichtung und Installation

FileMaker Server 9 muss installiert sein und die Datenbank questionnaire.fp7 muss bereitgestellt sein. Der Lehrgangsordner muss auf dem Web-Server-Rechner, der Teil Ihres FileMaker Server-Einsatzes ist, bereitgestellt werden.

Weitere Informationen zu Installation und Einsatz von FileMaker Server 9 finden Sie im Handbuch FileMaker Server Einführung. Weitere Informationen über das FileMaker API for PHP finden Sie in FileMaker Server Custom Web Publishing mit PHP.

Empfohlene Kenntnisse

Sie sollten mit der Programmierung mit HTML vertraut sein. Hierzu gehören HTML-Deklarationen, Header und Elementmarken. Weitere Informationen zur Programmierung von Web-Seiten mit HTML finden Sie unter XHTML Tutorial der W3Schools.

Sie sollten mit der Programmierung von PHP vertraut sein. Hierzu zählen Standardausgabe, Variablen, Arrays, bedingte Schleifen, Objekte, Methoden und Funktionen. Weitere Informationen zur Programmierung mit PHP finden Sie unter PHP Tutorial der W3Schools.

Sie sollten über Erfahrung im Umgang mit einem Texteditor für HTML und PHP verfügen. Dieser Lehrgang erfordert die Verwendung eines Texteditors für die Darstellung und Bearbeitung von HTML- und PHP-Code.

Sie sollten über Grundkenntnisse in der Datenbankgestaltung mit FileMaker verfügen. Hierzu zählen Felder, Beziehungen, Layouts, Ausschnitte und Medienfelder. Weitere Informationen über die Gestaltung von Datenbanken mit FileMaker Pro finden Sie in der FileMaker Pro-Dokumentation.

Empfohlene Vorgehensweisen

Wenn Sie Datensätze in FileMaker Pro bearbeiten, denken Sie daran, den Datensatz zu verlassen bzw. zu bestätigen, um die Änderungen durchzuführen. Web-Seiten stellen in die Datenbank eingegebene Änderungen erst dar, wenn der Datensatz verlassen wird.

Um die PHP-Seiten für die einzelnen Lektionen in Ihrem Webbrowser anzuzeigen, müssen Sie den vollständig qualifizierten URL angeben, damit der PHP-Code ausgeführt wird. Wenn die Dateien zum Beispiel auf einem lokalen Rechner bereitgestellt werden, verweisen Sie Ihren Browser auf einen URL, der mit "http://localhost/..." beginnt. Verwenden Sie nicht den lokalen Dateipfad, der mit "file:///Volumes/..." beginnen könnte. Wenn Sie einen URL mit "file://" verwenden, erreichen Sie die Darstellung des PHP-Codes, nicht seine Ausführung. Stellen Sie stets sicher, dass der URL mit "http" oder "https" beginnt, falls Sie SSL auf Ihrem Web-Server eingerichtet haben.

Lektion 1

Ziel

Lektion 1 beschreibt die Grundlagen für die Verwendung des FileMaker API for PHP in zwei PHP-Dateien: home.php und dbaccess.php. Die Datei home.php dient als Webbrowser-Startpunkt, die Datei dbaccess.php richtet ein FileMaker-Objekt ein, das die Datenbank darstellt. Diese Seiten erläutern die grundlegenden Schritte für die Instanziierung des FileMaker-Datenbankobjekts, die Festlegung der wichtigen Eigenschaften und die Durchführung einer Suche in der Datenbank questionnaire.fp7.

Start

Um das Lehrgangsbeispiel anzuzeigen, verweisen Sie Ihren Webbrowser auf home.php im Ordner "Lesson1". Diese Seite zeigt den Willkommensbildschirm für das FileMaker-Fragebogensystem. Wenn die Seite lädt, erfolgt eine versteckte Verbindung zwischen PHP und der Web Publishing Engine, die in einem gefundenen Datensatz aus der Datenbank questionnaire.p7 resultiert.

Öffnen Sie die Datei home.php im Ordner "Lesson1" mit Ihrem Texteditor. Suchen Sie den folgenden Code direkt nach der body-Marke.

<?php include ("dbaccess.php"); ?>

Diese PHP-Anweisung schließt die Datei dbaccess.php ein bzw. lädt sie. Die Datei dbaccess.php enthält Funktionen, die das FileMaker-Datenbankobjekt einrichtet und für die Datenbankvorgänge vorbereitet. Daher funktionieren API-Methoden in home.php nicht ohne sie. Zwar hätten die Methoden in dbaccess.php auch in der Datei home.php programmiert werden können, sie wurden jedoch für ein vereinfachtes Debugging und vereinfachte Wartung getrennt.

Das FileMaker-Datenbankobjekt einrichten

Die Datei dbaccess.php enthält Programmcode für die Einrichtung des FileMaker-Datenbankobjekts. Sie spielt eine fundamentale Rolle beim Aufbau der Fragebogenanwendung. Folgen Sie diesen Schritten, um das FileMaker-Objekt einzurichten:

  1. Laden Sie das FileMaker API for PHP.
  2. Weisen Sie eine Instanz der FileMaker-Datenbankklasse einer Variable zu.
  3. Legen Sie die Schlüsseleigenschaften für die neue FileMaker-Instanz fest.

Öffnen Sie die Datei dbaccess.php im Ordner "Lesson1" mit Ihrem Texteditor und folgen Sie den einzelnen Schritten unten.

1. Laden Sie das FileMaker API for PHP.

Um das FileMaker API zu verwenden, muss es zuerst in den PHP-Speicher geladen werden. Dies geht über die require-Anweisung.

require_once ('FileMaker.php');

Nachdem es geladen ist, können Sie Instanzen der FileMaker-Datenbankklasse erstellen und für die Datenbankverbindungen in Ihrer Web-Anwendung verwenden. Ein Versuch, das API zu verwenden, ohne es zuerst zu laden, erzeugt einen Fehler.

2. Weisen Sie eine Instanz der FileMaker-Datenbankklasse einer Variable zu.

Eine Instanz der FileMaker-Datenbankklasse muss erstellt werden, bevor sie verwendet werden kann. Sie muss zudem einer Variablen zugewiesen werden, um sie im Code zu referenzieren.

$fm = new FileMaker();

Der obige Code erstellt eine Instanz des FileMaker-Datenbankobjekts. Es wird als Variable $fm referenziert.

3. Legen Sie die Schlüsseleigenschaften für die neue FileMaker-Instanz fest.

Das FileMaker-Datenbankobjekt verfügt über ein Set an Eigenschaften, die jederzeit festgelegt werden können. Einige Eigenschaften müssen jedoch festgelegt werden, bevor Datenbankvorgänge erfolgen. Hier ist der Code, der die für diesen Lehrgang erforderlichen Eigenschaften festlegt.

$fm->setProperty('database', 'questionnaire');
$fm->setProperty('username', 'web');
$fm->setProperty('password', 'web');

Hinweis - Der Datenbankname questionnaire benötigt die Erweiterung fp7 nicht im Parameter.

Hinweis - In der FileMaker API for PHP-Dokumentation finden Sie eine Liste der FileMaker-Datenbankklasse-Eigenschaften und ihrer Beschreibungen.

Die Datei dbaccess.php enthält nur sehr wenig Programmcode, bereitet das FileMaker-Objekt jedoch für die Verwendung effektiv vor. Nachdem die Datei geladen ist, kann das FileMaker-Objekt als Variable $fm verwendet werden und die Schlüsseleigenschaften sind auf die erforderlichen Werte festgelegt. Die Datei dbaccess.php versetzt die Datei home.php in die Lage, mit der Datenbank questionnaire.fp7 zu kommunizieren.

Suchen, Alle suchen

Die Datei home.php führt zwei Datenbankvorgänge durch: Alle suchen (Alle Datensätze anzeigen) und Suchen. Um den Code für diese Vorgänge anzuzeigen, öffnen Sie die Datei home.php in Ihrem Texteditor. Um die Datenbank für diese Vorgänge anzuzeigen, öffnen Sie die Datei questionnaire.fp7, die auf FileMaker Server bereitgestellt wird.

1. Alle suchen (Alle Datensätze anzeigen)

Die Datenbank questionnaire.fp7 enthält ein Layout Active Questionnaire. Dieses Layout dient als Schnittstelle. Es enthält nur einen Datensatz in der Tabelle. Auf diesem Layout wählen die Benutzer, welcher Fragebogen der aktive Fragebogen ist. Die Web-Anwendung muss die ID dieses aktiven Fragebogens abrufen.

Die Aktive-Fragebogen-ID wird durch Ausführung von "Alle suchen (Alle Datensätze anzeigen)" im Layout Active Questionnaire abgerufen. Dieser Vorgang verwendet das Befehlsobjekt FileMaker_Command_FindAll.

Hinweis - In der FileMaker API for PHP-Dokumentation finden Sie eine Liste der Befehlsobjekte und ihrer Methoden.

Eine Instanz des Objekts FileMaker_Command_FindAll wird erstellt, indem $fm (FileMaker-Datenbankinstanz) seine Methode newFindAllCommand() ausführt und (in Klammern) den Namen des Layouts Active Questionnaire angibt. Das Layout legt fest, welches Tabellenauftreten verwendet wird (Kontext) und welche Felder zurückgegeben werden (Ergebnisse).

Die Instanz FileMaker_Command_FindAll muss einer Variablen wie in folgendem Beispiel zugewiesen werden.

$findCommand = $fm->newFindAllCommand('Active Questionnaire');

Der obige Code weist ein neues Objekt FileMaker_Command_FindAll der Variable $findCommand zu. Der Befehl "Alle suchen" wird mit der Methode execute() ausgeführt. Die Suchergebnisse müssen einer Variablen zugewiesen werden.

$result = $findCommand->execute();

Nach der Ausführung eines Befehls kann eventuell ein Fehler auftreten. Wenn ein Fehler auftritt (oder keine passenden Datensätze gefunden werden), wird die Variable $result einem FileMaker_Error-Objekt zugewiesen. Verwenden Sie den folgenden Code, um auf das FileMaker_Error-Objekt zu prüfen. Die Fehlermeldung wird mit der Methode getMessage() angezeigt.

if (FileMaker::isError($result)) {
    echo "<p>Fehler: " . $result->getMessage() . "</p>";
    exit;
}

Wenn kein Fehler auftritt, enthält die Variable $result ein Array der Objekte FileMaker_Record, eines für jeden Datenstz in der Ergebnismenge. Verwenden Sie die Variable $result, um den ersten Datensatz im Alle-suchen-Ergebnis abzurufen. Da PHP-Arrays standardmäßig numerisch indiziert werden, können Sie den ersten Datensatz über den folgenden Code abrufen.

$record = $records[0];

Diese Code weist ein FileMaker_Record-Objekt, das den ersten Datensatz in der Ergebnismenge enthält, der Variablen $record zu. Sie können den Inhalt der questionnaire_id aus diesem Datensatz mit der Methode getField() abrufen. Die Ergebnisse der Methode getField() müssen einer Variablen zugewiesen werden.

$active_questionnaire_id = $record->getField('questionnaire_id');

Diese Variable enthält jetzt die ID des aktiven Fragebogens. Der nächste Schritt verwendet diese Variable als Parameter in der nächsten Suche.

Hinweis - In der FileMaker API for PHP-Dokumentation finden Sie eine Liste der Objekte und ihrer Methoden.

2. Suchen

Da Sie jetzt die ID des aktiven Fragebogens kennen, können Sie sie verwenden, um den Fragebogendatensatz zu suchen. Der Code für die Durchführung dieses Vorgangs befindet sich relativ weit unten in der Datei home.php. Dieser Vorgang verwendet das Befehlsobjekt FileMaker_Command_Find.

Eine Instanz des Objekts FileMaker_Command_Find wird erstellt, indem $fm (FileMaker-Datenbankinstanz) seine Methode newFindCommand() ausführt und (in Klammern) den Namen des Layouts Active Questionnaire angibt. Das Layout legt fest, welches Tabellenauftreten in der Suche verwendet wird und welche Felder zurückgegeben werden.

Die Instanz FileMaker_Command_Find muss einer Variablen wie in folgendem Beispiel zugewiesen werden.

$findCommand =& $fm->newFindCommand('questionnaire');

Um der Suche Kriterien hinzuzufügen, verwenden Sie die Methode addFindCriterion(). Die Methode addFindCriterion() akzeptiert zwei Parameter: fieldName und searchParameter. Übergeben Sie den Feldnamen "Questionnaire ID" (wie in FileMaker Pro definiert) und die Variable $active_questionnaire_id als Parameter.

$findCommand->addFindCriterion('Questionnaire ID', $active_questionnaire_id);

Hinweis - Die Methode addFindCriterion() kann mehrfach aufgerufen werden und das logische UND simulieren, das auftritt, wenn mehrere Suchkriterien in eine einzige Suchabfrage in FileMaker Pro eingegeben werden.

Nachdem die Suchkriterien hinzugefügt wurden, wird die Methode execute() verwendet, um die Suche durchzuführen. Die Ergebnisse der Methode execute() müssen einer Variablen zugewiesen werden.

$result = $findCommand->execute();

Die Variable $result enthält jetzt ein Array von FileMaker_Record-Objekten. Da die Suche für das Layout questionnaire durchgeführt wurde, enthält jeder Datensatz in $result die Werte für jedes Feld im Layout questionnaire.

Der letze Code auf dieser Seite verwendet PHP-Echo-Anweisungen und die Methode getField(), um die Felder Questionnaire Name und Description auf der Seite home.php auszugeben.

Lektion 2

Ziel

Lektion 2 behandelt den für die Anzeige von FileMaker Pro-Medienbildern im Web erforderlichen Code. Wenn Sie Web-kompatible Bilder in einer FileMaker Pro-Datenbank speichern, können Sie das FileMaker API for PHP verwenden, um diese Bilder abzurufen und auf Ihrer Website anzuzeigen.

Start

Öffnen Sie die FileMaker API-Lehrgangsdatenbank questionnaire.fp7 und stellen Sie sicher, dass der aktive Fragebogen ein Web-kompatibles Bild im Medienfeld besitzt. Zeigen Sie als Nächstes das PHP-Lehrgangsbeispiel an, indem Sie die Lesson2-Datei home.php in Ihrem Webbrowser anzeigen. Beachten Sie, dass die Seite das Bild des aktiven Fragebogens anzeigt. Versuchen Sie, das Medienbild in der FileMaker-Datenbank zu ändern. Stellen Sie sicher, dass Sie den Datensatz verlassen, wenn Sie fertig sind. Aktualisieren Sie Ihren Browser und beachten Sie, wie die Website das neue Bild aktualisiert.

Medienbild anzeigen

Um zu sehen, wie das API für diesen Vorgang verwendet wird, öffnen Sie die Datei home.php im Ordner "Lesson2". Sehen Sie sich die letzten PHP-Anweisungen in der Datei an und achten Sie besonders auf die Marke <img> (Bild) und ihre src- (Quelle) Attribute.

Bitte beachten Sie die folgenden Punkte zu dieser Technik.

  1. Das Medienfeld Graphic befindet sich im Layout questionnaire (das Layout der vorherigen Suche). Denken Sie daran, dass nur Werte von Feldern auf dem Layout, das für die Suche verwendet wird, an das API zurückgegeben werden.
  2. Der zurückgegebene Wert des Felds Graphic ist kein Bild, sondern ein spezieller URL, der das Bild von der Web Publishing Engine anfordert.

echo '<img src="ContainerBridge.php?path=' . urlencode($record->getField('Graphic')) . '">';

Da eine HTML-Marke <img> (Bild) einen Dateipfad als sein src- (Quelle) Attribut benötigt, verwendet diese Lektion eine eigene Datei, um das Bild tatsächlich abzurufen. Die Datei, die das Medienbild abruft, heißt ContainerBridge.php. Ihr Dateiname erscheint im src- (Quelle) Attribut der Marke <img> (Bild).

Die Datei ContainerBridge.php weiß nicht, welches Bild Sie anzeigen wollen. Um das Bild anzugeben, müssen Sie den Feldwert Graphic an das Ende des src- (Quelle) URL anhängen. In HTML wird das als GET-Methode bezeichnet.

Verwenden Sie das Paar name/value, beginnen Sie mit einem Fragezeichen und hängen Sie die gewünschte Zeichenfolge an. Der Name wird auf "path" und Wert auf das Methodenergebnis getField() gesetzt. Der Name des Medienfelds (Graphic) wird in Klammern übergeben.

Hinweis - Das Ergebnis getField() wird an die PHP-Funktion urlencode() übergeben, um sicherzustellen, dass Sonderzeichen für einen URL richtig kodiert werden.

ContainerBridge.php verwenden

Öffnen Sie die Datei ContainerBridge.php im Ordner "Lesson2" mit Ihrem Texteditor. Dieses einfache Script verwendet die FileMaker_Record -Methode getContainerData(), um das tatsächliche Bild abzurufen.

Damit getContainerData() funktioniert, müssen Sie die Feldergebnisse von getField() (eines Medienfelds) an die Methode getContainerData() in Klammern übergeben. In home.php wird das Ergebnis von getField() für das Feld Graphic über den URL übergeben. In ContainerBridge.php wird das Ergebnis von dem URL über das Element path des $_GET-Arrays angerufen und an die Methode getContainerData() übergeben.

echo $fm->getContainerData($_GET['path']);

Die Datei ContainerBridge.php ruft einfach den Pfad des angegebenen Bilds von der FileMaker Pro-Datenbank ab, so dass die Datei home.php die Marke <img> verwenden kann, um das Bild im Webbrowser anzuzeigen.

Hinweis - In der FileMaker API for PHP-Dokumentation finden Sie eine Liste der FileMaker_Record-Objektmethoden.

Lektion 3

Ziel

Lektion 3 behandelt den Code für die Erstellung eines dynamischen Web-Formulars mithilfe von FileMaker-Layoutobjekten. Zudem wird der Code besprochen, der für das Hinzufügen eines neuen FileMaker-Datensatzes von einem Web-Formular aus erforderlich ist. Diese Lektion verwendet zwei zusätzliche PHP-Dateien: Respondent.php und handle_form.php. Die Datei Repondent.php dient dazu, ein Web-Formular dynamisch zu generieren, während die Datei handle_form.php verwendet wird, um Formulareinträge zu validieren und in die Datenbank questionnaire.fp7 als neuen Datensatz einzugeben.

Start

Öffnen Sie die Fragebogen-Website, indem Sie die Datei home.php im Ordner "Lesson3" in Ihrem Webbrowser anzeigen. Diese Version der Seite zeigt eine Schaltfläche Continue an, damit Sie die Fragebogen-Anwendung starten können. Wenn Sie auf die Schaltfläche "Continue" klicken, werden Sie auf die Datei Respondent.php umgeleitet. Geben Sie Ihre Daten in das Web-Formular ein und klicken Sie auf Submit. Versuchen Sie es ggf. erneut, falls Sie nicht ausreichend Daten eingegeben haben. Wenn Ihr Formular erfolgreich validiert wird, sehen Sie die Meldung "Thank you" und die von Ihnen eingegebenen Daten werden der Datenbank questionnaire.fp7 als neuer Datensatz hinzugefügt.

Wertelisteneinträge abrufen

Um zu sehen, wie diese Anwendung funktioniert, öffnen Sie die Seite Respondent.php in Ihrem Texteditor. Beachten Sie, dass die Datei dbaccess.php nahe des Beginns enthalten ist. Wie in Lektion 1 besprochen stellt diese Include-Anweisung sicher, dass Sie eine Instanz der FileMaker-Datenbankklasse besitzen und dass die Instanz als Variable $fm verwendet werden kann.

Achten Sie auf das Optionsfelder-Formularelement Respondent.php mit dem Namen "prefix". Dieses Element leitet seinen Wert aus der FileMaker Pro-Datenbank questionnaire.fp7 ab, indem es die Werteliste gleichen Namens verwendet. Diese Technik ermöglicht Ihnen, ein dynamisches Formularelement basierend auf einer Werteliste, die in der FileMaker-Datenbank definiert ist, aufzubauen. So müssen Sie den PHP-Code nicht jedes Mal aktualisieren, wenn sich die Werteliste in der Datenbank ändert. Diese Technik ist in den folgenden Schritten implementiert:

  1. Rufen Sie ein Layoutobjekt über die Methode getLayout() ab. (Übergeben Sie den Layoutnamen in Klammern.)
  2. Rufen Sie die Werteliste über die Methode getValueList() ab.
  3. Gehen Sie mit einer Schleife durch das Array von Werten und geben Sie jeden als Optionsfeld aus.
Wenn Sie diese Technik verwenden, denken Sie daran, dass das angegebene Layout ein Feld enthalten muss, das durch die angegebene Werteliste formatiert ist. Wenn eine Werteliste mit der Methode getValueList() angefordert wird und die Werteliste nicht für ein Feld auf dem Layout formatiert wurde, das mit getLayout() angegeben wurde, wird ein Fehler erzeugt. Hier ist der Code, der verwendet wird, um die dynamischen Optionsfelder anzuzeigen.

$layout =& $fm->getLayout('Respondent');
$values = $layout->getValueList('prefixes');
foreach($values as $value){
      echo '<input type= "radio" name= "prefix" value= "'. $value .'">' . $value . ' ';
}

Hinweis - In der FileMaker API for PHP-Dokumentation finden Sie eine Liste der FileMaker_Layout-Objektmethoden.

Hinweis - Das Formular in Respondent.php enthält auch einige versteckte Formularelemente. Eines mit dem Namen "active_questionnaire_id" enthält die Fragebogen-ID aus home.php. Dieses Formular übergibt die ID in handle_form.php. Hier wird es in Lektion 4 verwendet.

Neuen Datensatz hinzufügen

Wenn das Formular Respondent.php die Daten gesendet hat, werden die Werte an die Aktionsseite handle_form.php über die POST-Methode übergeben. Öffnen Sie die Datei handle_form.php im Ordner "Lesson3" mit Ihrem Texteditor.

Beachten Sie, dass die vom Benutzer abgeschickten Daten in ein Array zusammengefasst und der Variablen $respondent_data zugewiesen werden. In diesem assoziativen Array ist der Schlüssel für jedes Element der exakte Name des FileMaker-Felds, in dem die Daten gepostet werden. Der Wert jedes Elements entspricht den Werten, die vom HTML-Formularelement innerhalb des $_POST-Arrays gesendet wurden. Das Array $respondent_data wird durch das FileMaker-Objekt verwendet, wenn der Datenbankdatensatz erstellt wird.

Nach Assemblierung des Daten-Array führt der PHP-Code einige einfache Validierungsprüfungen durch. Diese Validierungsmethoden verwenden explizit PHP-Code. Während dieses Vorgangs wird keine Validierung durch FileMaker Server durchgeführt.

Nachdem die Benutzerdaten die Validierung bestanden haben, wird in zwei einfachen Schritten ein neuer Datensatz erstellt:

  1. Erstellen Sie ein neues FileMaker_Command_Add-Objekt und übergeben Sie zwei Parameter:
    • Layoutname (Das Layout muss über die erforderlichen Felder verfügen.)
    • Daten-Array ($respondent_data)
  2. Fügen Sie den Datensatz mit der Methode execute() hinzu.

$newRequest =& $fm->newAddCommand('Respondent', $respondent_data);
$result = $newRequest->execute();

Denken Sie daran, dass Sie bei der Erstellung eines neuen FileMaker_Command_Add-Objekts den Namen des Layouts angeben. Der Layoutname legt fest, welches Tabellenauftreten verwendet wird (Kontext) und welche Felder zurückgegeben werden (Ergebnisse). Die Felder für die Eingabe der Daten müssen sich auf dem Layout befinden.

In Lektion 4 wird die Seite handle_form.php erweitert, um den hinzugefügten Datensatz zu verwenden und die erste Frage anzuzeigen.

Lektion 4

Ziel

Lektion 4 behandelt den erforderlichen Code, um einen FileMaker-Datensatz über seine ID und seine Bezugsdatensätze aus einem Ausschnitt abzurufen. Ausschnitte sind leistungsstarke Steuerelemente, die in FileMaker Pro-Lösungen eingesetzt werden. Das FileMaker API for PHP besitzt spezielle Methoden für die Arbeit mit Ausschnittdaten. Diese Lektion stellt einige dieser Funktionen vor.

Start

Öffnen Sie die FileMaker Pro-Datenbank questionnaire.fp7, die von FileMaker Server bereitgestellt wird. Klicken Sie auf die Schaltfläche Fragebogen bearbeiten und stellen Sie sicher, dass der aktive Fragebogen über mindetens einen Datensatz im Ausschnitt Frage verfügt. Öffnen Sie dann die Lektion4-Datei home.php in Ihrem Webbrowser. Wählen Sie die Schaltfläche Continue und geben Sie die Informationen zum Antwortenden ein.

Als Nächstes werden Sie aufgefordert, mit der ersten Frage des aktiven Fragebogens zu beginnen. Öffnen Sie die FileMaker Pro-Datenbank questionnaire.fp7 erneut. Suchen Sie die erste Frage des aktiven Fragebogens. Versuchen Sie, den ersten Fragetyp zu ändern. Klicken Sie auf die Schaltfläche Antworten bearbeiten und fügen Sie mögliche Antworten hinzu. Aktualisieren Sie Ihren Webbrowser, um die aktualisierte Frage anzuzeigen.

Diese Lektion stellt zwei neue Aufgaben vor, die Sie durchführen können: Rufen Sie einen Datensatz durch seine ID auf und rufen Sie eine Menge von Bezugsdatensätzen aus einem Ausschnitt ab.

Datensatz nach ID suchen

Öffnen Sie die Datei handle_form.php im Ordner "Lesson4" mit Ihrem Texteditor. Blättern Sie ein Drittel in der Datei nach unten bis zu der Stelle, an der die Datei handle_form.php in Lektion 3 endete. Beachten Sie, dass die Lektion Code hinzufügt, der das Datensatzobjekt des neuen Antwortendendatensatzes abfragt. Diese Anfrage ist notwendig, da das Feld Respondent ID mit der Option Autom. fortlaufende Nummer in FileMaker Pro definiert ist. Und Sie müssen die Zahl Autom. Eingabe abrufen.

Wie mit den Suchen-Funktionen in Lektion 1, kann ein neuer Datensatz abgerufen werden, indem Sie die Methoden getRecord() und getField() verwenden.

$records = $result->getRecords();
$record = $records[0];
$respondent_recid = $record->getField('Respondent ID');

Die nächste Aufgabe besteht im Abruf des aktiven Fragebogennamens. Verwenden Sie hierzu die Methode getRecordById() der FileMaker-Instanz ($fm).

Wenn Sie getRecordById() verwenden, übergeben Sie die interne FileMaker-Datensatz-ID und den Namen des Layouts. Das Layout legt fest, welches Tabellenauftreten verwendet wird (Kontext) und welche Felder zurückgegeben werden (Ergebnisse). Der Code auf dieser Seite übergibt active_questionnaire_id des $_POST-Array, das an diese Datei aus dem Antwortendenformular von Respondent.php gesendet wurde.

$active_questionnaire_id = $_POST['active_questionnaire_id'];
$active_questionnaire = $fm->getRecordById('questionnaire',$active_questionnaire_id);
$questionnaire_name = $active_questionnaire->getField('Questionnaire Name');

Hinweis - Jedes Datensatzobjekt aus einem API-Vorgang enthält die interne FileMaker-Datensatz-ID, die über die Methode getRecordId() abgerufen werden kann.

Die nächste Aufgabe besteht im Abruf der Fragebogendatensätze und zeigt die erste Frage an. Suchen Sie nach allen Fragen, die der aktive_fragebogen_id entsprechen. Diese Suche wird über das Layout "Questions" durchgeführt.

$findCommand =& $fm->newFindCommand('Questions');
$findCommand->addFindCriterion('Questionnaire ID', $active_questionnaire_id);
$result = $findCommand->execute();
$records = $result->getRecords();
$question = $records[0];

Bezugsmenge abrufen

Die Fragebogendatenbank wurde so konzipiert, dass jede Frage einen bestimmten Fragetyp darstellt (zum Beispiel text, radio und checkbox). Wenn es sich bei dem Typ um eine Multiple-Choice-Antwort handelt, können für jede Frage mehrere Antworten ausgewählt werden. Das Layout Questions enthält einen Ausschnitt, der mögliche Antworten anzeigt. Wenn eine Frage eine oder mehrere Antworten besitzt, zeigt der folgende Code die Antwortmöglichkeiten über den angegebenen "Typ" an.

Nehmen Sie für dieses Beispiel an, dass die Frage den Typ radio hat. Scrollen Sie im Dokument handle_form.php nach unten. Sie sehen die Bedingung else if, die auf die Fragetypen radio oder ranking prüft.

else if ($question_type =="radio" || $question_type =="ranking")

Wenn die Bedingung wahr ist, ruft der folgende Code die zugehörigen Antwortmöglichkeiten ab und zeigt sie als Optionsfelder-Elemente an. Antwortdatensätze aus dem Ausschnitt können über die Methode getRelatedSet() des FileMaker_Record-Objekts abgerufen werden.

Beim Aufruf der Methode getRelatedSet() muss der Name der Bezugstabelle in Klammern übergeben werden und der definierte Ausschnitt mit dieser Beziehung muss sich auf dem beim Abruf des Datensatzes $question verwendeten Layout befinden.

$relatedSet = $question->getRelatedSet('question_answers');

Die Variable $relatedSet enthält jetzt ein Array von Datensatzobjekten aus dem Bezugsausschnitt. Gehen Sie mit einer Schleife durch das Array und geben Sie die Feldwerte für jeden gefundenen Datensatz aus.

foreach ($relatedSet as $relatedRow)
{
    $possible_answer = $relatedRow->getField('question_answers::answer');
    echo '<input type= "radio" name= "radio_answer" value= "'. $possible_answer .'">' . $possible_answer . '<br/>';
}

Sie hätten die Bezugsdatensätze auch über eine Suche abrufen können, die Verwendung von getRelatedSet() mit einem Ausschnitt, der bereits die Bezugsmenge enthielt, ist jedoch wesentlich einfacher.

Lektion 5

Ziel

Lektion 5 bespricht den erforderlichen Code, um Bezugsdatensätze hinzuzufügen. Wenn Sie auf einem Layout einen Ausschnitt definiert haben, der die Erstellung von Bezugsdatensätzen erlaubt, können Sie das FileMaker API for PHP verwenden, um Bezugsdatensätze aus dem Web hinzuzufügen.

Start

Öffnen Sie Ihren Webbrowser für die Seite home.php, die im Verzeichnis "Lesson5" bereitgestellt wird. Klicken Sie auf die Schaltfläche Continue und beantworten Sie die Online-Umfrage. Öffnen Sie die FileMaker-Datenbank questionnaire.fp7, die von FileMaker Server bereitgestellt wird. Wählen Sie aus dem aktiven Fragebogen die Schaltfläche Review Responses und gehen Sie zum letzten Datensatz in der Tabelle. Dieser Datensatz enthält die Antwortendeninformationen, die Sie eingegeben haben. Jede Antwort wird als Datensatz im Ausschnitt Responses gespeichert.

Bezugsdatensatz hinzufügen (Ausschnittzeilen)

Das Hinzufügen von Ausschnittzeilen mit dem FileMaker API for PHP kann in vier Schritten erfolgen:

  1. Beginnen Sie mit einem gültigen Datensatzobjekt.
  2. Erstellen Sie einen neuen, leeren Datensatz.
  3. Fügen Sie den Feldern des neuen Datensatzes Daten hinzu (optional).
  4. Bestätigen Sie den neuen Datensatz.

Mit einem gültigen Datensatzobjekt beginnen

Öffnen Sie die Datei handle_form.php im Ordner "Lesson5" mit Ihrem Texteditor. Scrollen Sie nach unten und suchen Sie den Code, der den Antwortendendatensatz abruft:

$respondent_rec = getRespondentRecordFromRespondentID($respondent_recid);

Dieser Code verwendet eine Funktion, die der Datei dbaccess.php hinzugefügt wurde. Wenn Sie dbaccess.php in Ihrem Texteditor öffnen, sehen Sie die Definition dieser Funktion gegen Ende. Beachten Sie, dass die Methode newFindCommand() in der Funktionsdefinition das Layout Respondent für ihren Kontext verwendet.

$find = $fm->newFindCommand('Respondent');

Diese Funktion weist dem Antwortendendatensatz-Objekt der Variablen $respondent_rec zu. Die Variable wird mit dem Layout Respondent referenziert, da das Layout der Kontext des Suchbefehls war. Daher starten alle Methoden, die von der Variablen $respondent_rec verwendet werden, vom Kontext des Layouts Respondent.

Einen neuen, leeren Datensatz erstellen

Zurück in der Datei handle_form.php beginnt die nächste Codezeile, den neuen Bezugsdatensatz zu erstellen.

$new_response = $respondent_rec->newRelatedRecord('Responses');

Wenn diese Zeile ausgeführt wird, wird der Variablen $new_response ein leeres Datensatzobjekt zugewiesen (in der FileMaker-Datenbank wurde noch kein neuer Datensatz erstellt).

Der Kontext dieses Vorgangs ist besonders wichtig. Dieser Code beginnt von dem Layout des aufrufenden Datensatzobjekts (Responses) und gab die Beziehung eines Ausschnitts auf diesem Layout an. Dann hat der Code den Bezugstabellennamen an die Methode newRelatedRecord() übergeben.

Daten den Feldern des leeren Datensatzes Felder hinzufügen (optional)

Nachdem Sie einen neuen leeren Datensatz haben und wissen, zu welchem Ausschnittkontext der Datensatz gehört, können Sie beginnen, mit der Methode setField() einzugeben. Diese Methode akzeptiert zwei Parameter: field name und field value. Da es sich um einen Bezugsdatensatz handelt, muss der Feldname mit dem Beziehungsnamen ausgedrückt werden und der Feldname durch zwei Doppelpunkte getrennt werden.

$new_response->setField('Responses::Question ID', $cur_question);
$new_response->setField('Responses::Response', $translatedAnswer);

Nachdem Sie den neuen Bezugsdatensatz erstellt und Daten in die entsprechenden Felder eingegeben haben, können Sie den Eintrag jetzt bestätigen.

Hinweis - Es ist nicht nötig, die Felddaten zu setzen, bevor Sie einen neuen leeren Datensatz bestätigen.

Den neuen Datensatz bestätigen

Neue Datensatzobjekte werden erst in der FileMaker-Datenbank erstellt, wenn sie bestätigt wurden. Die Methode commit() fügt das Objekt FileMaker_Record in die FileMaker-Datenbank questionnaire.fp7 ein.

$result = $new_response->commit();

Die Variable $result wird jetzt dem FileMaker_Record-Objekt des neuen Datensatzes zugewiesen und der neue Datensatz wurde in der FileMaker-Datenbank erstellt. Falls ein Fehler auftritt, enthält die Variable $result ein FileMaker_Error-Objekt. Es empfiehlt sich, nach der Ausführung der Methode commit() auf Fehler zu prüfen.

Lektion 6

Ziel

Lektion 6 bespricht den erforderlichen Code für die Anzeige von Bezugsfeldern in einem Ausschnitt. Ferner erhalten Sie grundlegende Hinweise zur Verwendung von Cascading Style Sheets (CSS), um das Erscheinungsbild Ihrer Web-Anwendung anzupassen.

Start

Öffnen Sie Ihren Webbrowser für die Seite home.php, die im Verzeichnis "Lesson6" bereitgestellt wird. Beachten Sie das neue Erscheinungsbild der Site. Diese Formatierung stammt von einer eigenen CSS-Seite. CSS-Stile können verwendet werden, um HTML-Code in Ihrer Web-Anwendung zu formatieren und werden am Ende dieser Lektion besprochen.

Klicken Sie auf die Schaltfläche Continue und beantworten Sie die Online-Umfrage. Beachten Sie, dass die Seite thankyou.php eine Zusammenfassung der von Ihnen beantworteten Fragen anzeigt. Diese Fragen und Antworten stammen aus einem Ausschnitt im Layout Respondent in der Datenbank questionnaire.fp7. Wenn ein FileMaker-Layout Ausschnittdaten enthält, können sie im Web mithilfe des FileMaker API for PHP dargestellt werden.

Bezugsmengen abrufen

Öffnen Sie die Datei thankyou.php im Ordner "Lesson6" mit Ihrem Texteditor. Scrollen Sie an das Ende der Datei und suchen Sie die letzte HTML-Tabelle.

Beachten Sie den Code über der Tabelle, der den Antwortendendatensatz abruft.

$respondent_record = getRespondentRecordFromRespondentID($respondent_recid);

Die Funktion getRespondentRecordFromRespondentID() wird auf der Seite dbaccess.php definiert. Ihr Kontext ist das Layout Respondent in der Datenbank questionnaire.fp7.

Achten Sie in der HTML-Tabelle darauf, dass die Variable $respondent_record verwendet wird, um die Menge an Bezugsdatensätzen abzurufen. Dies wird über die Methode getRelatedSet() erreicht. Um die Methode getRelatedSet() zu verwenden, müssen Sie den Bezugstabellennamen des gewünschten Ausschnitts angeben und der gewünschte Ausschnitt muss sich auf dem Layout Respondent befinden.

$response_related_set = $respondent_record->getRelatedSet('Responses');

Der obige Code weist ein Array, das die Datensätze aus dem Ausschnitt Responses enthält, der Variablen $response_related_set zu. Jede Antwort ist ein FileMaker_Record-Objekt. Dieser Code verwendet die Methode getField() des FileMaker_Record-Objekts, um die Ausschnittzeilen in einer HTML-Tabelle auszugeben. Denken Sie daran, den vollständigen Namen der Bezugstabelle zu verwenden und den Feldnamen durch zwei Doppelpunkte zu trennen, wenn Sie Bezugsfelder ausgeben.

Hier ist die Schleife, die die Bezugsmenge in HTML anzeigt.

foreach ($response_related_set as $response_related_row)

{

     $question = $response_related_row->getField('Questions 2::question');

     $answer = $response_related_row->getField('Responses::Response');
     //konvertiert Zeilenumbrüche in der Antwort zu Kommata
     $answer = str_replace("\n",", ",$answer);
     echo '<tr><td>' . $question . '</td>';
     echo '<td>' . $answer . '</td></tr>';

}

Mit CSS formatieren

Sie können Ihre Web-Anwendungen mit Cascading Style Sheets (CSS) formatieren. Öffnen Sie die Datei style.css, die sich im Ordner "Lesson6" befindet, mit Ihrem Texteditor und sehen Sie sich die Stile an, die für verschiedene HTML-Marken definiert sind. CSS-Stile können auf beliebige HTML-Marken angewendet werden, so dass Sie mehrere Objekte auf mehreren Seiten von einer einzelnen Definition aus formatieren können.

Um einer speziellen HTML-Marke eine Formatierung zuzuweisen, müssen Sie den Markennamen definieren. Nach dem Markennamen müssen Sie die Stilattribute in geschweiften Klammern angeben. Wie in PHP muss jede Anweisung mit einem Semikolon abgeschlossen werden.

body {
    background-color: #333333;
    padding: 20px;
    color: #ffffff;
    font-family:Verdana, Arial, Helvetica, sans-serif;
}

Nachdem Sie eine CSS-Datei erstellt haben, können Sie sie auf jedes HTML- oder PHP-Dokument anwenden. Um externe Stile anzuwenden, müssen Sie das Stylesheet in Ihr Dokument aufnehmen oder es verknüpfen: Verwenden Sie die Marke <link> (Link) im Header Ihrer HTML-Ausgabe.

Öffnen Sie die Datei thankyou.php im Ordner "Lesson6" mit Ihrem Texteditor. Beachten Sie in den Header-Marken die Marke <link> (link), die den Webbrowser anweist, die Formatierung style.css anzuwenden. Stellen Sie bei Verwendung der Marke <link> sicher, dass Sie den richtigen Pfad bzw. href auf Ihrer CSS-Seite angeben.

<link rel="stylesheet" type="text/css" href="style.css" />

Stylesheets können in mehreren Anwendungen verwendet werden. Jede Anwendung kann mehrere Stylesheets verwenden. Weitere Informationen zu CSS-Stilen und ihren Attributen finden Sie unter CSS2 Reference der W3Schools.