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

0 votes

Liebes SoSci Team

Ich habe noch eine Frage zu der Kombination von Datenbank für Inhalte und LoopToPage.

Folgendes will ich erreichen:
Meine Versuchspersonen sehen jeweils ein Bild, danach eine Verhaltensbeschreibung und danach sollen sie ein Sympathierating abgeben. Diese Schleife soll 24 mal wiederholt werden. Die Bilder und die Verhaltensbeschreibungen werden zufällig aus der Datenbank gezogen.

Mein PHP Code sieht bisher so aus:
Auf der Seite bei der die Bilder angezeigt werden:

if (!isset($elementPic)) {
  $elementPic = getItems('IV03', 'all');
  shuffle($elementPic);
  for ($i=0; $i<count($elementPic); $i++) {
    $idPic = 'IV03_'.sprintf('%02d', $i+1);
    put($idPic, $elementPic[$i]);
  }   
  registerVariable($elementPic);
}

$i = loopToPage('Rating', count($elementPic));
$idPic = $elementPic[$i];

$varIDPic = 'IV03_'.sprintf('%02d', $i + 1);
$stimulusPic = value($varIDPic);  
$key = 'Set1_'.$stimulusPic;  // Schlüssel für die Datenbank für Inhalte auf Grundlage der gespeicherten Elemente

  
$inhaltPic = dbGet($key);

// entsprechendes Objekt aus der Datenbank anzeigen
html('
    <div style="margin: 3em; text-align: center">
      '.$inhaltPic[0].'
    </div>
  ');`

das Ziehen der Bilder funktioniert. Mein Problem besteht auf der Seite der Verhaltensbeschreibungen. Hier habe ich bisher folgenden Code:

 if (!isset($elements)) {
  $elements = getItems('IV02', 'all');
  shuffle($elements);
  for ($j=0; $j<count($elements); $j++) {
    $id = 'IV02_'.sprintf('%02d', $j+1);
    put($id, $elements[$j]);
  }   
  registerVariable($elements);
}

//$j = loopPage(count($elements));

$id = $elements[$j];

$varID = 'IV02_'.sprintf('%02d', $j + 1);
$stimulusBehav = value($varID);  
registerVariable($stimulusBehav);
$key = 'A'.$stimulusBehav; 

$inhalt = dbGet($key);

html('
  <h2>'.$inhalt[0].'</h2>');  

Ich weiß, dass ich hier die Verhaltensbeschreibungen einfach nur als loop darbiete, ich bin aber gerade etwas ratlos, wie ich hier jeweils nur ein Element zufällig aus der Liste ziehe, mir merke und die Schleife der 3 Seiten dabei nicht unterbreche/beeinflusse.

Auf der darauffolgenden Seite befinden sich das Rating (und diese Seite ist damit die letzte in der Schleife)

$questions = getQuestions('L'.$stimulusBehav); 
foreach ($questions as $qID) {
  question($qID);
}

Als zusätzliche Komplikation (die habe ich aber noch nicht realisiert) will ich die zeitliche Darbietung der Bilder und der Verhaltensbeschreibung begrenzen. Hier hätte ich noch die Frage, ob das bei einer Loop überhaupt noch möglich ist (da bei einer Zeitabfrage ja häufig das erste Aufrufen einer Seite verwendet wird).

Viele Grüße
Meike

in SoSci Survey (dt.) by s052438 (130 points)
Konnten Sie kurz eine Frage aufklären: Soll die Verhaltenbeschreibung auf Seite 2 jeweils zum Bild auf Seite 1 passen oder sollen die beiden Teile des Stimulus getrennt voneinander randomisiert werden?

Und: Die Reihenfolge ist immer (1) Bild, (2) Beschreibung, (3) Rating, oder?
Nein, die Verhaltensbeschreibungen sind unabhängig von den Bildern, d.h. die Bilder werden getrennt von den Verhaltensbeschreibungen aus der Datenbank gezogen (nur sollte die jeweilige Reihenfolge für die spätere Auswertung gespeichert werden).

Die Reihenfolge ist für jeden Durchgang: Bild, Beschreibung, Rating.

Viele Grüße
Meike

1 Answer

0 votes

Wenn ich die Aufgabestellung korrekt verstehe, würde ich folgendes empfehlen:

  1. Auf Seite 1 (oder vorher) randmisieren Sie - via isset() einmalig - die beiden Arrays mit Bildern und Beschreibungen (oder deren Datenbank-Schlüsseln oder Text-IDs, wie Ihnen das am besten liegt).

  2. Auf den folgenden beiden Seiten verwenden Sie loopToPage(), um die drei Seiten Bild/Verhalten/Rating k-mal zu wiederholen. Dabei verwenden Sie das $i (auf Seite 2 mittels loopIndex() erhältlich), um aus den rotierten Arrays jeweils das i-te Element auszulesen und den entsprechenden Inhalt anzuzeigen.

by SoSci Survey (200k points)
...