0 votes
in SoSci Survey (dt.) by s118913 (240 points)
edited by s118913


Vielen Dank für die wirklich schnelle Antwort!!
ich habe jetzt unter 'Fragebogen testen' festgestellt, dass es leider nicht möglich ist auf weiter zu klicken! Dabei soll die Besetzung des ersten Rangs Pflicht und die Besetzung der Ränge 2-5 optional sein.

Zudem habe ich feststellen müssen, dass es nicht möglich ist auf weiter zu klicken, wenn alle Ränge besetzt wurden.

Bei beiden Fällen kommt dieselbe Fehlermeldung mit folgendem Text:
Bitte beantworten Sie auch diese Frage – Ihre Antwort auf die Frage ist für die Studie sehr wichtig.


Update 30.08.2019:
Möglicher Zusammenhang mit der Fehlermeldung ist der PHP-Code auf der nächsten Fragebogenseite:

Die Rangordnungsfrage hat folgende Kennung bei mirF401

by SoSci Survey (306k points)
Nur als kurze Zwischenmeldung: Ihre Frage ist nicht untergegangen, wir müssen nur noch genauer kontrollieren, wo es hakt.

1 Answer

0 votes
by SoSci Survey (306k points)
selected by s118913
 
Best answer

Wir haben uns das Ganze nochmal angesehen und es scheint alles korrekt zu funktionieren. Bitte legen Sie in Ihrer Frage die folgenden Einstellungen fest:

Anzahl zu vergebender Ränge: 5

Ränge eingefordert: 1

Teilen Sie uns bitte auch gerne mit, was bei Ihnen bisher eingestellt war. Das zweite, von Ihnen beschriebene Problem, sollte natürlich nicht auftreten.

by s118913 (240 points)
edited by s118913
Genau, ich habe das genau so eingestellt.

Ich vermute die Fehlermeldung hängt mit dem PHP Code auf der nächsten Fragebogenseite zusammen. Und zwar soll in der nächsten Frage die ersten drei Antworten angezeigt werden, die man zuvor in der Rangordnungsfrage zugeordnet hat.
Dazu wurde folgender PHP-Code verwendet (siehe auch Screenshot oben in der ursprünglich gestellten Frage am 26.08.2019):

$ranks = valueList('F401');  // Liefert eine Liste von Variablen und Rängen
asort($ranks);  // Aufsteigend nach Rängen sortieren
$keys = array_keys($ranks);  // Die Variablennamen extrahieren
// Und jetzt noch die Top3 als Platzhalter ablegen
$itemsIDs = array();
for ($i=0; $i<3; $i++) {
  $itemIDs[] = (int)trim(substr($keys[$i], 5), '0');
}
question('F402', $itemIDs);



Wie kann ich diese Fehlermeldung beheben?
by SoSci Survey (306k points)
Wir sprechen nach wie vor von der Meldung "bitte beantworten Sie auch diese Frage"? Diese wird mit an Sicherheit grenzender Wahrscheinlichkeit direkt von der Antwortpflicht erzeugt.

Wenn das weiterhin auftritt, posten Sie gerne einen Pretest-Link direkt (!) zu der Seite mit der Rangordnungs-Frage. Dann sehe ich mir das einmal an.
by SoSci Survey (306k points)
Einen gültigen Pretest-Link können Sie unter Befragungsprojekt -> Pretest erzeugen.
by s118913 (240 points)
edited by s118913
Danke!
Link:https://www.soscisurvey.de/test168991/?act=jgFshe1QvX5ItAuhFOOcRLwv

Wie kann man den Fehler beheben, sodass man nun auf weiter klicken kann?
by SoSci Survey (306k points)
Wenn Sie jetzt noch einen Debug-Link erstellen könnten (gleicher Menüpunkt, nur andere Auswahl im Dropdown), dann kann ich es lösen.

Wie SIe vielleicht schon bemerkt haben, wird eine andere Fehlemeldung angezeigt, je nachdem, ob Sie 1+ oder gar keinen Rang besetzen. Mein Versacht ist, dass der Text oben auf der Seite (F404) womöglich kein Text ist, sondern eine Frage - und dass die Fehlermeldung von diese Frage erzeugt wird. Um sicher zu gehen, wäre aber der Debug-Link erforderlich.
by SoSci Survey (306k points)
Danke für den Link. Die Fehlermeldung stammt von dem ersten der beiden offenen Eingabefelder, die Sie bei den "Sonstiges"-Optionen ergänzt haben.

Aus der Debug-Information rechts oben:

> Keine Antwort für F405_01
> [Information]    In der Frage F405 fehlt eine erforderliche Antwort

Bitte wählen Sie einmal das erste Item der Frage F405 in der Navigation aus und prüfen Sie, ob dort noch eine Antwortpflicht aktiv ist.
by s118913 (240 points)
Danke es funktioniert, nachdem ich die Antwortpflicht aus F405 gelöscht habe!

Der Fragebogen ist aber noch nicht perfekt:  Wäre es aber möglich, dass man erst zur nächsten Seite kommt, wenn man das erste Feld besetzen hat?
Weil im Moment kommt man auch auf die nächste Seite, wenn man ein Kärtchen zur Rangnummer 5 verschiebt.

