// PHP-Code auf Seite 2
$gewaehlt = getItems('TF04', 'min', 2); // Genutzte Medien ermitteln
if (count($gewaehlt) == 0) {
goToPage('end'); // Ende, wenn keines der Medien genutzt wird
}
Die weitere Anleitung beschreibt, wie man dasselbe Problem mit einer FOR-Schleife lösen kann. Dieses Vorgehen ist dann interessant, wenn die Funktion ''getItems()'' einmal nicht ausreicht.
===== Schleifen =====
Eigentlich muss man nur alle Items (Nr. 1 bis 6) in derselben Art und Weise überprüfen. Für solch monotone Aufgaben gibt es sogenannte Schleifen. Eine FOR-Schleife macht nichts anderes, als eine Zahl durchzuzählen.
Das folgende Beispiel zur Demonstration von Schleifen schreibt eine Textzeile einfach 6-mal mit leicht verändertem Inhalt in den Fragebogen.
Die Zahl, die in jedem Durchgang um 1 hochgezählt wird, speichert die Schleife in der Variable ''$i'' ([[variables#php-variablen|PHP-Variablen]]). Die FOR-Zählung beginnt in diesem Beispiel mit 1 (''$i=1''). Dann wird die Zahl so lange ''$i'' kleiner oder gleich 6 ist (''%%$i<=6%%''), wird die Zahl in ''$i'' um eins erhöht (''$i++''). Es werden also alle Zahlen von 1 bis 6 durchgegangen: Das was hinter dem ''for'' in geschweiften Klammern steht wird sechsmal ausgeführt -- jeweils mit unterschiedlichem ''$i''.
for ($i=1; $i<=6; $i++) {
html((string)$i);
}
Obige Schleife schreibt die Zahl einfach in den Fragebogen -- das Ergebnis ist trivial:
123456
Interessanter wird das Ganze, wenn man aus der Zahl eine Item-Kennung erzeugt. Im folgenden Beispiel wird vorab die Kennung der Frage in die Variable ''$question'' gespeichert. In der Schleife werden dann mit dem Punkt (''.'') der Text 'Runde ', die Zahl ''$i'' und weitere Textfragmente zusammengesetzt und in der Variable ''$text'' gespeichert. Die Variable ''$text'' enthält dann z.B. im ersten Durchlauf "Runde 1 mit Item TF04_01".
$question = 'TF04'; // Speichert Text 'TF04' in Variable $question
for ($i=1; $i<=6; $i++) {
$text = 'Runde '.$i.' mit Item '.$question.'_0'.$i; // Zusammensetzen
html(''.$text.'
'); // Anschreiben
}
Der PHP-Code erzeugt im Fragebogen nun folgende Ausgabe, welche bereits Item-Kennungen enthält:
Runde 1 mit Item TF04_01
Runde 2 mit Item TF04_02
Runde 3 mit Item TF04_03
Runde 4 mit Item TF04_04
Runde 5 mit Item TF04_05
Runde 6 mit Item TF04_06
===== Schleifen und Filter =====
Natürlich soll nicht einfach nur die Item-Kennung angeschrieben werden. Das folgende Beispiel überprüft, welche Medien mindestens einmal im Monat genutzt werden (Antwort-Code mindestens 2). Die Frage TF04 muss dazu auf einer vorhergehenden Seite gestellt worden sein. Die Kennung des Items wird durch Verknüpfung von Frage-Kennung und Zahl erstellt, in die Variable ''$item'' gespeichert und anschließend in ''value()'' verwendet.
Vorab wird die Variable ''$zaehler'' auf 0 gesetzt. Mit jedem Medium, das mindestens einmal im Monat genutzt wird, wird der Zähler um eins erhöht (''$zaehler++'' ist gleichbedeutend mit ''$zaehler = $zaehler + 1'').
$question = 'TF04'; // Falls man die Kennung häufiger braucht
$anzahl_items = 6; // Geprüft werden 6 Items
$zaehler = 0; // Setzt den Zähler auf 0
for ($i=1; $i<=$anzahl_items; $i++) {
$item = $question.'_'.$i; // ergibt z.B. TF04_1
if (value($item) >= 2) { // Prüft Item TF01_1 bis TF04_6
html('Medium Nr. '.$i.' wird regelmäßig genutzt
');
$zaehler++; // Zähler um 1 erhöhen
}
}
// Information anzeigen
html('Regelmäßig genutzt werden '.$zaehler.' Medien
');
// Filter
if ($zaehler == 0) {
goToPage('end'); // Ende, wenn keines der Medien genutzt wird
}
**Tipp:** Wenn die Item-Kennung nur einstellig angegeben wird (''TF04_1'' statt ''TF04_01''), stört das den ''value()''-Befehl nicht weiter. Dies ist besonders dann hilfreich, wenn man mehr als 9 Items überprüfen will.
Interessant ist in diesem Fall vor allem, was man mit dem Zähler (''$zaehler'') anfangen kann -- also die letzten drei Zeilen. Wenn ein Befragter keines der angegeben Medien mindestens einmal im Monat nutzt, so wird er im obigen Beispiel direkt ans Ende des Fragebogens befördert. Natürlich könnte man so auch eine Fragenblock überspringen oder andere Filter in Abhängigkeit von ''$zaehler'' realisieren.
**Tipp:** Falls Sie die aufwändig ermittelte Variable ''$zaehler'' später noch einmal für einen anderen Filter benötigen, verwenden Sie die Funktion ''[[:de:create:functions:registervariable|registerVariable()]]''.
Oft kommt es auch vor, dass in einer weiteren Frage nur Items zu den Medien angefragt werden sollen, die auch genutzt werden. Wie das funktioniert erklärt das Kapitel [[filter-items|Items in eine anderen Frage übernehmen]].