Esercitazioni di FileMaker® API for PHP

Sommario

Introduzione
Lezione 1
Lezione 2
Lezione 3
Lezione 4
Lezione 5
Lezione 6

Introduzione

Benvenuti alle Esercitazioni di FileMaker API for PHP

Queste Esercitazioni presentano le funzioni di base di FileMaker API for PHP. Le Esercitazioni comprendono 6 lezioni che insegnano ad utilizzare l'API per integrare un database di FileMaker Pro con un'applicazione web PHP. Ogni lezione descrive una funzione particolare dell'API, spiegando il modo in cui si scrive il codice e come funziona.

Il database delle Esercitazioni è un sistema questionario FileMaker (questionnaire.fp7). Ogni record del questionario può avere domande multiple correlate. Ogni domanda può avere risposte multiple correlate. Viene selezionato un solo questionario come questionario attivo . Il questionario attivo è quello che gli utenti sono invitati a scegliere durante l'utilizzo dell'applicazione web PHP. Quando un utente completa un questionario online, il sistema aggiunge un record respondent per l'utente e aggiunge le risposte dell'utente come record correlati.

Le Esercitazioni completano gradualmente un'applicazione web PHP e ogni lezione è costruita sulla lezione precedente come segue:

Queste Esercitazioni non coprono l'intero API. Tuttavia, dopo aver completato queste lezioni, avrete acquisito buone basi. Per maggiori informazioni sull'API, vedere la documentazione FileMaker API for PHP.

Per visualizzare la documentazione FileMaker API for PHP, portarsi sulla pagina iniziale dell'Admin Console di FileMaker Server e fare clic su "Strumenti PHP Site Assistant e XSLT Site Assistant." Sulla pagina Strumenti per la pubblicazione sul Web fare clic su "documentazione FileMaker API for PHP." Utilizzare la documentazione come riferimento mentre si completano queste Esercitazioni. Questo riferimento vi mostra come utilizzare in modo più completo FileMaker API for PHP.

È inoltre necessario acquisire familiarità con il database di questionnaire.fp7. Per scoprire come funziona e per comprendere la struttura dei questionari potete creare domande con risposte multiple. La conoscenza della struttura del questionnaire.fp7 è necessaria per capire in che modo l'applicazione delle Esercitazioni PHP utilizza l'API.

Per cominciare

Configurazione e installazione

È necessario che FileMaker Server 9 sia installato e che ospiti il database del questionnaire.fp7. La cartella delle Esercitazioni deve essere ospitata sulla macchina del server Web che viene utilizzata per l'installazione di FileMaker Server.

Per ulteriori informazioni sull'installazione e sulla distribuzione di FileMaker Server 9, vedere la Guida introduttiva di FileMaker Server. Per ulteriori informazioni su FileMaker API for PHP, vedere Pubblicazione Web personalizzata di FileMaker Server con PHP.

Conoscenze e abilità consigliate

È necessario avere familiarità con la programmazione HTML, ossia conoscere dichiarazioni, intestazioni e tag di elemento HTML. Per ulteriori informazioni sulla programmazione di pagine web con HTML, vedere Esercitazioni XHTML in W3Schools.

È inoltre richiesta la familiarità con la programmazione PHP. Di conseguenza, devono essere noti output standard, variabili, matrici, loop condizionali, oggetti, metodi e funzioni. Per maggiori informazioni sulla programmazione con PHP, vedere Esercitazioni PHP in W3Schools.

È necessario saper utilizzare un editor di testo con HTML e PHP. Queste Esercitazioni richiedono l'utilizzo di un editor di testo per visualizzare e modificare codici HTML e PHP.

È necessario sapere come si lavora con il progetto del database di FileMaker Pro e quindi avere dimestichezza con campi, relazioni, formati, portali e contenitori. Per ulteriori informazioni sulla progettazione di database con FileMaker Pro, vedere la documentazione FileMaker Pro.

Suggerimenti utili

quando si modificano dei record in FileMaker Pro, ricordarsi di uscire o di assegnare il record per applicare le modifiche. Le pagine Web riportano le modifiche inserite nel database solo quando si esce dal record.

