Liebes SoSci Survey Team,
aktuell versuche ich, eine Befragung zu gestalten bei der die einzelnen Teilnehmer jeweils zu einer "etwas" längeren Liste von verschiedenen Objekten + zugehörigen Metainformationen (in der internen DB abgelegt) jeweils identische Fragen zu ALLEN in der DB vorhandenen Objekten (ohne Randomisierung) beantworten sollen. Nach dem was ich in verschiedenen Foreneinträgen und in der Doku fand scheint das Multilevel-Design dafür ideal zu sein.
Auf einer lokal hier in der Uni bereitstehenden SoSci Survey-Installation hatte ich schon früher eine ähnlliche Befragung angelegt, die im Prinzip auf den gleichen Daten beruht, bei der allerdings je Teilnehmer nur eines der hinterlegten Objekte randomisiert gezogen wurde. Das funktionierte perfekt.
Bei meinem Versuch, für die neue Befragung dem in der Online-Doku zu "Multi-Level Struktur" gezeigten Beispiel 2 zu folgen war ich allerdings leider nicht erfolgreich. Der Teilfragebogen wird korrekt aufgerufen und erhält im ersten Durchlauf auch die korrekten Daten aus der DB, beim Klick auf "weiter" erscheinen allerdings wieder die Daten zum ersten Eintrag der DB, auch die Fortschrittsanzeige bleibt auf 0% stecken. Wird der Aufruf für multiLevelDown(...);
auskommentiert läuft die eigentliche Schleife (per loopPage(...)
aufgerufen, verifiziert über debug(...)
-Ausgabe) wie erwartet.
Um nun Probleme aus meinem Code auszuschließen habe ich in einem separaten Projekt versucht, das erwähnte Beispiel 2 aus der Doku nachzubauen, allerdings mit ähnlichen Effekten. Auch ein kurzer Test auf Ihrem Server (scheint eine minimal neuere Version zu sein gegenüber unserer lokalen Version 3.2.00) führte leider nicht weiter. Einziger Unterschied war, dass dort der Debug-Modus im Verlauf stabiler läuft - auf unserer lokalen Instanz schließt er direkt ab dem Zeitpunkt, ab dem in Schleifenablauf "weiter" gedrückt wurde.
Für Tipps, was evtl. schief läuft oder worauf noch zu achten ist wäre ich sehr dankbar nachdem ich anhand der bisherigen Foreneinträge zum Thema nicht weiterkomme...
[Ergänzung: Code im Hauptbogen]
// Liste mit Keys, über die die gewünschten Items aus der DB referenziert werden
// (hier als Beispiel, die Liste der relevanten Objekte wird im Code an anderer Stelle
// zusammengestellt und umfasst > 100 Elemente)
// (per debug() verifziert)
$items = array("APP001", "APP002", "APP003", "APP004", "APP005");
registerVariable('items');
if (count($items) > 0) {
$i = loopPage($items);
multiLevelDown('sub01', $i);
}
[Ergänzung: Code im refernezierten Bogen "sub01"]
$element = multiLevelData();
debug($element);
put('IV01_01', $element);
$inhalt = dbGet($element);
// Die Inhalte aus der DB werden in Folge per html(...) dargestellt, teilweise
// über JavaScript-Code (in einem HTML-Code-Element ergänzt) ein- oder ausklappbar
$toggleit = "<a id='klapp' style='color: black; font-weight: bold;' href='javascript:toggle(";
$toggleit = $toggleit.'"'.'apptext'.'","'.'klapp'.'"'.')'."'".">[Hier drücken, um den Beschreibungstext einzublenden]</a>";
html('<div style=" background: #555555; color: #ffffff; padding: 5px 10px 5px 10px; font-size: 1.2em; margin-bottom: 0px; margin-top: 0px; font-family: monospace; heigth: auto;"><div style="float: left; width:100%;">App-Beschreibungstext: <b>'.$inhalt[1].'</b></div><div style="clear: both;"></div></div><div id="appeinaus" style="background: #eeeeee; padding: 10px; font-family: monospace; font-size: 1.2em;">'.$toggleit.'</div><div id="apptext" style="background: #eeeeee; padding: 10px; font-family: monospace; font-size: 1.2em; display: none;">'.$inhalt[2].'</div><div style="margin-bottom:30px;"></div>');
[Ergänzung: Debug-Ausgabe im Bogen "sub01"]
Debug-Informationen beim ersten Aufruf des Bogens:
[Information] Interview number 336 is to be continued
[Information] Questionnaire main from project appanalyse126 will be used
[Information] Retention period on page 1 has been 2 seconds
[Processing] Reading answers from page 1
[Processing] Create questionnaire page no. 2
[Information] loopPage() will now repeat page 2 for 126 times, starting with value APP001
[Information] Create new record (CASE 337)
[Information] Switching record: CASE 336 → CASE 337
[Information] Interview number 337 is to be continued
[Processing] Create questionnaire page no. 1
debug() Content: $element = APP001 (string)
[Information] The internal variable IV01_01 gets a value of APP001.
[Content] Create question HH01
[Content] Create question HP01
[Content] Create question HD01
[Content] Create question HD07
[Content] Create question HD02
[Content] Create question HD08
[Content] Create question HD03
[Content] Create question HD09
[Content] Create question HD04
[Content] Create question HD10
[Content] Create question HD05
[Content] Create question HD11
[Content] Create question HD06
[Content] Create question IN02
Ab dem Drücken auf "Weiter" wird zwar noch der richtige Bogen dargestellt, aber ohne Inhalte. Auch werden (auf unserer lokalen SosciSurvey-Instanz v.3.2.00) keinerlei Debug-Informationen mehr angezeigt, der Bogen scheint in einer Endlos-Schleife festzuhängen.
Identische Effekte treten auf, wenn das oben erwähnte Beispiel 2 zum Abschnit "Multi-Level Struktur" der Online-Doku per Copy/Paste übernommen wird.