0 votes
in SoSci Survey (dt.) by s052839 (475 points)

Lieber Support,

ich habe einen Fragebogen programmiert, in dem Teilnehmer per Zufallsgenerator einer von zwei Bedingungen zugeteilt werden. Entsprechend der Bedingung erhalten sie andere Instruktionen und Übungsaufgaben. Damit ich nicht mit mehreren Bedingungen arbeiten muss, habe ich das per PHP-Code umgesetzt. Dabei ist TV02 der Zufallsgenerator:

if(value('TV02') == 1){
    question('EG09');
} else if(value('TV02') == 2){
    question('KG09');
}

Damit die Übungsitems schon genau wie die späteren Testitems gemacht sind, haben die Teilnehmer hier nur 60 Sekunden Zeit. Die Zeit wird als Timer angezeigt, nach Ablauf kommt ein Dialogfeld, nach einem Klick auf "okay" geht es weiter. Das habe ich entsprechend dieser Anleitung umgesetzt: https://www.soscisurvey.de/help/doku.php/de:create:timer-submit

Wenn nun bei den Items, die mithilfe von PHP angezeigt werden, der Timer abläuft, wird das Item auf der nächsten Seite allerdings wieder über dem eigentlichen Item dieser Seite angezeigt, sodass sort dann zwei Items zu sehen sind: das, das gezeigt werden soll, und das von der vorigen Seite. Bei Items, die normal per drag and drop aus der Rubrikauswahl auf die Seite gezogen wurden, passiert das allerdings nicht.

Habe ich da bei der Programmierung etwas falsch gemacht? Benötige ich für diesen Fall nun doch zwei Fragebögen?

Vielen Dank schon einmal für die Hilfe!

by SoSci Survey (325k points)
> Wenn nun bei den Items, die mithilfe von PHP angezeigt werden, der Timer abläuft, wird das Item auf der nächsten Seite allerdings wieder über dem eigentlichen Item dieser Seite angezeigt,

Bitte ergänzen Sie diese Beschreibung kurz um die Frage- und Item-Kennungen, damit ich besser nachvollziehen kann, was genau da passiert.

Außerdem: Sie haben die Fragen, die doppelt angezeigt werden, nicht zufällig noch per Drag&Drop auf irgendwelche Seiten gezogen, oder? Nur zur Sicherheit - es ist ein beliebter Fehler, Fragen gleichzeitig in die Seite zu ziehen und per question() nochmal einzubinden.
by s052839 (475 points)
Kein Problem :)

Die Seite sieht aktuell folgendermaßen aus:

1. Textitem, in dem der Countdown abläuft

2. PHP-Code für die Auswahl der Frage (andere Fragen werden auf der Seite nicht gezeigt, sie sind auch nicht auf dieser oder einer anderen Seite per Drag-and-Drop eingefügt)

if(value('TV02') == 1){ // TV02 = Zufallsgenerator
    question('EG09'); // Frage, die für Experimentalgruppe angezeigt wird
} else if(value('TV02') == 2){
    question('KG09'); // Frage, die für Kontrollgruppe angezeigt wird
}

3. Code für Timer (entsprechend der Beschreibung in der Dokumentation):

//AUTOMATISCH WEITER NACH $zeitbegrenzung SEKUNDEN
if (!isset($timeR1)) {
  $timeR1 = time();
  registerVariable($timeR1);  // Die Variable $time0 auch nach Ende des PHP-Codes aufbewahren
}
// Prüfung, ob die Zeit schon abgelaufen ist
// (z.B. weil der Teilnehmer die Seite neu geladen hat)
$timer = $zeitbegrenzung;
if (time() >= $timeR1 + $timer) {
  goToPage('next');
}
// Die verbleibende Zeit muss auch dem JavaScript-Code bekannt gemacht werden
$remain = $timeR1 + $timer - time();
replace('%remain%', $remain);

// Zeit, bis der Weiter-Button angezeigt wird
replace('%weiter%', $weiter);

4. Passender Javascript-Code, damit der Countdown auch runterläuft und überhaupt die Zeit gemessen wird

Diese Art von Seitenaufbau wiederholt sich 5 mal für alle 5 Übungsitems. Die Fragekennungen für EG und KG sind dabei immer unterschiedlich (EG09-EG14 und KG09-KG14) und auch die Variable, in der die aktuelle Zeit gespeichert wird. Alle fünf Seiten werden in randomisierter Reihenfolge dargeboten und von einer zur nächsten Seite wird mit goToPage('next'); gewechselt.

Ich hoffe, das beantwortet alle offenen Fragen :)

1 Answer

0 votes
by SoSci Survey (325k points)
selected by s052839
 
Best answer

Danke für die weiteren Ausführungen.

Das einzige Problem, das ich hier auf Anhieb sehe: Wenn die Zeit bereits abgelaufen ist, wird erst oben eine Frage angezeigt, und dann unten zur nächsten Seite gesprungen:

if (time() >= $timeR1 + $timer) {
  goToPage('next');
}

Das wäre einfach dadurch zu lösen, dass der PHP-Code mit der Randomisierung unter den anderen PHP-Code rückt.

Das deckt sich aber (glaube ich) nicht mit Ihrer Fehlerbeschreibung? Um diese zu vestehen, würde ich Sie bitten, dass Sie nochmal genau beschreiben, welche Frage(n) bzw. Items genau zugleich angezeigt werden, obwohl sie nicht angezeigt werden sollten. Also, deren Kennungen?

Posten Sie bitte außerdem die Debug-Information der Seite, wo der Fehler auftritt, wenn der Fehler auftritt.

by s052839 (475 points)
Ich habe jetzt beides mal gemacht (also Debug-Modus angeschaut und PHP-Code verschoben) und tatsächlich ließ sich das Problem durch den verschobenen PHP-Code lösen.
Vielen Dank für den Support, auch wenn das wirklich eine Lösung war, auf die ich selbst hätte kommen können (aber damit hatte ich einfach nicht gerechnet)!

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

...