Per visualizzare le pagine PHP di ogni lezione nel browser Web, si deve inserire l'URL completo in modo da poter eseguire il codice PHP. Se, ad esempio, i file sono ospitati sulla macchina locale, puntare il browser su un URL che inizia con "http://localhost/ ...". Non utilizzare il percorso locale del file che può iniziare con "file:///Volumes/ ...". Se si utilizza un URL "file://" si ottiene la visualizzazione del codice PHP, non la sua esecuzione. Assicurarsi sempre che l'URL inizi con "http"o "https" se sul server web è impostato l'SSL.

Lezione 1

Obiettivo

La lezione 1 contiene le basi per l'utilizzo di FileMaker API for PHP in due file PHP: home.php e dbaccess.php. Il file home.php serve come punto di partenza del browser web e il file dbaccess.php imposta un oggetto FileMaker che rappresenta il database. Queste pagine descrivono i passi fondamentali per l'installazione dell'oggetto del database FileMaker, la configurazione delle sue proprietà chiave e l'esecuzione di una ricerca sul database del questionnaire.fp7.

Avvio

Per visualizzare l'esempio delle Esercitazioni, indirizzare il browser web su home.php all'interno della cartella Lesson1. Questa pagina visualizza la schermata iniziale del sistema questionario di FileMaker. Durante il caricamento della pagina, in background viene effettuata la connessione tra PHP e il Motore di Pubblicazione Web, che individua un record nel database questionnaire.p7.

Utilizzando l'editor di testo, aprire il file home.php all'interno della cartella Lesson1. Collocare il seguente codice immediatamente dopo il tag body.

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

Questa istruzione PHP contiene o carica il file dbaccess.php. Il file dbaccess.php comprende funzioni che configurano l'oggetto del database di FileMaker e lo preparano per le operazioni di database. Di conseguenza, i metodi API sotto home.php non funzionano senza di esso. Anche se i metodi indicati in dbaccess.php possono essere stati scritti nel file home.php, vengono tuttavia separati per facilitare le operazioni di debug e la manutenzione.

Configurazione dell'oggetto del database FileMaker

Il file dbaccess.php contiene il codice per impostare l'oggetto del database FileMaker. Svolge un ruolo fondamentale nella costruzione dell'applicazione del questionario. Seguire questi passi per configurare l'oggetto FileMaker:

  1. Caricare FileMaker API for PHP
  2. Assegnare un'istanza della classe del database FileMaker ad una variabile
  3. Impostare proprietà chiave per la nuova istanza di FileMaker

Utilizzando l'editor di testo, aprire il file dbaccess.php nella cartella Lesson1 e seguire la descrizione di ogni passo indicato in basso.

1. Caricare FileMaker API for PHP

Per poter essere utilizzato, FileMaker API deve essere innanzitutto caricato nella memoria PHP. A tale scopo si deve utilizzare l'istruzione "require".

require_once ('FileMaker.php');

Dopo aver caricato il software, è possibile creare istanze della classe di database FileMaker utilizzandole per connessioni di database nell'applicazione web. Se si tenta di utilizzare l'API senza averlo dapprima caricato viene visualizzato un messaggio di errore.

2. Assegnare un'istanza della classe del database FileMaker ad una variabile

Per poter utilizzare un'istanza della classe di database FileMaker la si deve innanzitutto creare. La si deve inoltre assegnare ad una variabile per farvi riferimento nel codice.

$fm = new FileMaker();

Il codice indicato sopra crea un'istanza dell'oggetto del database FileMaker. Tale codice viene indicato come variabile $fm.

3. Impostare proprietà chiave per la nuova istanza di FileMaker

L'oggetto del database FileMaker ha un set di proprietà che possono essere impostate in qualsiasi momento. Tuttavia, alcune proprietà devono essere impostate prima di effettuare le operazioni di database. Di seguito viene riportato il codice per impostare le proprietà richieste per queste Esercitazioni.

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

Nota: Il nome del database questionnaire non richiede l'aggiunta dell'estensione fp7 al parametro.

Nota: Vedere la documentazione di FileMaker API for PHP per avere la lista delle proprietà della classe del database FileMaker e le relative descrizioni.

Il file dbaccess.php contiene poco codice, ma prepara efficacemente l'oggetto Filemaker per l'utilizzo. Dopo aver caricato il file, l'oggetto FileMaker è utilizzabile come variabile $fm e le proprietà chiave sono impostate sui valori richiesti. Il file dbaccess.php consente al file home.php di comunicare con il database questionnaire.fp7.

