oFb bietet die Möglichkeit, die Texte in Fragen oder Items variabel zu gestalten – also z.B. Titel oder Erklärung einer Frage, oder den Text einzelner Items. Dazu werden Platzhalter in der Form %name%
verwendet.
Bei der Ausgabe versucht oFb dann, den Platzhalter zu ersetzen. Dazu sucht oFb nach dem „richtigen“ Text. Damit das funktioniert, müssen Sie den Inhalt vorher mit set() oder prepare_input() festlegen. Sonst erhalten Sie im Fragebogen eine Fehlermeldung.
Tipp: Platzhalter funktionieren in nahezu allen Texten, von der Frage selbst über Items, Textbausteine, HTML-Code Elemente u.s.w.
Tipp: Eine Anwendung von Platzhalter ist es, einzelne Eingabefelder an fast beliebiger Stelle im Fragebogen zu platzieren (Eingabefelder frei platzieren).
Eine sehr einfache Verwendung von Platzhaltern zeigt das folgende Beispiel.
Auf Seite 2 wird der Speicherplatz „name“ mit der Funktion set()
belegt, anschließend wird die Frage DC01 gestellt, in der an mehreren Stellen der Platzhalter %name%
vorkommt.
// Seite 1 // Dieses Beispiel setzt voraus, dass die Items // der Frage DC01 (Typ Skala) folgende Itemtexte haben: // // DC01_01: "Herr %name% hat mich ausführlich beraten." // DC01_02: "Ich würde Herrn %name% weiterempfehlen." // // Die Frage soll lauten: // Sie wurden zuletzt von Herrn %name% behandelt. // Inwieweit können Sie den folgenden Aussagen zustimmen? // Hier wird zunächst gefragt, bei wem der Interviewpartner in Behandlung war // DC02 sei eine Auswahl mit den zwei Items (1) Müller und (2) Maier question('DC02');
// Seite 2 // Nun wird - je nach Antwort des Interviewpartners - ein Platzhalter gesetzt if (value('DC02') == 1) { set('Müller', 'name'); } elseif (value('DC02') == 2) { set('Maier', 'name'); } // Nun kann die Frage DC_01 gestellt werden. // Alle Stellen mit %name% werden automatisch durch Müller bzw. Maier ersetzt question('DC01');
Folgende Platzhalter stehen (ab oFb 2.3.01) immer zur Verfügung, diese Kennungen dürfen nicht mit anderen Inhalten belegt werden:
Kennung | Beschreibung | Variable im Datensatz | PHP-Funktion |
---|---|---|---|
caseNumber | Fortlaufende Nummer des Interviews | CASE | caseNumber() |
caseSerial | Seriennummer des Interviews | SERIAL | caseSerial() |
caseToken | Interne Kennung des Interviews | - | caseToken() |
reference | Referenz, die an den Fragebogen übergeben wurde | REF | reference() |
logo | HTML-Code für das aktive Logo | nur für das HTML-Template im Layout | |
imprint | HTML-Code für das Impressum | nur für das HTML-Template im Layout | |
progress | HTML-Code für den Fortschrittsbalken | nur für das HTML-Template im Layout | |
head | HTML-Code für den Kopfbereich im Layout-Template | nur für das HTML-Template im Layout | |
questionnaire | HTML-Code für den Inhalte im Layout-Template | nur für das HTML-Template im Layout |
Bei folgenden Beispielen ist in Klammern jeweils die Kennung des Platzhalters angegeben:
Eine effiziente Verwendung von Platzhaltern setzt Grundkenntnisse in der Programmierung mit PHP voraus (PHP-Code, Umgang mit Variablen).
Das folgende Beispiel zeigt, wie Platzhalter zusammen mit Zufallsvariablen verwendet werden können:
// Seite 1 // Dieses Beispiel setzt voraus, dass die Items folgenden Itemtext haben: // AB01_01: "Ich finde %marke% besser als oFb" // AB01_02: "%marke% wirkt eher künstlich" // // Die Frage soll lauten: // Bitte beurteilen Sie folgende Aussagen zu %marke%! // Hier werden zunächst verschiedene Marken in ein Array gespeichert $marken = array( 'Ammerseebach', 'Breitenwiesen-Autos', 'Changuella' ); // Eine dieser Marken wird per Zufall ausgewählt $zufallszahl = random(0,2); $zufaellige_marke = $marken[$zufallszahl]; // Und in die interne Variable marke gespeichert set($zufaellige_marke, 'marke'); // Nun kann die Frage gestellt werden. Alle %marke% werden automatisch // mit der zufällig ausgewählten Marke ersetzt question('AB01');
Hinweis: Um die Ergebnisse auch auswerten zu können, ist es sinnvoll die „flüchtige“ Variable mit put() auch im Datensatz zu speichern!
Wenn man die (Text-)Angabe eines Teilnehmers weiter hinten im Fragebogen aufgreifen will, ist das mit Platzhaltern ebenfalls recht einfach zu bewerkstelligen. Man muss lediglich darauf achten, dass der Fragebogen auch funktioniert, wenn der Teilnehmer nichts (oder nur Leerzeichen) angibt.
Folgender PHP-Code geht von zwei Annahmen aus:
// Antwort des Teilnehmers auslesen $marke = value('TX01_01'); // Leerzeichen entfernen $marke = trim($marke); // Reagieren, wenn nichts eingegeben wurde if ($marke == '') { goToPage('next'); // Seite überspringen } // Platzhalter %marke% vorbereiten set($marke, 'marke'); // Text oder Frage mit Platzhalter %marke% einbinden // (alternativ auch durch einfaches in-die-Seite ziehen) question('AB01');
Im folgenden Beispiel soll die Auswahl als Text angezeigt werden, die in einer Auswahl (einfache Auswahl oder Dropdown) gewählt wurde. Voraussetzung ist:
Tipp: Lesen Sie auch die Anleitung zur Funktion value()
.
// Erst einmal prüfen, ob überhaupt etwas ausgewählt wurde if (value('AU01') < 0) { // Rest der Seite überspringen goToPage('next'); } // Antwort auslesen - diesmal nicht den Code (wie oben), sondern den Text $text = value('AU01', 'text'); // Platzhalter %obst% vorbereiten set($text, 'obst'); // Text oder Frage mit Platzhalter %obst% einbinden // (alternativ auch durch einfaches in-die-Seite ziehen) question('AB02');