0 votes
in SoSci Survey (dt.) by s133210 (110 points)

Hallo,
Ich möchte auf der Seite nach der Einwilligungserklärung einen zurück-Button einfügen für diejenigen, die bei der EW-Frage (DV01) mit Nein (2. Auswahloption) angekreuzt haben. Ich habe auf Seite 3 (die Seite nach der Einwilligungsfrage - diese enthält die Einwilligungsfrage und darunter einen Informationstext) folgenden PHP-Code eingefügt:

if (value('DV01') != 2);
  option('backbutton', true);
  option('nextbutton', false);
  pageStop();

und bekomme keinen zurück-Button angezeigt, sondern nur den eingegebenen verabschiedungstext und das Interview wird abgebrochen. Außerdem erscheint folgende Fehlermeldung:
...
Warning (page 3)
The variable DV01 has not been asked on a previous page during this interview. Therefore value() cannot determine any answer, yet.

Was habe ich falsch gemacht und was kann ich tun?

by s134006 (190 points)
Ich weiß nicht , ob das der einzige Fehler ist. Aber probieren Sie mal folgendes:
ein if Befehl braucht einen Körper, also zwei geschleifte Klammern, die getriggert werden, falls die Bedingung zutrifft.

if (value('DV01') != 2) {
option('backbutton', true);
option('nextbutton', false);
pageStop();
}
by s133210 (110 points)
hat leider nicht geklappt mit der geschwungenen Klammer.
Code sieht jetzt so aus:
if (value('DV01') != 2) {
 text('DV05');
  option('backbutton',true);
  option('nextbutton',false);
  pageStop();
}
aber kein Zurück-Button da :(
by s133210 (110 points)
Noch eine ANmerkung. Ich habe jetzt versucht, via Testlink die Umfrage auszufüllen. Da erscheint plötzlich ein Zurück-Button, ABER nicht an richtiger Stelle. Wenn ich die Einwilligungsfrage mit nein beantworte, ist alles wie oben beschrieben, das Interview wird abgebrochen ohne Rückkehrmöglichkeit. Wenn bei Ja ein Kreuz gesetzt wurde, werde ich plötzlich zur Seite mit dem Abbruchtext weitergeleitet.MIT Zurück-Button! DH, prinzipiell ist der Befahl dann wohl richtig :) aber wird an falscher stelle eingesetzt?
by s134006 (190 points)
Grundsätzliche Frage:
1. Wenn Sie verhindern wollen das ein Teilnehmer nicht ohne EW weitermacht, warum lassen Sie ihn dann überhaupt auf die Seite 3 gehen? :)

2. Ist ihr zurück Button im Layout ein- oder ausgestellt?

3. Warum verwenden Sie pageStop?

Ich würde es folgendermaßen probieren.
- Stellen sie in Ihrem Layout den Zurück Button auf aus.
- dann:

if (value('DV01') != 2) {
option('backbutton', true);
option('nextbutton', false);

} else {
option('backbutton',false);
option('nextbutton', true);
}

Die Syntax stimmt jedenfalls (gerade getestet). Falls es immer noch nicht geht, müssten Sie uns einmal einen Pretest Link zur Verfügung stellen.

Viele Grüße