Esecuzione di Trova e di Trova tutto

Il file home.php esegue due operazioni di database: Trova tutto (Mostra tutti i record) e Trova. Per visualizzare il codice di queste operazioni, aprire il file home.php nell'editor di testo. Per visualizzare il database di queste operazioni, aprire il file questionnaire.fp7 ospitato su FileMaker Server.

1. Trova tutto (Mostra tutti i record)

Il database questionnaire.fp7 contiene un formato denominato Active Questionnaire. Questo formato funge da interfaccia e contiene un solo record nella tabella. Su questo formato, gli utenti selezionano il questionario attivo. L'applicazione web deve recuperare l'ID del questionario attivo.

L'ID del questionario attivo viene recuperato eseguendo Trova tutto (Mostra tutti i record) sul formato Active Questionnaire. Questa operazione utilizza l'oggetto di comando FileMaker_Command_FindAll.

Nota: Vedere la documentazione di FileMaker API for PHP per avere la lista degli oggetti di comando e dei relativi metodi.

Per creare un'istanza dell'oggetto FileMaker_Command_FindAll si deve far eseguire a $fm (istanza del database FileMaker) il metodo newFindAllCommand() specificando (fra parentesi) il nome del formato Active Questionnaire. Il formato determina quale occorrenza in tabella viene utilizzata (contesto) e quali campi vengono restituiti nei risultati.

L'istanza FileMaker_Command_FindAlll deve essere assegnata ad una variabile come mostra il seguente esempio.

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

Il codice sopra esposto assegna un nuovo oggetto FileMaker_Command_FindAll alla variabile $findCommand. Il comando Trova tutto viene eseguito con il metodo execute(). I risultati della ricerca devono essere assegnati ad una variabile.

$result = $findCommand->execute();

Dopo aver eseguito un comando è possibile che si verifichi un errore. Se l'errore si verifica effettivamente (o se la ricerca non dà risultati), la variabile $result viene assegnata all'oggetto FileMaker_Error. Utilizzare il seguente codice per controllare l'oggetto FileMaker_Error. Il messaggio di errore viene visualizzato utilizzando il metodo getMessage().

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

Se non si sono verificati errori, la variabile $result contiene una matrice degli oggetti FileMaker_Record, uno per ogni record nel set trovato. Utilizzare la variabile $result per recuperare il primo record nei risultati di Trova tutto. Poiché per default le matrici PHP sono indicizzate numericamente, si può visualizzare il primo record utilizzando il seguente codice.

$record = $records[0];

Questo codice assegna un oggetto FileMaker_Record contenente il primo record nel set trovato alla variabile $record. Da questo record si possono recuperare i contenuti del questionnaire_id utilizzando il metodo getField(). I risultati del metodo GetField() devono essere assegnati ad una variabile.

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

Questa variabile contiene attualmente l'ID del questionario attivo. Il passo successivo utilizza questa variabile come parametro per la ricerca successiva.

Nota: Vedere la documentazione di FileMaker API for PHP per avere la lista degli oggetti e dei relativi metodi.

2. Trova

Una volta che si conosce l'ID del questionario attivo, lo si può utilizzare per cercare il record del questionario. Il codice per eseguire questa operazione si trova al fondo del file home.php. L'operazione utilizza l'oggetto di comando FileMaker_Command_Find.

Per creare un'istanza di FileMaker_Command_Find si deve far eseguire a $fm (istanza del database FileMaker) il metodo newFindCommand(), specificando (fra parentesi) il nome del formato Active Questionnaire. Il formato determina quale occorrenza in tabella viene utilizzata e quali campi vengono restituiti nei risultati.

L'istanza FileMaker_Command_Find deve essere assegnata ad una variabile come mostra il seguente esempio.

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

Per aggiungere criteri alla ricerca, utilizzare il metodo addFindCriterion(). Il metodo addFindCriterion() richiede due parametri: fieldName e searchParameter. Utilizzare il nome campo "questionnaire ID" (come definito in FileMaker Pro) e la variabile $active_questionnaire_id come parametri.

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

