0 votes
in SoSci Survey (dt.) by s093836 (145 points)

Sehr geehrte Damen und Herren,

ich arbeite gerade an meiner Masterarbeitsstudie und möchte 80 Cued Recall Fragen über Loop präsentieren. Zunächst hatte ich die 80 Cued Recall-Fragen (F100_01-F180_01) in einer Loop-Schleife und das hat alles grob funktioniert, außer, dass die Studie wegen Überschreitung der 5s Verarbeitungsdauer immer abgebrochen ist. Ich habe danach 8 Loop-Schleifen angelegt mit je 10 Fragen. Im folgenden schreibe ich den Code für die zweite Loop-Schleife

Seite 1

loopToPage('fcrend2', 10); // Loop 10 times through the following pages till loopend

// Set up the questions for the following pages for each of the 10 word pairs
$fcrloop2 = array(
  0 => array('F111_01'),
  1 => array('F112_01'),
  2 => array('F113_01'),
  3 => array('F114_01'),
  4 => array('F115_01'),
  5 => array('F116_01'),
  6 => array('F117_01'),
  7 => array('F118_01'),
  8 => array('F119_01'),
  9 => array('F120_01')
);

registerVariable($fcrloop2);

Seite 2

// Get current loop number
$mb = loopIndex();

// Get the set of questions associated with the current loop number
$quest = $fcrloop2[$mb];

// Show the question
question($quest[0]);

Seite 3

// Get current loop number
$mb = loopIndex();

Mein Problem ist Folgendes:
Ab der zweiten Loop-Schleife startet die Reihenfolge nicht bei 0 sondern bei 9. 0 wird übersprungen und 9 wird am Anfang und am Ende der Loop-Schleife gezeigt, also doppelt.

Ich finde es schwer das Problem zu beschreiben und bin auch ein absoluter Anfänger im Programmieren, darum hier nochmals mit anderen Worten:

Bis zur Präsentation von F110 klappt alles

Dann beginnt die zweite Schleife:
Diese beginnt und endet mit F120 --> F111 wird nicht angezeigt

Dann beginnt die dritte Schleife:
Diese beginnt und endet mit F130 --> F121 wird nicht angezeigt

$icrloop2 = array(
    0 => array('F111_01'), // --> wird übersprungen
    1 => array('F112_01'),
    2 => array('F113_01'),
    3 => array('F114_01'),
    4 => array('F115_01'),
    5 => array('F116_01'),
    6 => array('F117_01'),
    7 => array('F118_01'),
    8 => array('F119_01'),
    9 => array('F120_01') //  --> wird am Anfang und am Ende der Schleife angezeigt
);

Ich hoffe ich konnte meine Frage verständlich ausdrücken.
Für Ihre Hilfe wäre ich sehr dankbar. Bis dahin wünsche ich Ihnen ein schönes Wochenende.

by SoSci Survey (304k points)
>  außer, dass die Studie wegen Überschreitung der 5s Verarbeitungsdauer immer abgebrochen ist

Fangen wir doch einmal damit an .... um 5 Sekunden zu überschreiten, muss schon einiges gerechnet werden. Ich sehe spontan nichts, was in Ihrem Code groß rechnet.

> Ich hoffe ich konnte meine Frage verständlich ausdrücken.

Schon, aber ich bräuchte zur Orientierung noch mehr Infos. Insbesondere haben Sie ja bei der zweiten und dritten Schleife noch mehr PHP-Code. Könnten Sie diesen bitte in Ihrer Frage noch ergänzen.

Und bitte lesen aus aus dem loopToPage() noch das Ergebnis aus uns lassen Sie es ausgeben, z.B.

$i = loopToPage('fcrend2', 10);
debug($i);

Und dasselbe für den loopIndex(), also z.B.

$mb = loopIndex();
debug($mb);

Und dann müssten Sie bitte berichten, ob da ab der zweiten und dritten Schleife etwas anderes als 0 in der ersten Weiderholung kommt.

Wichtig auch: Arbeiten Sie irgendwo mit isset() oder registerVariable() ?
by s093836 (145 points)
Vielen Dank für Ihre Antwort,

In der folgenden Antwort, habe ich Ihnen den PHP Code der ersten drei Schleifen ergänzt.

1 Answer

0 votes
by s093836 (145 points)

Vielen Dank für die schnelle Antwort,

meine Betreuerin hat mich sehr bei der Programmierung der Studie unterstützt. Wir haben mit vielen Platzhaltern gearbeitet und häufig randomisiert, was vielleicht der Grund für die 5s Rechnungszeit war. Durch die Aufteilung der Listen hatten wir dieses Problem gelöst, dafür haben wir jetzt das Problem mit der Wiederholung.

Im Folgenden schicke ich Ihnen den vollständigen PHP-Code der ersten 3 Schleifen.

1. Loop-Schleife, 1. Seite

$da =loopToPage('fcrend1', 10); // Loop 10 times through the following pages till loopend
debug($da);

    // Set up the questions for the following pages for each of the 10 word pairs
    $fcrloop1 = array(
      0 => array('F101_01'),
      1 => array('F102_01'),
      2 => array('F103_01'),
      3 => array('F104_01'),
      4 => array('F105_01'),
      5 => array('F106_01'),
      6 => array('F107_01'),
      7 => array('F108_01'),
      8 => array('F109_01'),
      9 => array('F110_01')
    );
    
    registerVariable($fcrloop1);

1. Schleife, 2. Seite

// Get current loop number
$ma = loopIndex();
debug($ma);