Edit: Erst gerade ihre Antwort gesehen. ich denke ein Pretest Link wäre auf jedenfall nicht schlecht :)
by s133210 (110 points)
ok, meine Anmerkung von oben hat sich erledigt. Das Weiterspringen zur richtigen Frage bei einer Ja-Antwort funktioniert.
Aber der zurück-button auf Seite 3 nicht :(
zu ihrer Frage: 1) na weil das auf den Hilfe-Seiten genauso beschrieben ist (nein bei EW-erklärung - Abbruchtext - Rückkehrmöglichkeit via zurück-Button) und ich den code schlicht wie empfohlen kopiert habe. Mir erschliesst sich auch die PHP-Sprache an sich, nur erscheint leider kein zurück-Button. Alernativ würde ich den Befragten einfach bitten, die Umfrage nochmal aufzurufen und ja anzukreuzen, aber das wäre schon sehr abbruchrisikobehaftet und nervig.
Hier ist der link zur Umfrage: https://www.soscisurvey.de/familienzugang/?act=tIYXtEvJRub6VA8V7mVetBNi
by SoSci Survey (302k points)
Könnten Sie bitte einmal den vollständigen PHP-Code und die Debug-Information von der Seite posten, auf welcher der Screenout kommt? Danke.
by s133210 (110 points)
Hallo,
hier der komplette PHP-Code (ich hoffe, es ist das, was Sie meinen:
<?xml version="1.0"?>
<questionnaire>

<!-- Seite 1 -->
<page intID="1">
<question id="EL01" intID="2" />
</page>


<!-- Seite 2 -->
<page intID="46">
<question id="DV01" intID="48" />
<question id="DV03" intID="47" />
</page>


<!-- Seite 3 -->
<page intID="29">
<php intID="30"><![CDATA[
if (value('DV01') != 2) {
 option('backbutton', true);
option('nextbutton', false);

} else {
option('backbutton',false);
option('nextbutton', true);
}
]]></php>
</page>


<!-- Seite 4 -->
<page ident="jump1" intID="5">
<question id="NA01" intID="6" />
</page>


<!-- Seite 5 -->
<page intID="7">
<question id="NA04" intID="45" />
</page>


<!-- Seite 6 -->
<page intID="9">
<question id="NA03" intID="10" />
</page>


<!-- Seite 7 -->
<page intID="11">
<question id="IA01" intID="12" />
</page>


<!-- Seite 8 -->
<page intID="13">
<question id="IA02" intID="14" />
</page>


<!-- Seite 9 -->
<page intID="15">
<question id="IA03" intID="16" />
</page>


<!-- Seite 10 -->
<page intID="17">
<question id="ZA01" intID="18" />
</page>


<!-- Seite 11 -->
<page intID="19">
<question id="ZA02" intID="20" />
</page>


<!-- Seite 12 -->
<page intID="21">
<question id="FA01" intID="22" />
</page>


<!-- Seite 13 -->
<page intID="23">
<question id="FA02" intID="24" />
</page>


<!-- Seite 14 -->
<page intID="25">
<question id="U101" intID="26" />
</page>


<!-- Seite 15 -->
<page intID="27">
<question id="SD01" intID="28" />
</page>


<!-- Seite 16 -->
<page intID="3">
<question id="SD14" intID="4" />
</page>


<!-- Seite 17 -->
<page intID="31">
<question id="SD02" intID="32" />
</page>


<!-- Seite 18 -->
<page intID="33">
<question id="SD03" intID="34" />
</page>


<!-- Seite 19 -->
<page intID="35">
<question id="SD04" intID="36" />
</page>


<!-- Seite 20 -->
<page intID="37">
<question id="SD05" intID="38" />
</page>


<!-- Seite 21 -->
<page intID="39">
<question id="SD06" intID="40" />
</page>


<!-- Seite 22 -->
<page intID="41">
<question id="OF02" intID="42" />
</page>


<!-- Seite 23 -->
<page intID="43">
<question id="OF01" intID="44" />
</page>


<!-- Seite 24 -->
<page intID="8">
</page>


</questionnaire>

Als Fehlermeldung  wenn man direkt auf Seite 3 geht erscheint folgendes:


Warning (page 3)
The variable DV01 has not been asked on a previous page during this interview. Therefore value() cannot determine any answer, yet.


Debug information wird mir Folgendes angezeigt:

[Information]    Interview number 204 is to be continued
[Information]    Questionnaire ZG from project familienzugang will be used
[Information]    Retention period on page 2 has been 7 seconds
[Processing]    Reading answers from page 2
[Information]    Answer to DV01 = 2
[Information]    ▼ Filter DV01/1 goes active (condition met).
[Information]    Condition in filter DV01/2 is not met.
[Information]    100% of the questions have been answered so far
[Information]    According to filter DV01/F1 the interview is stopped with text Abbruchtext
[Processing]    Create screen-out page

Wenn ich den FB von vorn starte, werde bei Nein-Antwort auf Seite 2 wie gewünscht auf Seite 3 weitergeleitet, aber ohne Zurück-Button.

Vielen Dank für Ihre Mühe!

1 Answer

0 votes
by SoSci Survey (302k points)

[Information] According to filter DV01/F1 the interview is stopped with text Abbruchtext

Offenbar haben Sie den Screenout nicht nur per PHP-Code programmiert, sondern zusätzlich noch als Filter in Frage DV01 festgelegt. Bitte entfernen Sie diesen Screenout-Filter in Frage DV01. Ein Filter-Screenout beendet das Interview und erlaubt deshalb keinen Zurück-Knopf.

Ergänzen Sie in Ihrem Filter dafür noch den Screenout-Text und (optional) ein pageStop(). Letzteres ist nur sinnvoll, wenn auf der Seite sonst regulär Inhalte angezeigt werden sollen.

if (value('DV01') != 2) {
  option('backbutton', true);
  option('nextbutton', false);
  text('Abbruchtext');
  pageStop();
}

The variable DV01 has not been asked on a previous page during this interview. Therefore value() cannot determine any answer, yet.

Sind Sie sicher, dass diese Fehlermeldung auch erscheint, wenn Sie mit dem Test auf Seite 2 oder 1 starten? Die Fehlermeldung scheint nicht zur Debug-Information zu passen. Und wenn Sie direkt auf Seite 3 starten, wurde DV01 in diesem Interview ja tatsächlich vorher nicht abgefragt.

by s133210 (110 points)
wenn ich den Filter in Frage DV01 entferne, werde ich auch bei Nein-Antwort weitergeleitet zur nächsten inhaltlichen Frage, das Interview wird also weder beendet noch erscheint ein Abbruchtext. :(
by s133210 (110 points)
Wir haben es jetzt anders gelöst:
eigene Seite für Abbruchtext erstellt und auf Seite mit der Einwilligungsfrage via Filter Sprung zur Seite mit Abbruchtext gesetzt und PHP-Code für Zurück-Button eingefügt. Jetzt klappts.
Vielen Dank trotzdem, die Logik von soscisurvey erschliesst sich mir immer mehr :)
Gruß
by SoSci Survey (302k points)
Falls Sie das Rätsel noch lösen möchten, warum es im ersten Versuch nicht funktionierte: Der Debug-Modus liefert meist die entscheidenden Informationen (https://www.soscisurvey.de/help/doku.php/de:create:debugging).

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

...