Nota: Il metodo addFindCriterion() può essere richiamato più volte, simulando l'AND logico che appare inserendo criteri di ricerca multipla in una sola richiesta di ricerca all'interno di FileMaker Pro.

Dopo aver aggiunto i criteri di ricerca si utilizza il metodo execute() per eseguire la ricerca. I risultati del metodo execute() devono essere assegnati ad una variabile.

$result = $findCommand->execute();

La variabile $result contiene ora una matrice di oggetti FileMaker_Record. Poiché la ricerca è stata effettuata sul formato questionnaire, ogni record di $result contiene i valori di ogni campo sul formato questionnaire.

Il codice finale di questa pagina utilizza dichiarazioni echo PHP e il metodo GetField() per visualizzare i campi Questionnaire Name e Description sulla pagina home.php.

Lezione 2

Obiettivo

La lezione 2 riguarda il codice richiesto per visualizzare le immagini contenitore di FileMaker Pro sul web. Se si memorizzano immagini compatibili con il web in un database di FileMaker Pro, si può utilizzare FileMaker API for PHP per recuperare tali immagini e visualizzarle sul sito web.

Avvio

Aprire il database delle Esercitazioni di FileMaker API questionnaire.fp7 e assicurarsi che il questionario attivo disponga di un'immagine compatibile con il web nel campo Contenitore. Quindi visualizzare l'esempio delle Esercitazioni PHP aprendo il file home.php della cartella Lesson2 nel browser web. Tenere presente che la pagina visualizza l'immagine del questionario attivo. Provare a cambiare l'immagine contenitore nel database di FileMaker. Assicurarsi di essere usciti dal record dopo aver finito. Aggiornare il browser e osservare l'aggiornamento del sito web con la nuova immagine.

Visualizzazione immagine Contenitore

Per visualizzare il modo in cui l'API viene utilizzato per questa operazione, aprire il file home.php nella cartella Lesson2. Visualizzare le ultime dichiarazioni PHP nel file facendo particolarmente attenzione al tag <img> (immagine) e al suo attributo src (sorgente).

Osservare i seguenti punti concernenti questa tecnica.

  1. Il campo contenitore Graphic è sul formato questionnaire (che è il formato della ricerca precedente). Tenere presente che solo i valori dei campi sul formato utilizzato per la ricerca vengono restituiti all'API.
  2. Il valore del campo Graphic restituito non è un'immagine, ma uno speciale URL che richiede l'immagine dal Motore di Pubblicazione Web.

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

Poiché un tag HTML <img> (immagine) deve avere un percorso file come suo attributo src (sorgente), questa lezione utilizza un file separato per recuperare effettivamente l'immagine. Il file che recupera l'immagine contenitore è denominato ContainerBridge.phpe il suo nome appare all'interno dell'attributo src (sorgente) del tag <img> (immagine).

Il file ContainerBridge.php non sa quale immagine si intende visualizzare. Per specificare l'immagine, è necessario aggiungere il valore del campo Graphic al fondo dell'URL src (sorgente). Nell'HTML, questo è denominato metodo GET.

Utilizzando una coppia nome/valore e iniziando con un punto interrogativo, concatenare la stringa desiderata. Il nome è impostato sul "percorso" e il valore è impostato sul risultato del metodo getField(), con il nome del campo Contenitore (Graphic) fra parentesi.

Nota: il risultato getField()viene trasferito alla funzione PHP urlencode() per garantire la codifica corretta di caratteri speciali per un URL.

Utilizzo di ContainerBridge.php

Utilizzando l'editor di testo, aprire il file ContainerBridge.php nella cartella Lesson2. Questo semplice script utilizza il metodo FileMaker_Record getContainerData() per recuperare l'immagine effettiva.

Per garantire il funzionamento di getContainerData() si devono trasferire i risultati del campo da GetField() (di un campo Contenitore) al metodo getContainerData() fra parentesi. In home.php, il risultato di GetField() per il campo Graphic è stato trasferito tramite URL. In ContainerBridge.php, il risultato viene recuperato dall'URL attraverso l'elemento path della matrice $_GET e trasferito al metodo getContainerData().

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

Il file ContainerBridge.php recupera il percorso dell'immagine specificata dal database di FileMaker Pro in modo che il file home.php lo possa utilizzare nel tag <img> per visualizzare l'immagine nel browser web.

