0 votes
in SoSci Survey (dt.) by s190091 (280 points)

Liebes SoSci-Team,

ich habe folgende Frage:

Ich habe auf einer Fragebogenseite folgenden PHP-Code eingegeben:

$itemliste = getItems('UD01', '==', 1);
question('TD01', $itemliste);

Für Frage TD01 werden also diejenigen Items ausgewählt, die bei Frage UD01 nicht ausgewählt wurden. Das funktioniert prinzipiell sehr gut, allerdings gibt es eine Sache, die unschön ist:

Bei Frage TD01 habe ich eine alphabetische Sortierung der Items gewählt; allerdings scheint die erzeugte Itemliste die alphabetische Sortierung quasi zu "überstimmen" - die Items werden nämlich nicht alphabetisch angezeigt, sondern gemäß der Variablen-Nummern, die die Items haben.

Können Sie mir bitte weiterhelfen, wie ich dieses Problem lösen kann?

Herzlichen Dank und beste Grüße

by SoSci Survey (341k points)
Sie die Items in UD01 auch alphabetisch sortiert? Und wenn nicht, warum?
by s190091 (280 points)
Ja, auch die Items in UD01 sind alphabetisch sortiert.
by SoSci Survey (341k points)
$itemliste sollte die Item-Nummern dann eigentlich bereits sortiert enthalten - und wenn UD02 dieselben Texte enthält wie TD01 sollte die Reihenfolge eigentlich schon alphabetisch korrekt sein. Jetzt müssten wir also erst einmal klären, warum das nicht der Fall ist?

Könnten Sie bitte in Ihrem Code noch ein debug($itemliste); ergänzen, die Debug-Information posten und die Items, wie sie in TD01 angezeigt werden?
by s190091 (280 points)
Guten Morgen,

herzlichen Dank für Ihre Rückmeldung!

Ja, $itemliste enthält die Item-Nummern bereits sortiert in aufsteigender Reihenfolge; die Item-Nummern stimmen aber nicht mit der alphabetischen Reihenfolge der Items überein. Hintergrund ist, dass für eine Evaluation bestimmte Personen eine dauerhafte (Item-)Nummer erhalten sollen, die auch dann noch gültig ist, wenn sich ein Name im Folgejahr durch Heirat ändert. Das heißt, eine wichtige Anforderung meinerseits ist gerade, dass die Reihenfolge der Item-Nummern nicht mit der alphabetischen Reihenfolge übereinstimmen muss, die Items bei den Fragen jedoch immer nach der aktuellen alphabetischen Reihenfolge sortiert werden.

Bei Frage UD02 wird tatsächlich eine alphabetische Reihenfolge erzeugt, auch wenn diese nicht mit der nummerischen Reihenfolge der Items übereinstimmt. Bei Frage TD01 wird hingegen eine nummerische Reihenfolge generiert, die nicht der gewünschten alphabetischen Reihenfolge entspricht - obwohl ich bei beiden Fragen alphabetische Sortierung eingestellt habe.

Im DEbug-Modus erhalte ich auf der Seite mit Frage TD01 folgende Debug-Informationen:

Debug-Information für $itemliste:
0:1, 1:2, 2:8, 3:9, 4:10, 5:14  (erste Zahl jeweils hochgestellt vor zweiter Zahl)

Herzlichen Dank für Ihre Unterstützung und beste Grüße

1 Answer

0 votes
by SoSci Survey (341k points)

dass die Reihenfolge der Item-Nummern nicht mit der alphabetischen Reihenfolge übereinstimmen muss

Okay, besondere Wünsche brauchen ein wenig mehr PHP-Code.

Im ersten Schritt müssen Sie dafür die Beschriftungen der ausgewählten Items per getItemtext() abrufen. Dann müssen Sie das Array nach diesen Beschriftungen sortieren. Und zuletzt müssen Sie die (umsortierten) Indizes wieder auslesen.

$itemliste = getItems('UD01', '==', 1);
// Texte auslesen
$texte = [];
foreach ($itemliste as $itemID) {
  $texte[$itemID] = getItemtext('UD01', $itemID);
}
// Array sortieren
asort($texte);
// Indizes auslesen
$itemliste = array_keys($texte);
// Weiter wie gehabt
question('TD01', $itemliste);
by s190091 (280 points)
Super! Jetzt klappt es - vielen Dank für Ihre schnelle und tolle Unterstützung!

Willkommen im Online-Support von SoSci Survey.

Hier bekommen Sie schnelle und fundierte Antworten von anderen Projektleitern und direkt von SoSci Survey.

→ Eine Frage stellen


Welcome to the SoSci Survey online support.

Simply ask a question to quickly get answers from other professionals, and directly from SoSci Survey.

→ Ask a Question

...