Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
de:create:filter-itemcount [22.10.2014 20:56]
admin
de:create:filter-itemcount [21.12.2014 22:02]
admin
Zeile 7: Zeile 7:
 {{scr.filter-itemcount.png?nolink|Filterfrage mit mehreren relevanten Items}} {{scr.filter-itemcount.png?nolink|Filterfrage mit mehreren relevanten Items}}
  
-Aufgabenstellung sei es nun, zu überprüfen, ob der Befragte mindestens ein Medium mindestens einmal im Monat nutzt. Das ließe sich freilich mit 6 einzelnen Bedingungen erledigen, die per ''and'' verknüpft werden ([[filter-boolean|Mehrere Bedingungen verknüpfen]]). Im Folgenden wird beschrieben, wie es flexibler und eleganter geht.+Aufgabenstellung sei es nun, zu überprüfen, ob der Befragte mindestens ein Medium mindestens einmal im Monat nutzt. Das ließe sich freilich mit 6 einzelnen Bedingungen erledigen, die per UND-Operator (''and''verknüpft werden ([[filter-boolean|Mehrere Bedingungen verknüpfen]]). Im Folgenden wird beschrieben, wie es schneller und eleganter geht. 
  
 ===== Kurzfassung ===== ===== Kurzfassung =====
  
-Mit der Funktion ''[[:de:create:functions:getitems|getItems()]]'' kann man sich eine Liste (Array) der ausgewählten Items erstellen lassen. Mit der PHP-eigenen Funktion ''[[http://php.net/manual/de/function.count.php|count()]]'' kann man überprüfen, ob diese Liste mindestens einen Eintrag (also ein Item) enthält.+Mit der Funktion ''[[:de:create:functions:getitems|getItems()]]'' kann man sich eine Liste ([[array|Array]]) der ausgewählten Items erstellen lassen. Mit der PHP-eigenen Funktion ''[[http://php.net/manual/de/function.count.php|count()]]'' kann man überprüfen, ob diese Liste mindestens einen Eintrag (also ein Item) enthält.
  
-Der folgende PHP-Code geht davon aus, dass die Frage TF04 auf Seite gestellt wurde. +Der folgende PHP-Code geht davon aus, dass die Frage TF04 auf einer früheren Seite gestellt wurde. Die Funktion ''getItems()'' listet alle Items auf, die mindestens (''min'') den Wert 2 bekommen haben. Enthält diese Liste keine (also 0) Einträge, schickt der IF-Filter den Teilnehmer ans Ende der Befragung.
-Die Funktion getItems() listet in diesem Fall alle Items auf, die mindestens (''min'') den Wert 2 haben.+
  
 <code php> <code php>
Zeile 32: Zeile 32:
 Das folgende Beispiel zur Demonstration von Schleifen schreibt eine Textzeile einfach 6-mal mit leicht verändertem Inhalt in den Fragebogen. 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 um eins erhöht (''$i++''), so lange ''$i'' kleiner oder gleich 6 ist (''$i<=6''). 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''.+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''.
  
 <code php> <code php>
Zeile 62: Zeile 62:
   Runde 5 mit Item TF04_05   Runde 5 mit Item TF04_05
   Runde 6 mit Item TF04_06   Runde 6 mit Item TF04_06
 +
  
 ===== Schleifen und Filter ===== ===== Schleifen und Filter =====
  
-Natürlich soll nicht einfach nur die Item-Kennung angeschrieben werden. Das folgende Beispiel stellt die Frage und überprüft (auf der nächsten Seite), welche Medien mindestens einmal im Monat genutzt werden (Antwort-Code mindestens 2). Wie vorher wird die Kennung des Items dafür in eine Variable (''$item''gespeichert.+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''). 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'').
- 
-Damit folgender PHP-Code funktioniert, muss einer vorhergehenden Seite die Frage TF04 gestellt worden sein. 
  
 <code php> <code php>
Zeile 92: Zeile 91:
 </code> </code>
  
-Durch die Schleife werden die Kennungen von TF04_1 bis TF04_6 erzeugt und in ''$item'' gespeichert. +**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.
- +
-**Tipp:** Wenn die Item-Kennung nur einstellig angegeben wird (statt zweistellig wie in TF04_01), stört das den value()-Befehl nicht weiter. Dies ist insbesondere 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. 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 ''[[functions-proc#registervariable|registerVariable()]]''.+**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]]. 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]].
de/create/filter-itemcount.txt · Zuletzt geändert: 21.12.2014 22:02 von admin
 
Falls nicht anders bezeichnet, ist der Inhalt dieses Wikis unter der folgenden Lizenz veröffentlicht: CC Attribution-Share Alike 4.0 International
Driven by DokuWiki