// Get the set of questions associated with the current loop number
$db = $quest = $fcrloop1[$ma];
debug($db);

// Show question
$dc= question($quest[0]);
debug($dc);

1. Schleife, 3. Seite

// Get current loop number
$ma = loopIndex();
debug($ma);

2. Schleife, 1. Seite

$z = loopToPage('fcrend2', 10); // Loop 10 times through the following pages till loopend
debug($z);

// Set up the questions for the following pages for each of the 10 word pairs
$fcrloop2 = array(
  0 => array('F111_01'),
  1 => array('F112_01'),
  2 => array('F113_01'),
  3 => array('F114_01'),
  4 => array('F115_01'),
  5 => array('F116_01'),
  6 => array('F117_01'),
  7 => array('F118_01'),
  8 => array('F119_01'),
  9 => array('F120_01')
);

registerVariable($fcrloop2);

2. Schleife, 2. Seite

// Get current loop number
$mb = loopIndex();
debug($mb);

// Get the set of questions associated with the current loop number
$quest = $fcrloop2[$mb];

// Show  question
question($quest[0]);

2. Schleife, 3. Seite

// Get current loop number
$mb = loopIndex();
debug($mb);

3. Schleife, 1. Seite

$l=loopToPage('fcrend3', 10); // Loop 10 times through the following pages till loopend
debug($l);

// Set up the questions for the following pages for each of the 10 word pairs
$fcrloop3 = array(
  0 => array('F121_01'),
  1 => array('F122_01'),
  2 => array('F123_01'),
  3 => array('F124_01'),
  4 => array('F125_01'),
  5 => array('F126_01'),
  6 => array('F127_01'),
  7 => array('F128_01'),
  8 => array('F129_01'),
  9 => array('F130_01')
);

registerVariable($fcrloop3);

3. Schleife, 2. Seite

// Get current loop number
$mc = loopIndex();
debug($mc);

// Get the set of questions associated with the current loop number
$quest = $fcrloop3[$mc];

// Show question
question($quest[0]);

3. Schleife, 3. Seite

// Get current loop number
$mc = loopIndex();
debug($mc);

Wie Sie sehen, habe ich in allen drei Schleifen praktisch den gleichen PHP-Code. Außer das ich Variablen anders benannt habe. Fehlt vielleicht Code?

Ich habe mir die Ergebnisse aus dem loopToPage () und dem loopindex() aulesen lassen und wie vermutet wird die 0. Zeile in der Schleife übersprungen.

Die Ergebnisse von loopToPage () und dem loopindex() beinhalten immer die gleichen Zahlen in allen Wiederholungen aller Schleifen außer dem ersten Durchgang ab der zweiten Schleife.

In jedem ersten Durchgang der zweiten, dritten, vierten usw. Schleife beginnt der loopToPage () wie gewünscht bei 0 aber der loopindex() bei 9, was die Wiederholung des letzten Items erklärt.
Danach läuft alles wie gewünscht.
loopToPage () 1 aber und der loopindex() 1.
loopToPage () 2 aber
und der loopindex() 2.
loopToPage () 3 aber und der loopindex() 3.
...
loopToPage () 9 aber
und der loopindex() 9.

(Ich habe einiges herumprobiert, ob ich das array umbennen kann und wenn ich es mit 9 starte, dann wird das 1. Item der Schleife auch angezeigt aber dann komme ich am Ende der Schelife nicht hin und außerdem dachte ich, man beginnt Arrays immer mit 0.) Bisher habe ich noch keine Lösung gefunden aber der Tipp mit debug () war schonmal sehr hilfreich.

Ich verwende registerVariable() zu Speicherung von Arrays aber im Rahmen dises PHP Codes sonst nicht. isset() habe ich soeben auf allen Seiten hinzugefügt.

Vielen Dank für ihre Hilfe und liebe Grüße

by s093836 (145 points)
Guten Morgen,

könnten Sie mir vielleicht eine Einschätzung geben, wie schnell Sie denken, dass das Problem behoben werden kann? Und ob es behoben werden kann?
Falls es sehr lange dauern würde oder gar nicht möglich ist, würde ich mich mit meiner Betreuerin beraten, ob ich die Erhebung trotzdem starten kann.

Liebe Grüße.
by SoSci Survey (304k points)
Ich dachte an Montag ... falls keine unerwarteten Komplikationen auftauchen.
by s093836 (145 points)
Vielen Dank für Ihre Einschätzung.

Ich denke bis Montag kann ich jetzt auch noch warten. Die Studienerstellung und- Vortestung hat sowieso schon wesentlich länger  gedauert als ich ursprünglich eingeplant habe.
by SoSci Survey (304k points)
Chrome scheint sich in dem Punkt AutoFill mittlerweile an die Web-Standards zu halten - das war vor einigen Versionen noch anders. Entsprechend konnten wir die Lösung von damals aktualisieren.

Soweit ich sehe, funktioniert Ihr Loop nun wie er soll ohne AutoFill. Falls Ihnen noch etwas auffällt, sagen Sie bitte Bescheid!

Hoffen wir, dass Chrome das Verhalten mit dem nächsten Update nicht gleich wieder ändert ;)
by s093836 (145 points)
Vielen lieben Dank für Ihre Hilfe,

ich habe es mir nochmal mit Chrome und Edge angeguckt und mir ist nichts mehr aufgefallen :D

Ich konnte nun endlich mit der Erhebung meiner Studie starten und freue mich darüber sehr :)

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

...