Nota: Vedere la documentazione di FileMaker API for PHP per avere la lista dei metodi degli oggetti FileMaker_Record.

Lezione 3

Obiettivo

La lezione 3 riguarda il codice richiesto per creare un modulo web dinamico utilizzando oggetti del formato FileMaker. Riporta inoltre il codice richiesto per aggiungere un nuovo record FileMaker da un modulo web assegnato. Questa lezione utilizza due file PHP aggiuntivi: Respondent.php e handle_form.php. Il file Repondent.php serve per generare dinamicamente un modulo web, mentre il file handle_form.php è utilizzato per convalidare voci di modulo e inserirle come nuovo record nel database questionnaire.fp7.

Avvio

Aprire il sito web del questionario puntando il browser sul file home.php nella cartella Lesson3. Questa versione della pagina visualizza un pulsante Continue per avviare l'applicazione del questionario. Se si fa clic sul pulsante Continue si viene reindirizzati sul file Respondent.php. Inserire le informazioni nel modulo web e fare clic su Submit; se non sono state inserite informazioni sufficienti, riprovare. Quando il modulo viene convalidato, viene visualizzato il messaggio Thank You e le informazioni inserite vengono aggiunte come nuovo record al database questionnaire.fp7.

Recupero degli elementi della lista valori

Per sapere come funziona questa applicazione, aprire la pagina Respondent.php nell'editor di testo. Tenere presente che il file dbaccess.php è incluso in cima. Come si è già detto nella Lesson 1, questa istruzione "include" garantisce la disponibilità di un'istanza della classe del database FileMaker e che l'istanza possa essere utilizzata come variabile $fm.

Tenere presente l'elemento del modulo del pulsante di opzione Respondent.php denominato "prefix". Questo elemento riceve i suoi valori dal database questionnaire.fp7 di FileMaker Pro utilizzando la lista valori con lo stesso nome. Questa tecnica consente di costruire un elemento di modulo dinamico basato su una lista valori definita nel database di FileMaker. In questo modo non si ha la necessità di aggiornare il codice PHP ogni volta che si modifica la lista valori nel database. Questa tecnica è implementata nei seguenti passi:

  1. Recuperare un oggetto di formato attraverso il metodo getLayout() (con il nome del formato fra parentesi)
  2. Recuperare i valori della lista attraverso il metodo getValueList()
  3. Scorrere la matrice di valori e visualizzare ognuno come pulsante di opzione
Quando si utilizza questa tecnica, tenere presente che il formato specificato deve contenere un campo formattato dalla lista valori specificata. Se con il metodo getValueList() viene richiesta una lista valori e se tale lista non è stata formattata su nessun campo del formato specificato con getLayout(), viene visualizzato un errore. Di seguito viene riportato il codice utilizzato per visualizzare i pulsanti di opzione dinamici.

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

Nota - Per una lista dei metodi oggetto FileMaker_Layout vedere la documentazione di FileMaker API for PHP.

Nota - Il modulo in Respondent.php comprende diversi elementi nascosti. Uno, chiamato "active_questionnaire_id", contiene il questionnaire ID da home.php. Questo modulo inserisce l'ID in handle_form.php, dove verrà utilizzato nella lezione 4.

Aggiunta di un nuovo record

Quando il modulo Respondent.php ha inviato i dati, i valori vengono trasferiti alla pagina di azione handle_form.php attraverso il metodo POST. Utilizzando l'editor di testo, aprire il file handle_form.php situato nella cartella Lesson3.

Si noti che i dati inviati dall'utente vengono assemblati in una matrice e assegnati alla variabile $respondent_data. In questa matrice associativa, la (chiave) di ogni elemento è il nome esatto del campo FileMaker in cui devono essere inseriti i dati. Il valore di ogni elemento corrisponde ai valori inviati dall'elemento del modulo HTML all'interno della matrice $_POST. Questa matrice $respondent_data è utilizzata dall'oggetto FileMaker per la creazione del record del database.

Dopo avere assemblato la matrice dati, il codice PHP effettua alcuni semplici controlli di convalida. Questi metodi di convalida utilizzano il codice PHP esplicitamente; FileMaker Server non esegue nessuna convalida durante questa operazione.

