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