0 votes
in SoSci Survey (dt.) by s222544 (555 points)

Hallo SoSci Survey Support Team,

in meiner laufenden Umfrage gab es beim ersten Probanden (mobile Version) folgende Fehlermeldung. Es traten keine Fehler beim zweiten Probanden auf (auch mobile Version).

Fehler 1: There is no text with the ID in this survey project.

Fehler 2: Undefined array key '''' line 40, 41

Fehler 3: Trying to access array offset on value of type null

Ich bitte um Ihre Antwort, wie ich diese Fehler schnellstmöglich beheben kann.

Hier der Link zum ausgefüllten Fragebogen: https://www.soscisurvey.de/finrebal/?s2preview=kEd6Q4KKpyrbtDJ0HSNQ2ZSRRkGJMLu2&case=174&csfr

Vielen Dank im Voraus!

1 Answer

0 votes
by SoSci Survey (302k points)

Das klingt so, als hätten Sie mit PHP-Code und einem Array gerarbeitet - aber es ist kein Array, das Sie verwenden:

Fehler 3: Trying to access array offset on value of type null

Im vermeintlichen Array, welches keines ist, greifen Sie auf die Array-Indizes 40 und 41 zu, die es aber im Nicht-Array nicht gibt:

Fehler 2: Undefined array key '''' line 40, 41

Das führt dazu, dass die Variable, die Sie aus dem Array speisen, nicht definiert ist, und einen Text mit ohne ID gibt es nicht:

Fehler 1: There is no text with the ID in this survey project.

Ergo ... finden Sie bitte heraus, um welches Array es wohl geht (die Fehlermeldungen sollten eine Seite bezeichnen) und klären Sie, warum es kein Array ist, dass Sie da erwartet hätten.

by s222544 (555 points)
Vielen Dank!

auf der entsprechenden Seite verwende ich als array (meiner Meinung nach) nur folgenden Code:
registerVariable($prozente);
$prozente = [
'1_C'=> [76,6,18],
'2_C'=> [77, 4, 19],
'3_C'=> [62,32,6],
...
];


$code = value('EX06_01');
preset('MO01_01', ($prozente[$code][0]));
preset('MO01_02', ($prozente[$code][1]));
preset('MO01_03', ($prozente[$code][2]));

Im Pre-test oder im debug modus gab es nie Probleme. Auch in der base Version kamen nie Fehler auf, obwohl der Code identisch ist.

Wie kann ich das Problem angehen?

Vielen Dank im Voraus!
by s222544 (555 points)
Hier ein Link zur betroffenen Seite im Debug Modus: https://www.soscisurvey.de/finrebal/index.php?i=RAQT1FCJTFH9&rnd=OMSS
by SoSci Survey (302k points)
Okay, es ist gar nicht so kompliziert. Ihr Array verwendet als Indizes (Schlüssel) die Strings "1_C" bis "3_C".

Was die Funktion value() liefert, hängt vom Fragetyp und Datensatz ab. Was ist EX06 denn für ein Fragetyp? Und falls es eine interne Variable ist, woher kommt der Inhalt. Zu dieser Zeile wäre die Debug-Information interessant:

$code = value('EX06_01');

Außerdem sollten Sie im Datensatz in der Variable EX06_01 mal nachsehen, was da so gespeichert ist.

Sollte da irgendwo etwas anderes als "1_C", "2_C" oder "3_C" stehen, liefert $prozente[$code] nichts zurück (NULL). Und daraus wiederum kann kein Element [0], [1] oder [2] entnommen werden.

Tipp: Fangen Sie Fehler ab.

$code = value('EX06_01');
if (!array_key_exists($code, $prozente)) {
  text('schiefgelaufen');
  pageStop();
  buttonHide()
}
by s222544 (555 points)
Vielen Dank für Ihre Nachricht.
Das Array läuft von 1 bis 16 jeweils für C und T (KG und EG) in meinem Experiment.
EX06 ist die interne Variable, die die 10 Stimuls speichert, die mittels Zufallsgenerator gezogen werden.
Vielleicht zum besseren Verständnis, hier der PHP Code vor dem Array:
if (value('EX03') == 1) { // EG == 1 KG ==2
  // Zufallsgenerator EG stimuli ( EX04) einbinden
  show('EX04');
  putList('EX06', array_values(valueList('EX04', NULL, 'label')));  
} else {
  // Zufallsgenerator KG stimuli einbinden
  show('EX05');
  putList('EX06', array_values(valueList('EX05', NULL, 'label')));
}
text(value('EX06_01'));

darunter dann:
registerVariable($prozente);
$prozente = [
'1_C'=> [76,6,18],
'2_C'=> [77, 4, 19],
'3_C'=> [62,32,6],
'4_C' => [57,39,4],
'5_C'=> [6,52,42],
'6_C'=> [2,75,23],
'7_C'=> [8,82,10],
'8_C'=> [1,95,4],
'9_C'=> [77,9,14],
'10_C'=> [75,11,14],
'11_C'=> [50,38,12],
'12_C'=> [56,28,16],
'13_C'=> [4,78,18],
'14_C'=> [2,75,23],
'15_C'=> [3,92,5],
'16_C'=> [52,40,8],
'1_T'=> [76,6,18],
'2_T'=> [77, 4, 19],
'3_T'=> [62,32,6],
'4_T' => [57,39,4],
'5_T'=> [6,52,42],
'6_T'=> [2,75,23],
'7_T'=> [8,82,10],
'8_T'=> [1,95,4],
'9_T'=> [77,9,14],
'10_T'=> [75,11,14],
'11_T'=> [50,38,12],
'12_T'=> [56,28,16],
'13_T'=> [4,78,18],
'14_T'=> [2,75,23],
'15_T'=> [3,92,5],
'16_T'=> [52,40,8]
];