Una volta che i dati utente hanno superato la convalida, è possibile aggiungere un nuovo record con due semplici passi:

  1. Creare un nuovo oggetto FileMaker_Command_Add, inserendo due parametri:
    • nome del formato (il formato deve disporre dei campi necessari)
    • matrice dati ($respondent_data)
  2. Aggiungere il record con il metodo execute()

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

Attenzione: per creare un nuovo oggetto FileMaker_Command_Add è necessario specificare il nome del formato. Il nome del formato determina quale ricorrenza di tabella viene usata (contesto) e quali campi vengono restituiti (risultati). I campi utilizzati per inserire dati devono trovarsi sul formato.

Nella lezione 4, la pagina handle_form.php viene aumentata per usare il record aggiunto e visualizzare la prima domanda.

Lezione 4

Obiettivo

La lezione 4 illustra il codice necessario per recuperare un record FileMaker in base all'ID e recuperare record correlati da un portale. I portali sono strumenti potenti usati nelle soluzioni FileMaker Pro. FileMaker API for PHP comprende metodi speciali progettati per lavorare con i dati del portale. Questa lezione presenta alcune di tali funzionalità.

Avvio

Aprire il database questionnaire.fp7 FileMaker Pro ospitato su FileMaker Server. Fare clic sul pulsante Modifica questionario e assicurarsi che per il questionario attivo sia presente almeno un record nel portale Question. Quindi aprire il file home.php della cartella Lesson4 nel browser Web. Selezionare il pulsante Continue e inserire le informazioni dell'intervistato.

Di seguito viene presentata la prima domanda del questionario attivo. Aprire nuovamente il database FileMaker Pro questionnaire.fp7. Individuare la prima domanda del questionario attivo. Provare a cambiare il primo tipo di domanda. Fare clic sul pulsante Modifica risposte e aggiungere le risposte possibili. Aggiornare il browser Web per visualizzare la domanda aggiornata.

In questa lezione vengono presentate due nuove funzioni: ottenere un record in base all'ID e recuperare un set di record correlati da un portale.

Ricerca di un record in base all'ID

Con l'editor di testo, aprire il file handle_form.php situato all'interno della Lesson4 folder. Scorrere fino a circa un terzo del file dove nella lezione 3 è terminato il file handle_form.php. Si noti che questa lezione aggiunge codice che richiede l'oggetto del nuovo record intervistato. Questa richiesta è necessaria perché il campo Respondent ID è definito con l'opzione Immissione automatica numero di serie in FileMaker Pro ed è necessario recuperare il numero Immissione automatica.

Come per le funzioni Trova nella lezione 1, è possibile recuperare un nuovo record usando i metodi getField() e getField().

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

L'operazione successiva consiste nel recuperare il nome del questionario attivo. Per eseguire questa operazione, utilizzare il metodo getRecordById() dell'istanza FileMaker ($fm).

Per usare getRecordById(), inserire l'ID record FileMaker interno e il nome del formato. Il formato determina quale ricorrenza di tabella (contesto) viene utilizzata e quali valori di campo (risultati) vengono restituiti. Il codice di questa pagina inserisce l'active_questionnaire_id della matrice $_POST inviato a questo file dal modulo intervistato di Respondent.php.

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

Nota - Ogni oggetto record restituito da un'operazione API comprende l'ID record FileMaker interno che può essere recuperato con il metodo getRecordId().

L'operazione successiva consiste nel recuperare i record del questionario e visualizzare la prima domanda. Ricercare tutte le domande che corrispondono al questionnaire ID attivo. Questa ricerca viene eseguita nel formato Questions.

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

Come ricavare un set correlato

Il database del questionario è progettato in modo per cui ogni domanda ha un tipo specifico (per esempio, text, radio e checkbox). Se il tipo è a risposta multipla, per ogni domanda sono possibili più risposte. Il formato Questions contiene un portale che visualizza le possibili risposte. Se una domanda comprende una o più risposte, il codice che segue mostra le possibili risposte usando il "tipo" specificato.

Per spiegare questo codice, supponiamo che la domanda sia del tipo radio (pulsanti di opzione). Scorrere verso il basso il documento handle_form.php fino a vedere la condizione else if che determina i tipi di domande radio (pulsanti di opzione) o ranking (classificazione).

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

