0 votes
in SoSci Survey (dt.) by s060906 (150 points)

Ich habe schon mal eine Frage zu diesem Problem gestellt (Antwort aus randomisierter Frage in richtiger Reihenfolge wieder anzeigen lassen), mir ist jetzt klar geworden woran das liegt.

Auf der ersten Seite sollen die Teilnehmenden in Freitextfeldern Ränge vergeben (genauer: 7 Grundrechte nach ihrer Wichtigkeit sortieren). Dabei dürfen sie einen Rang (z.B. 2) auch zwei- oder mehrfach vergeben.
Auf der nächsten Seite soll ihnen ihre Antwort bzw. persönliche Rangfolge lediglich angezeigt werden, möglichst in absteigender Reihenfolge. Bisher werden die Items so angezeigt, wie sie in der Frage angelegt wurden.

Gibt es eine Möglichkeit das zu realisieren?

Liebe Grüße

1 Answer

0 votes
by SoSci Survey (328k points)

Bisher werden die Items so angezeigt, wie sie in der Frage angelegt wurden.

Soweit es Ihnen um die Randomisierung der Items geht, können Sie diese direkt in der Frage einstellen.

Dabei dürfen sie einen Rang (z.B. 2) auch zwei- oder mehrfach vergeben.

Dies ist in der Rangfolge-Frage "zum Ziehen" nicht vorgesehen. Aber Sie können natürlich eine Frage "Texteingabe offen" erstellen und die Teilnehmer einfach um Eintippen der Rangplätze bitten. Dropdowns für die Rangplätze sind ebenfalls möglich, dfür benötigen Sie eine Frage vom Typ "Skala (voll beschriftet)", welche SIe im Darstellungsmodus "Dropdown" anzeigen lassen.

Auf der nächsten Seite soll ihnen ihre Antwort bzw. persönliche Rangfolge lediglich angezeigt werden, möglichst in absteigender Reihenfolge.

Hier wird es ein klein wenig anspruchsvoller - und geht in den PHP-Code. Der könnte etwa wie folgt aussehen:

// Alle Rangplätze holen
$answers = valueList('AB01');
// Variablen-Kennungen zu Item-Nummern ändern
$ranks = [];
foreach ($answers as $varID => $rank) {
  $itemID = (int)trim(substr($varID, 5, 2), "0");
  $ranks[$itemID] = $rank;
}
// Sortieren
arsort($ranks);
// Item-Kennungen exrahieren
$items = array_keys($ranks);
// Und entweder eine Folgefrage anzeigen ...
question('BB01', $items);
// ... oder die Items
foreach ($items as $itemID) {
  html('<p>'.getItemtext('AB01', $itemID).'</p>');
}
by s060906 (150 points)
Vielen lieben Dank!! Das hat mir schon sehr weitergeholfen.

Tatsächlich werden die Teilnehmenden in der Frage darum gebeten, die Ränge in Freitextfelder einzugeben. Könnte man diese auch noch mit anzeigen lassen? Das wäre hilfreich, damit sichtbar ist, ob ein Rang mehrfach vergeben wurde.

Liebe Grüße
by SoSci Survey (328k points)
Aber natürlich doch :)

foreach ($items as $itemID) {
  html('<p>'.getItemtext('AB01', $itemID).' (Rang '.$ranks[$itemID].')</p>');
}
by s060906 (150 points)
FAST perfekt!

Wenn es das noch in absteigender Reihenfolge gibt, finden Sie Erwähnung in der Danksagung meiner Masterarbeit!
by SoSci Survey (328k points)
Aufgrund des arsort() sollten die Ränge bereites in absteigender Reihenfolge erscheinen. Also erst die großen, dann die kleinen.

Wenn es andersherum sein soll, dann verwenden Sie statt arsort() einfach asort(). Wenn es noch gar nicht sortiert wird, dann muss ich nochmal einen Blick darauf werfen. Würden Sie in diesem Fall vor und hinter dem Sortier-Befehl bitte folgendes einfügen und die Debug-Anzeige posten:

debug($ranks);
by s060906 (150 points)
Vielleicht habe ich mich missverständlich ausgedrückt, ich meinte eine absteigende Reihenfolge im Sinne von Wichtigkeit (Rang Nr. 1 zuerst, danach die "unwichtigeren"). Mit asort() funktioniert es genauso, wie ich es haben möchte.

Vielen lieben Dank!!
by SoSci Survey (328k points)
Ich hatte mich schon gewundert, warum Sie es absteigend haben wollten ;)

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

...