0 votes
in SoSci Survey (dt.) by s088239 (170 points)
edited by SoSci Survey

Liebes Soscisurvey-Team,

Ich habe bereits folgenden Code geschrieben (unten).
US01 ist dabei eine Abfrage von Häufigkeiten.
Bei einer Häufigkeit von min 3, sollen aus den 6 verfügbaren Items in US01 2 gezogen werden.

Wie kann ich darauf aufbauend die gezogenen Variablen als internen Variablen speichern, um sie später noch zu nutzen?
Wie genau kann hier put() angewendet werden?

Vielen Dank für Ihre Hilfe!

$itemliste = getItems('US01', 'min', 3);  // Relevante Items ermitteln
shuffle($itemliste); // Liste mischen
// Fragen zu den Items definieren
$fragen = array(
  1 => 'PI01',
  2 => 'PI02',
  3 => 'PI03',
  4 => 'PI04',
  5 => 'PI05',
  6 => 'PI06'
);
$anzahl = count($itemliste); // So viele Elemente können erfragt werden
if ($anzahl == 0) {
  goToPage('end'); // Nichts genutzt? Dann gleich weiter!
}
if ($anzahl > 2) {
  $anzahl = 2; // Maximal zwei Polprofile abfragen
}
for ($i=0; $i<$anzahl; $i++) {
  $item_kenn = $itemliste[$i]; // Einer der genutzten Dienste (1 bis 6)
  $frage_kenn = $fragen[$item_kenn];  // Die entspr. Frage
  question($frage_kenn);  // Frage stellen
}

1 Answer

0 votes
by SoSci Survey (327k points)

Das Abspeichern ist im Prinzip nicht weiter schwer - ich habe den Code ein wenig umgestellt und gehe davon aus, dass Sie eine interne Variable IV01 mit 2 Variablen (Items) haben.

$itemliste = getItems('US01', 'min', 3);  // Relevante Items ermitteln
if (count($itemliste) == 0) {
  goToPage('end'); // Nichts genutzt? Dann gleich weiter!  
}
shuffle($itemliste); // Liste mischen
$items = array_slice($items, 0, 2);
// Eine -1 auf Platz 2 schreiben, falls nur ein Item relevant ist
while (count($items) < 2) {
  $items[] = -1;
}
// Abspeichern
put('IV01_01', $items[0]);
put('IV01_02', $items[1]);

Soweit so gut ... jetzt haben Sie in IV01_01 und IV01_02 die Codes für Ihre beiden Items. Möchten Sie die Fragen auf allen folgenden Seiten immer untereinander zu den beiden Items stellen? Oder lieber erst ein Item abarbeiten und dann das zweite?

Wenn Sie es wie bisher haben möchten, würde die Verwendung wie folgt aussehen:

$items = valueList('IV01');
$fragen = array(
  1 => 'PI01',
  2 => 'PI02',
  3 => 'PI03',
  4 => 'PI04',
  5 => 'PI05',
  6 => 'PI06'
);
foreach ($items as $item) {
  // eventuelle -1 überspringen
  if ($item < 0) {
    continue;
  }
  $frage = $fragen[$item];
  question($frage);
}

Wenn Sie die Daten lieber so hätten (für die Auswertung könnte das SEHR vorteilhaft sein), dann Sie jedes Item in einer eigenen Datenzeile haben, dann sehen SIe sich doch bitte einmal die Anleitung Multi-Level Struktur an.

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

...