Se la condizione è true, il seguente codice recupera le opzioni di risposta correlate e le visualizza come elementi modulo del tipo pulsanti di opzione. I record delle risposte del portale possono essere recuperati usando il metodo getRelatedSet() dell'oggetto FileMaker_Record.

Per utilizzare il metodo getRelatedSet(), il nome della tabella correlata deve essere inserito tra parentesi e il portale definito con questa relazione deve trovarsi sul formato usato per recuperare il record $question.

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

La variabile $relatedSet comprende ora una matrice di oggetti record del portale correlato. Eseguire un loop attraverso la matrice e generare i valori di campo per ogni record trovato.

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

Sarebbe stato possibile recuperare i record correlati eseguendo una ricerca, ma è molto più semplice usare getRelatedSet() usando un portale che già contiene il set correlato.

Lezione 5

Obiettivo

La lezione 5 illustra il codice necessario per aggiungere record correlati. Nel caso di un portale definito su un formato che consente la creazione di record correlati, è possibile usare FileMaker API for PHP per aggiungere record correlati dal Web.

Avvio

Aprire il browser Web browser alla pagina home.php inserita nella cartella Lesson5. Fare clic sul pulsante Continue e completare il questionario online. Aprire il database FileMaker questionnaire.fp7 che è ospitato su FileMaker Server. Dal questionario attivo, fare clic sul pulsante Review Responses e navigare fino all'ultimo record della tabella. Questo record contiene le informazioni dell'intervistato inserite. Ogni risposta viene salvata come record nel portale Responses.

Aggiunta di un record correlato (righe del portale)

È possibile aggiungere righe del portale con FileMaker API for PHP in quattro passi:

  1. Iniziare con un oggetto record valido
  2. Creare un record correlato vuoto
  3. Aggiungere dati ai campi del nuovo record (facoltativo)
  4. Salvare il nuovo record

Iniziare con un oggetto record valido

Con un editor di testo, aprire il file handle_form.php situato nella cartella Lesson5 delle Esercitazioni. Scorrere verso il basso e cercare il codice che recupera il record dell'intervistato:

$respondent_rec = getRespondentRecordFromRespondentID($respondent_recid);

Questo codice usa una funzione che è stata aggiunta al file dbaccess.php. Aprendo il file dbaccess.php in un editor di testo, verso il fondo è possibile visualizzare la definizione di questa funzione. All'interno della definizione della funzione si noti che il metodo newFindCommand() utilizza il formato Respondent per il contesto.

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

Questa funzione assegna l'oggetto record intervistato alla variabile $respondent_rec. La variabile è riferita al formato Respondent perché tale formato era il contesto del comando di ricerca. Pertanto tutti i metodi usati dalla variabile $respondent_rec iniziano dal contesto del formato Respondent.

Creare un record correlato vuoto

Ritornando al file handle_form.php, la riga successiva del codice inizia a creare il nuovo record correlato.

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

Quando viene eseguita questa riga, la variabile $new_response viene assegnata ad un oggetto record vuoto (non è ancora stato creato un nuovo record nel database FileMaker).

È importante comprendere il contesto di questa operazione. Questo codice inizia dal formato dell'oggetto record richiamante (Responses) e specifica la relazione di un portale su tale formato. Quindi il codice passa il nome della tabella correlata al metodo newRelatedRecord().

Aggiungere dati ai campi del record vuoto (facoltativo)

Dopo aver ottenuto un record vuoto e sapendo a quale contesto del portale appartiene il record, è possibile iniziare a inserire i dati con il metodo setField(). Questo metodo comprende due parametri: field name e field value. Poiché si tratta di un record correlato, il nome del campo deve essere espresso con il nome della relazione e il nome del campo separato da una coppia di due punti.

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

Dopo aver creato il nuovo record correlato e aver aggiunto dati ai campi corrispondenti, è possibile salvare i dati inseriti.

Nota - Non è necessario impostare i dati del campo prima di salvare un nuovo record vuoto.

Salvare il nuovo record

Nel database FileMaker non vengono creati nuovi oggetti record finché non vengono salvati. Il metodo commit() inserisce l'oggetto FileMaker_Record nel database FileMaker questionnaire.fp7.

$result = $new_response->commit();