Weil es ist für die darauffolgende Frage wichtig, dass mindestens Rangnummmer 1 ausgefüllt wird.
by SoSci Survey (306k points)
> Weil es ist für die darauffolgende Frage wichtig, dass mindestens Rangnummmer 1 ausgefüllt wird.

Wenn Sie unbedingt den ersten Rang besetzt haben möchten, versuchen Sie es bitte mit folgender individuellen Antwortprüfung auf der Folgeseite:

$r1 = getItems('F401', '==', 1);
if (count($r1) == 0) {
  repeatPage('AntwortFehlt');
}
by s118913 (240 points)
Vielen Dank! Ich habe jetzt folgenden Code auf der nächsten Seite eingefügt:
$r1 = getItems('F401', '==', 1);
if (count($r1) == 0) {
  repeatPage('Besetzen Sie bitte zuerst das Antwortfeld 1');
}


Alles funktioniert prima bis auf den Fall, wenn der Befragte eines der Ränge mit "Sonstiges: [freies Textfeld]" besetzt, dann bekomme ich folgende Fehlermeldung:
"Fehler im Fragebogen (Seite 10)
Im Befragungsprojekt existiert kein Text mit der Kennung Besetzen Sie bitte zuerst das Antwortfeld 1"

Die Fehlermeldung taucht nur auf, wenn der Befragte die Antwortoption mit dem freien Textfeld platziert.
Dabei habe ich insgesamt zwei Kärtchen mit der Aufschrift "Sonstiges"und einem freien Textfeld.
by SoSci Survey (306k points)
Die Fehlermeldug sollte immer auftauchen, wenn der erste Rang nicht besetzt wird. Die Funktion repeatPage() erwartet als Parameter die Kennung eines Textes, nicht den Text selbst.

Wenn eine der offenen Optionen auf Rang 1 nicht akzeptiert wird, ergänzen Sie bitte in der zweiten Zweile noch ein

debug($r1);

und posten Sie die Debug-Information, welche auf der Seite angezeigt wird. Danke.
by s118913 (240 points)
Also ich habe jetzt nur den ersten Rang besetzt und mir wird immer noch dieselbe Fehlermeldung mit folgendem Text angezeigt:
"Fehler im Fragebogen (Seite 10)
Im Befragungsprojekt existiert kein Text mit der Kennung Besetzen Sie bitte zuerst das Antwortfeld 1"

Folgende Debug-Information wird angezeigt:
"Hinweis (Seite 10)
Debug-Information für $r1:
Array (ohne Elemente)"
by SoSci Survey (306k points)
Könnten Sie bitte auch die Debug-Information posten, die rechts oben bei "Debug Information" angezeigt wird? Danke.
by s118913 (240 points)
[Information]    Interview Nummer 584 wird fortgesetzt
[Information]    Der Fragebogen 4AP im Projekt test168991 wird verwendet
[Information]    Die Verweildauer auf Seite 9 war 4 Sekunden
[Verarbeitung]    Lese Antworten von Seite 9
[Information]    Keine Antwort für P405_01
[Information]    Antwort auf P405_02 = 1
[Information]    Keine Antwort für P405_03
[Information]    Keine Antwort für P405_04
[Information]    Keine Antwort für P405_05
[Information]    Keine Antwort für P405_06
[Information]    Keine Antwort für P405_07
[Information]    Keine Antwort für P405_08
[Information]    Keine Antwort für P405_09
[Information]    Keine Antwort für P405_10
[Information]    Keine Antwort für P405_11
[Information]    Keine Antwort für P405_12
[Information]    Antwort auf P405 = 1
[Information]    Keine Antwort für P404_01
[Information]    Keine Antwort für P406_01
[Information]    Fragen bisher zu 88% vollständig beantwortet
[Information]    Entsprechend Filter F201/F1 wird Seite 10 (P402) angezeigt.
[Verarbeitung]    Erstelle Seite 10 in Fragebogen 4AP
debug()    Inhalt: Array (ohne Elemente)
[Information]    Die vorhergehende Seite wird erneut vorlegt
[Information]    Entsprechend Filter F201/F1 wird Seite 9 (P401) angezeigt.
[Verarbeitung]    Erstelle Seite 9 in Fragebogen 4AP
[Inhalt]    Erstelle Frage P405
by SoSci Survey (306k points)
Ihre Rangordnung ist die Frage P405 oder F401? In der Debug-Information stehen Antworten für P405, im PHP-Code verweisen Sie auf F401. Ich denke, es hängt damit zusammen...
by s118913 (240 points)
edited by s118913
Vielen Dank!
by SoSci Survey (306k points)
> Fehler im Fragebogen: Undefined offset: 1

Das bedeutet, dass Sie auf den Index 1 eines Arrays zugreifen möchten, dieser aber nicht existiert. Also vermutlich hier:

010   $itemIDs[] = (int)trim(substr($keys[$i], 5), '0');

Es geht um die Variable $keys -der einzige Array-Zugriff mit eckigen Klammern. Die Variable wir hier definiert:

> $keys = array_keys($ranks);

Vermutlich wurde nur ein Rang vergeben, deshalb kann auf die Ränge 2 und 3 nicht zugegriffen werden. Die Lösung ist denkbar einfach:

> for ($i=0; $i<min(3, count($keys); $i++) {

Durch das min() wird entweder bis 3 gezählt oder bis zur Anzahl der vorhandenen Werte, was mittels count($keys) ermittelt wird.

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

...