====== getItems() ======

''array **getItems**(string //FrageKennung//, string //Vergleich//, [int //AntwortCode//])''

Mit Hilfe der Funktion ''getItems()'' können Sie ermitteln, welche Items in einer Frage vorhanden sind oder welche Items einer Frage angekreuzt wurden.

Die Funktion gibt ein Array der Item-Kennungen zurück, z.B. (1,2,4,5,6,9,10). Diese Kennungen können mit dem Befehl ''question()'' direkt in eine andere Frage übergeben werden. So kann man z.B. in einer zweiten Frage nur jene Items anzeigen, die eine Person vorher als relevant ausgewählt hat (z.B. nur Bewertung von Zeitschriften, die der Teilnehmer auch liest, s. [[:de:create:filter-items|Items in eine anderen Frage übernehmen]]).

  * //FrageKennung//\\ Die Kennung der Frage, z.B. "AB01"
  * //Vergleich//\\ Legt fest, nach welchem Kriterium die Items gelistet werden. Wichtig ist, dass der Modus in Anführungszeichen steht. Die möglichen Vergleichsmodi sind der folgenden Tabelle zu entnehmen.

^Vergleich^Beschreibung^
|'''all'''|Alle Items der Frage, nützlich z.B. für Randomisierung. Ein //AntwortCode// wird in diesem Fall nicht angegeben.|
|'''>'''|Listet alle Items auf, die einen Antwortcode größer als dem angegeben //AntwortCode// erhalten haben. So würde ein '''>''' in Verbindung mit dem //AntwortCode// ''3'' in einer 5er-Skala nur jene Items heraussuchen, bei denen ein Wert über der Mitte angekreuzt wurde.|
|''%%'>='%%'' oder '''min'''|Listet alle Items, die mindestens den angegeben //AntwortCode// erreicht haben.|
|''%%'<='%%'' oder '''max'''|Items, die höchstens den //AntwortCode// erreicht haben. Items mit fehlenden Werten (z.B. "keine Antwort"), die technisch gesehen den Antwortcode -1 haben, werden hier allerdings nicht (!) gelistet.|
|'''<'''|Items, die eine gültige Antwort und weniger als den angegeben //AntwortCode// erreicht haben.|
|'''==''', '''=''', '''is''' oder '''equal'''|Items, die genau einen gegebenen //AntwortCode// erreicht haben.|
|'''answered'''|Items, die beantwortet wurden. **Hinweis:** Diese Option ist für Mehrfachauswahl-Fragen nicht anwendbar, weil hier die Möglichkeit wegfällt, nicht zu antworten.|
|'''missing'''|Items, die nicht beantwortet bzw. übersehen wurden.|
|'''valid'''|Items, die eine gültige Antwort erhalten haben, also nicht leer belassen wurden oder eine Antwort "weiß nicht" bekamen. **Hinweis:** Bei einer Mehrfachauswahl ist auch kein Kreuzchen eine gültige Antwort. Verwenden Sie hier '' '==' '' in Verbindung mit dem Antwortcode ''2'', um die ausgewählten Optionen zu ermitteln.|
|'''invalid'''|Items, die leer belassen wurden oder ein "weiß nicht" bekommen haben.|

**Hinweis:** Wie auch bei ''value()'' kann diese Funktion Antworten des Teilnehmers erst auf der Seite nach einer Frage ermitteln. Verwendet man die Funktion auf derselben Seite wie die Frage, so funktioniert es nicht korrekt, weil die Antworten noch gar nicht mit "Weiter" zum Server übermittelt wurden.

===== Items in andere Frage übernehmen =====

Im folgenden Beispiel wird auf Seite 1 die Frage ''AB01'' gestellt, eine Matrixfrage (Skala), bei der für unterschiedliche Zeitschriften anzugeben ist, wie häufig der Befragte diese liest.

Auf der folgenden Seite 2 sollen dann in Frage ''AB02'' nur jene Items zur Auswahl angeboten werden, die mindestens "selten" (Antwortcode 2) genutzt werden.

Das Beispiel setzt voraus, dass ''AB02'' genauso viele Items hat wie ''AB01''. Außerdem müssen zusammengehörige Items auch dieselben Kennung haben. So könnte das Item 1 in beiden Fragen "Spiegel", das Item 2 in beiden Fragen "Stern" sein.

**Tipp:** Am einfachsten erreicht man das, indem man eine Frage anlegt, dann die Frage dupliziert und in der Kopie nur noch Fragetyp und -texte ändert.

<code php>
// Seite 2
// Items ermitteln, die mindestens selten (2) genutzt werden
$itemliste = getItems('AB01', 'min', 2);
// Nur diese Items in AB02 anzeigen
question('AB02', $itemliste);
</code>

Auf Seite 3 soll nun Frage ''AB04'' gestellt werden -- aber nur für jene Items, die laut ''AB01'' mindestens häufig genutzt werden (Antwortcode 3).

Auch Frage ''AB04'' muss dieselben Items mit denselben Kennungen enthalten wie Frage ''AB01''.

<code php>
// Seite 3
$itemlisteB = getItems('AB01', 'min', 3);
// Nur diese Items in AB04 anzeigen
question('AB04', $itemlisteB);
</code>

**Tipp:** Lesen Sie dazu auch das Kapitel [[:de:create:filter-items|Items in eine anderen Frage übernehmen]].


===== Weitere Beispiele =====

<code php>
// Liste der Items, für die genau "nie" ausgewählt wurde
$itemliste = getItems('AB01', '==', 1);

// Liste der Items, für die maximal "selten" gewählt wurde
$itemliste = getItems('AB01', '<=', 2);

// Liste aller Items mit gültiger Antwort
$itemliste = getItems('AB01', 'valid');

// Liste aller Items der Frage
$itemliste = getItems('AB01', 'all');
html('<p>Die Frage zeigt '.count($itemliste).' Items.</p>');

// Liste aller Items, die mit nie (1) oder täglich (4) beantwortet wurden
$liste1 = getItems('AB01', '==', 1);
$liste2 = getItems('AB01', '==', 4);
$itemliste = array_merge($liste1, $liste2);
</code>

Im folgenden Beispiel wird die Kombination von ''getItems()'' mit der PHP-eigenen Funktion ''count()'' demonstriert. Die Funktion ''count()'' verrät die Länge eines Arrays. Damit lässt sich z.B. überprüfen, ob mindestens eine bestimmte Anzahl von Items das Kriterium aus ''getItems()'' erfüllt.

<code php>
// Nicht beantwortete Items in Frage AB01 ermitteln
$missing = getItems('AB01', 'missing');
// Wenn mindestens eines fehlt, dann soll die Frage erneut angezeigt werden
if (count($missing) > 0) {
  question('AB01');
}
</code>

**Tipp:** Lesen Sie zum letzten Beispiel auch die Anleitung zur Funktion ''[[:de:create:functions:repeatpage|repeatPage()]]''.