La variabile $result viene ora assegnata all'oggetto FileMaker_Record del nuovo record; il nuovo record è stato creato nel database FileMaker. Se si verifica un errore, la variabile $result contiene un oggetto FileMaker_Error. Si consiglia di eseguire una verifica degli errori dopo aver eseguito il metodo commit().

Lezione 6

Obiettivo

La lezione 6 esamina il codice necessario per visualizzare campi correlati da un portale. Presenta le istruzioni di base per usare i fogli di stile CSS (Cascading Style Sheets) per modificare l'aspetto dell'applicazione Web.

Avvio

Aprire il browser Web alla pagina home.php ospitata nella directory Lesson6. Si noti il nuovo aspetto del sito. Questa formattazione deriva da una pagina CSS distinta. I fogli di stile CSS possono essere usati per formattare il codice HTML usato nell'applicazione web; sono presentati alla fine di questa lezione.

Fare clic sul pulsante Continue e completare il questionario online. Si noti che la pagina thankyou.php mostra un riepilogo delle domande a cui è stata data risposta. Queste domande e risposte provengono da un portale sul formato Respondent nel database questionnaire.fp7. Se un formato FileMaker contiene dati del portale, può essere visualizzato sul Web usando FileMaker API for PHP.

Come ricavare set correlati

Usando l'editor di testo, aprire la pagina thankyou.php situata nella directory Lesson6. Scorrere fino alla fine del file e individuare l'ultima tabella HTML.

Si noti il codice sopra la tabella che recupera il record dell'intervistato.

$respondent_record = getRespondentRecordFromRespondentID($respondent_recid);

La funzione getRespondentRecordFromRespondentID() è definita nella pagina dbaccess.php. Il contesto è il formato Respondent nel database questionnaire.fp7.

Guardando all'interno della tabella HTML, si noti che la variabile $respondent_record viene usata per recuperare il set di record correlati. Per far ciò si usa il metodo getRelatedSet(). Per usare il metodo getRelatedSet(), è necessario specificare il nome della tabella correlata del portale desiderato e il portale desiderato deve trovarsi sul formato Respondent.

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

Il codice sopra assegna una matrice che contiene i record dal portale Responses alla variabile $response_related_set. Ogni risposta è un oggetto FileMaker_Record. Questo codice utilizza il metodo getField() dell'oggetto FileMaker_Record per generare le righe del portale in una tabella HTML. Ricordare di usare il nome completo della tabella correlata e il nome del campo separati da una coppia di due punti per generare campi correlati.

Questo è il loop che mostra il set correlato in HTML.

foreach ($response_related_set as $response_related_row)

{

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

     $answer = $response_related_row->getField('Responses::Response');
converte tutti i ritorni a capo della risposta in virgole
     $answer = str_replace("\n",", ",$answer);
     echo '<tr><td>'. $question. '</td>';
     echo '<td>'. $answer. '</td></tr>';

}

Formattazione con CSS

È possibile formattare le applicazioni Web utilizzando i fogli di stile CSS (Cascading Style Sheets). Con l'editor di testo, aprire il file style.css situato all'interno della cartella Lesson6 ed esaminare gli stili definiti per alcuni dei tag HTML. Gli stili CSS possono essere applicati a qualsiasi tag HTML, consentendo di formattare più elementi su più pagine con un'unica definizione.

Per applicare la formattazione ad un tag HTML specifico, è necessario dichiarare il nome del tag. Dopo il nome del tag, è necessario indicare gli attributi di stile racchiusi tra parentesi graffe. Come in PHP, ogni istruzione deve essere terminata con un punto e virgola.

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

I file CSS creati possono essere applicati a qualsiasi documento HTML o PHP. Per applicare stili esterni, è necessario includere oppure aggiungere un link al foglio di stile del documento: usare il tag <link> (link) nell'intestazione dell'output HTML.

Con l'editor di testo, aprire il file thankyou.php situato nella cartella Lesson6. All'interno dei tag dell'intestazione, notare il tag <link> (link) che comanda al browser Web si applicare la formattazione style.css. Quando si utilizza il tag <link>, assicurarsi di indicare il percorso completo o href alla pagina CSS.

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

I fogli di stile possono essere utilizzati in più applicazioni; ogni applicazione può usare più fogli di stile. Per ulteriori informazioni sugli stili CSS e sui relativi attributi consultare il riferimento CSS2 in W3Schools.