0 votes
in SoSci Survey (dt.) by s091951 (110 points)
retagged by SoSci Survey

Hallo liebes Support-Team,

ich würde gerne drei Fragebögen erstellen, in denen ich jeweils eine bestimmte Anzahl ausgewählter Items mehrerer Fragen und Rubriken über mehrere Seiten randomisiert darstelle.

Ich möchte meine Items in den Fragebögen folgendermaßen aufteilen (Bsp. Fragebogen 1):
Item 1-18 von Rubrik 1, Frage 1
Item 1-18 von Rubrik 1, Frage 2
Item 1-18 von Rubrik 1, Frage 3
Item 1-4 von Rubrik 2, Frage 1
Item 1-4 von Rubrik 2, Frage 2

All diese Items sollen nun aber über die Seiten verteilt randomisiert aufgelistet sein, sodass man keine Zuordnung zu den Fragen und Rubriken feststellen kann.

Ich wäre sehr dankbar dafür, wenn es einen Code dafür geben würde. Ich kenne mich leider nicht so gut mit der Programmierung aus.

Vielen Dank im Voraus!

1 Answer

0 votes
by SoSci Survey (327k points)

Zunächst brauchen Sie eine Liste Ihrer Items. Dort können Sie alle Items einzeln aufschreiben oder diesen Job mittels FOR-Schleife erledigen lassen. Zweiteres (s. folgendes Beispiel) funktioniert nur, wenn Sie alle Items der Fragen mitnehmen möchten:

$questions = array('A101', 'A102', 'A103', 'A201', 'A202');
$allItems = array();
foreach ($questions as $question) {
  foreach (getItems($question) as $item) {
    $allItems[] = array($question, $item);
  }
}

Diese List können Sie nun kräftig mischen.

shuffle($allItems);

Und dann abarbeiten.

$i = loopPage(count($allItems));
$item = $allItems[$i];
question($item[0], $item[1]);

Jetzt noch ein registerVariable() und ein isset(), damit die Rotation nicht immer neu erfolgt. Und gesamt sieht es dann aus wie folgt:

if (!isset($allItems)) {
  // Eine Liste aller Items in der Form Frage-Item erstellen
  $questions = array('A101', 'A102', 'A103', 'A201', 'A202');
  $allItems = array();
  foreach ($questions as $question) {
    foreach (getItems($question) as $item) {
      $allItems[] = array($question, $item);
    }
  }
  // Mischen und die Reihenfolge merken
  shuffle($allItems);
  registerVariable($allItems);
}

// Items einzeln anzeigen
$i = loopPage(count($allItems));
$item = $allItems[$i];
question($item[0], $item[1]);
by s091951 (110 points)
Vielen Dank!

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

...