Wir versuchen schon länger ein Problem zu lösen und hoffen, dass ihr uns dabei helfen könnt.
Unser Fragebogenprojekt besteht im wesentlichen aus 8 Begriffen, zu denen via Texteingabe zunächst angegeben werden soll, was den TeilnehmerInnen dazu einfällt (dazu gibt es 5 Eingabefelder). Anschließend soll (auf den nächsten Seiten) jede der genannten Antworten auf einer Skala (-/0/+) bewertet werden (eine Bewertungsseite pro Antwort).
Die Vorgabe der Begriffe ist randomisiert, wobei jeweils die Seite mit dem Begriff (und 5 Texteingabefeldern) sowie die folgenden Seiten, auf denen die genannten Antworten bewertet werden sollen (maximal 5 - eine Seite pro Antwort) als Blöcke definiert sind.
Der Code für die Randomisierung ist:
if (!isset($blocks)) {
$blocks = array('B1Start-B1End','B2Start-B2End','B3Start-B3End','B4Start-B4End','B5Start-B5End','B6Start-B6End','B7Start-B7End','B8Start-B8End');
shuffle($blocks);
//Reihenfolge speichern
for ($i=0; $i<count($blocks); $i++) {
$id = id('BI01', $i + 1);
put($id, $blocks[$i]);
}
$blocks[] = 'Anleitung Frageboegen';
registerVariable($blocks);
}
setPageOrder($blocks);
Der Code für die Bewertung der genannten Antworten ("Ass1-AssX") ist:
// Create a list of all items in the question
$items = getItems('FA01');
// Determine items answered
$answered = getItems('FA01', '>', 0);
if (count($answered) == 1) {
goToPage('B1End');
}
if (count($answered) == 2) {
goToPage('Ass2');
}
if (count($answered) == 3) {
goToPage('Ass3');
}
if (count($answered) == 4) {
goToPage('Ass4');
}
if (count($answered) == 5) {
goToPage('Ass5');
}
sodass (beginnend bei der letzten genannten Antwort), nur jene Zeilen auf den nächsten Seiten zur Bewertung angezeigt werden, in denen eine Antwort genannt wurde.
Der Code für die Bewertungsseiten sieht so aus (hier die Bewertung der 5. Antwort zum 1. Begriff):
$ass05 = value('FA01x05');
html('<H2><p align="center"><b>'.$ass05.'</b></p></H2>');
(darunter ist ein Eingabefeld mit den Optionen -/0/+)
Hierbei gibt es zwei Probleme:
1.) Wenn beispielsweise nur eine Antwort genannt wird, wird diese auf der nächsten Seite korrekt zur Bewertung vorgegeben. Allerdings wird auf der nächsten Seite eine "leere Antwort" zur Bewertung vorgegeben (es erfolgt also ein Verweis auf ein Texteingabefeld, das nicht ausgefüllt wurde). Wir können nicht nachvollziehen, woher dieser Fehler stammt. Im Debug Mode tritt dieser Fehler auch nicht auf, in allen anderen Modi allerdings schon.
(Anmerkung dazu: Der Fehler tritt nicht konsistent auf: auf manchen PCs funktioniert es im Debug Modus problemlos, auf manchen nicht. Gestern trat der Fehler auf manchen PCs auch im normalen Modus nicht auf, ohne das etwas am Code geändert worden wäre.)
2.) Wenn auf der Bewertungsseite auf "weiter" geklickt wird, ohne dass eine Bewertung abgegeben wurde (markierte Fragen müssen beantwortet werden), wird als nächste Seite wieder eine Bewertungsseite einer "leeren Antwort" angezeigt (gleiches Problem wie oben). Wenn sofort eine Bewertung angeklickt wurde und dann auf "weiter" geklickt wird, besteht dieses Problem nicht.
Wir sind über alle Vorschläge zur Behebung der Probleme sehr dankbar.
LG