Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
de:create:filter-items [22.10.2014 20:56] – admin | de:create:filter-items [03.05.2023 21:14] (aktuell) – [Items in eine andere Frage übernehmen] admin | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== | + | ====== |
Gelegentlich soll eine Frage nicht alle Items anzeigen, sondern nur solche, die in einer anderen Frage vorher ausgewählt wurden. Und eventuell soll die Anzahl der Items auch noch beschränkt werden. | Gelegentlich soll eine Frage nicht alle Items anzeigen, sondern nur solche, die in einer anderen Frage vorher ausgewählt wurden. Und eventuell soll die Anzahl der Items auch noch beschränkt werden. | ||
- | Dieses Kapitel erklärt, wie man Items in eine andere Frage übernimmt. Normalerweise genügen dafür 2-3 Zeile PHP-Code. Falls Sie bisher noch keinen PHP-Code verwendet haben, lesen Sie bitte zunächst die [[php|Einführung in PHP-Code]]. | + | Dieses Kapitel erklärt, wie man Items in eine andere Frage übernimmt. Normalerweise genügen dafür 2-3 Zeilen |
+ | |||
+ | **Tipp:** Sehen Sie sich zu dieser Anleitung auch das Video-Tutorial [[https:// | ||
- | Falls es komplizierter wird, benötigen Sie zusätzlich sogenannte //Arrays//. Sollten Sie in den Beispielen unten über eckige Klammern stolpern ('' | ||
===== Aufgabenstellung 1 ===== | ===== Aufgabenstellung 1 ===== | ||
Zeile 13: | Zeile 14: | ||
{{scr.filter-itemcount.png? | {{scr.filter-itemcount.png? | ||
- | In folgender Frage (TF05) sollen nur die Medien zur Auswahl stehen, die der Befragte mindestens einmal im Monat nutzt. | + | In folgender Frage (TF05) sollen nur die Medien zur Auswahl stehen, die der Befragte mindestens einmal im Monat nutzt. |
+ | |||
+ | **Tipp:** Es ist wichtig, dass beide Fragen | ||
{{scr.filter-items.selection.png? | {{scr.filter-items.selection.png? | ||
Zeile 19: | Zeile 22: | ||
Ziel ist es nun, dass die zweite Frage nur die Medien (Items) zu Auswahl zeigt, die in der ersten Frage eine Bewertung von mindestens 2 erhalten haben. | Ziel ist es nun, dass die zweite Frage nur die Medien (Items) zu Auswahl zeigt, die in der ersten Frage eine Bewertung von mindestens 2 erhalten haben. | ||
- | ==== Kurzfassung ==== | ||
- | Die Funktion '' | + | ==== Die kompakte Lösung ==== |
+ | |||
+ | Die Funktion '' | ||
- | Wenn Sie die Frage TF04 auf Seite 1 gestellt | + | Damit der PHP-Code funktioniert, |
<code php> | <code php> | ||
Zeile 33: | Zeile 37: | ||
Die weitere Anleitung beschreibt, wie Sie mit Arrays im Detail arbeiten. Dies ist vor allem dann interessant, | Die weitere Anleitung beschreibt, wie Sie mit Arrays im Detail arbeiten. Dies ist vor allem dann interessant, | ||
+ | |||
==== Der Lange Weg ==== | ==== Der Lange Weg ==== | ||
- | Die Funktion '' | + | Die Funktion '' |
- | + | ||
- | Bitte lesen Sie zum Verständnis des folgenden PHP-Code die [[array|Einführung in Arrays]]. | + | |
<code php> | <code php> | ||
Zeile 46: | Zeile 49: | ||
for ($i=1; $i< | for ($i=1; $i< | ||
- | $kennung = $frage.' | + | $kennung = id($frage, $i); // Ergibt z.B. TF04_01 |
// Hat das Item einen Wert von mindestens 2? | // Hat das Item einen Wert von mindestens 2? | ||
if (value($kennung) >= 2) { | if (value($kennung) >= 2) { | ||
Zeile 76: | Zeile 79: | ||
Nun sollen Polaritätenprofile für die einzelnen Medien erfragt werden. Allerdings nur für solche Medien, die der Befragte mindestens einmal pro Monat nutzt. Außerdem sollen maximal 2 Polprofile abgefragt werden. Falls der Befragte mehr Medien nutzt, sollen zufällig zwei ausgewählt werden. | Nun sollen Polaritätenprofile für die einzelnen Medien erfragt werden. Allerdings nur für solche Medien, die der Befragte mindestens einmal pro Monat nutzt. Außerdem sollen maximal 2 Polprofile abgefragt werden. Falls der Befragte mehr Medien nutzt, sollen zufällig zwei ausgewählt werden. | ||
- | Grundlage sind 6 gleichartige Fragen (TF06 bis TF11), in denen lediglich der Fragetext variiert. In der ersten Frage steht dort " | + | Grundlage sind 6 gleichartige Fragen (TF06 bis TF11), in denen lediglich der Fragetext variiert. In der ersten Frage steht dort " |
{{scr.filter-items.questions.png? | {{scr.filter-items.questions.png? | ||
Zeile 123: | Zeile 126: | ||
</ | </ | ||
- | Jetzt müssen nur noch die entsprechenden Fragen gestellt werden. Auch das funktioniert wieder am schnellsten mit Hilfe eines Arrays. Man hat die Möglichkeit, | + | Jetzt müssen nur noch die entsprechenden Fragen gestellt werden. Auch das funktioniert wieder am schnellsten mit Hilfe eines Arrays. Man hat die Möglichkeit, |
<code php> | <code php> | ||
Zeile 140: | Zeile 143: | ||
In diesem Array beginnen die Indizes nun nicht mit 0, sondern mit 1. Das Array sieht aus wie folgt: | In diesem Array beginnen die Indizes nun nicht mit 0, sondern mit 1. Das Array sieht aus wie folgt: | ||
+ | ^Index| 1 | 2 | 3 | 4 | 5 | 6 | | ||
^Wert|TF_06|TF_07|TF_08|TF_09|TF_10|TF_11| | ^Wert|TF_06|TF_07|TF_08|TF_09|TF_10|TF_11| | ||
- | ^Index| 1 | 2 | 3 | 4 | 5 | 6 | | ||
Mit '' | Mit '' | ||
Zeile 149: | Zeile 152: | ||
// Fortsetzung | // Fortsetzung | ||
$anzahl = count($itemliste); | $anzahl = count($itemliste); | ||
- | if ($anzahl > 2) { | ||
- | $anzahl = 2; // Maximal zwei Polprofile abfragen | ||
- | } | ||
if ($anzahl == 0) { | if ($anzahl == 0) { | ||
goToPage(' | goToPage(' | ||
+ | } | ||
+ | if ($anzahl > 2) { | ||
+ | $anzahl = 2; // Maximal zwei Polprofile abfragen | ||
} | } | ||
for ($i=0; $i< | for ($i=0; $i< | ||
Zeile 179: | Zeile 182: | ||
); | ); | ||
$anzahl = count($itemliste); | $anzahl = count($itemliste); | ||
- | if ($anzahl > 2) { | ||
- | $anzahl = 2; // Maximal zwei Polprofile abfragen | ||
- | } | ||
if ($anzahl == 0) { | if ($anzahl == 0) { | ||
goToPage(' | goToPage(' | ||
+ | } | ||
+ | if ($anzahl > 2) { | ||
+ | $anzahl = 2; // Maximal zwei Polprofile abfragen | ||
} | } | ||
for ($i=0; $i< | for ($i=0; $i< | ||
Zeile 192: | Zeile 195: | ||
</ | </ | ||
- | Im Fragebogen könnte das dann so aussehen | + | Im Fragebogen könnte das dann so aussehen: |
- | {{scr.filter-itemcount.png? | + | {{scr.filter-items.example.png? |
Seite 2 zeigt zufällig die Fragen für Tageszeitung, | Seite 2 zeigt zufällig die Fragen für Tageszeitung, | ||
Zeile 225: | Zeile 228: | ||
$items[] = 6; // Wikis min. selten => Item 6 | $items[] = 6; // Wikis min. selten => Item 6 | ||
} | } | ||
- | // Zu guter Letzte | + | // Zu guter Letzt die Frage stellen |
question(' | question(' | ||
</ | </ |