$code = value('EX06_01');
preset('MO01_01', ($prozente[$code][0]));
preset('MO01_02', ($prozente[$code][1]));
preset('MO01_03', ($prozente[$code][2]));

und danach meine Fragen.
Ich habe extra nichts (also entweder 1_C oder 12_T) in der EX06 abgespeichert, weil der Zufallsgenerator entscheiden soll, welche Kombination gewählt wird.
by SoSci Survey (302k points)
> Ich habe extra nichts (also entweder 1_C oder 12_T) in der EX06 abgespeichert

Ihr Code speichert aber schon etwas hinein. Und damit nochmal meine Frage: Was steht denn in den Datensätzen in EX06_01?

Irgendwo muss dort etwas anderes als einer der gültigen Schlüssel stehen ... denn Sie haben ja diese Fehlermeldung berichtet bekommen. Eventuell können Sie anhand der Zeit und der mobilen Darstellung auch eingrenzen, in welchen Interviews das Problem wohl wahrschienlich auftrat.
by s222544 (555 points)
Vielen Dank für die Erklärung.

In EX06_01 bis EX06_10 werden 1_C, 4_C, 10_T etc. abgespeichert, jedoch ohne Anführungszeichen.

Das Problem trat nur ein einziges Mal auf, in der allerersten Befragung, mobile Version. In der Excel Datei steht nur, dass der Proband Android als Anbieter verwendet hat (als Einziger), dass dem Probanden die EG zugewiesen wurde und, dass die zweite Seite die letzt-bearbeitete Seite ist.

Dem nächsten mobilen Nutzer wurde die KG zugewiesen und es gab keine Probleme.

Leider habe ich (noch) keine anderen Probanden, um sicher festzustellen, dass das Problem bei mobiler Version und EG auftritt.

Wie kann ich das Problem dennoch lösen?

Vielen Dank!
by SoSci Survey (302k points)
Der PHP-Code arbeitet vollkommen unabhängig davon, ob Sie den Fragebogen mobil oder auf dem PC ausfüllen.

Ausnahme: Wenn Sie unter "Fragebogen zusammenstellen" -> "Fragebögen verwalten" mehr als einen Fragebogen definiert haben, und die mobilen Nutzer:innen einen anderen bekommen als die Personen mit großem Bildschirm, dann können natürlich unterschiedliche PHP-Codes zum Einsatz kommen.

Wenn die Werte in EX06 im ersten Interview passen, wäre meine nächste Vermutung, dass der PHP-Code nachträglich noch geändert wurde. Die können Sie unter "Fragebogen zusammenstellen" -> "Interner Code" anhand der Historie überprüfen.

Ich gehe aber, wie oben dargelegt, nicht davon aus, dass es mit der mobilen Darstellungn zusammenhängt.
by s222544 (555 points)
Vielen Dank für Ihre Antwort!

Ich habe zwei Fragebögen, einen für die mobile Darstellung, einen für base.
Die erste mobile Umfrage hat nicht funktioniert, die zweite mobile schon. Alle base Umfragen haben auch funktioniert.

Den PHP Code habe ich nicht nachträglich verändert.

Der PHP Code ist in beiden Versionen (mobil und base) identisch.

Bereits mehrere Probanden in EG haben den Fragebogen erfolgreich ausgefüllt.

Woran kann es noch liegen?

Vielen Dank im Voraus.

P.S. Bei Anonymisieren bei Abschluss und Serien E-Mail, gibt es irgendeine Möglichkeit den ersten Probanden (mobil, bei dem die Umfrage nicht funktioniert hat, auswendig zu machen und ihm den Link erneut zu schicken)?
by SoSci Survey (302k points)
> P.S. Bei Anonymisieren bei Abschluss und Serien E-Mail, gibt es irgendeine Möglichkeit den ersten Probanden (mobil, bei dem die Umfrage nicht funktioniert hat, auswendig zu machen und ihm den Link erneut zu schicken)?

Nein. Zumindest keinen ohne zusätzlichen Aufwand (~60 €), der zudem abhängig wäre vom Timing zwischen Versand, Server-Backups und Ausfüllen.

> Ich habe zwei Fragebögen, einen für die mobile Darstellung, einen für base.

Prüfen Sie bitte die Historie des mobilen Fragebogens (interner Code), ob der PHP-Code tatsächlich 1:1 übereinstimmt ... und was ganz einfach möglich wäre: Rufen Sie einmal die Druckansicht des betroffenen Falls unter "Daten ansehen" auf und prüfen Sie, ob der Fehler weiterhin angezeigt wird. Wenn nicht, dann wurde wohl doch etwas am Fragebogen geändert. Wenn schon, dann sollte sich das Problem eingrenzen lassen.
by s222544 (555 points)
Vielen Dank für Ihre Unterstützung! Ich konnte das Problem beheben!

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

...