0 votes
in SoSci Survey (dt.) by s153404 (160 points)
edited by SoSci Survey

Hallo,

ich würde gerne die Eingabe des VPN-Codes, den die Befragten zu Beginn eingeben, am Ende des Fragebogens einmal erneut prüfen. Die Variable zu Begin heißt ID1 und die am Ende ID2.
Ich habe diesen Code aus dem Forum und im Debugwindow geprüft, dass der Code erfasst wird.

$key = 'code-'.value('ID1');
dbSet($key, 1);

Da ich mit php nicht auskenne, weiß ich nicht, was ich entsprechend auf der Seite, auf dem der Code (ID2) erneut eingegeben werden soll, schreiben muss. Könnte mir hier jemand weiterhelfen?

Viele Grüße

by SoSci Survey (327k points)
Was soll den passieren, wenn die Codes nicht übereinstimmen?
by s153404 (160 points)
Es soll ein Text für die Befragten angezeigt werden, dass das nicht der Code ist, den sie zu Beginn angegeben haben. Sie sollen dann die Möglichkeit bekommen ihn erneut einzutragen.
by SoSci Survey (327k points)
Und welchen Code möchten sie dann speichern - womöglich war ja der zweite Code korrekt?!

Hier schonmal der PHP-Code für den Hinweis, zu Platzieren auf der Seite nach der zweiten Abfrage:

if (trim(strtoupper(value('TC01_01'))) != trim(strtoupper(value('TC02_01')))) {
  text('TC03');
}

Das trim() und strtoupper() sorgt dafür, dass Leerzeichen vor/nach der Eingabe und Unterschiede in der Groß-/Kleinschreibung vereinheitlicht werden.
by s153404 (160 points)
Danke für den PHP-Code. Für TC01_01 gebe ich meine Variable ID1 ein und für TC02_01 dann ID2. Und bei TC03 trage ich den Text ein, der angezeigt werden soll, richtig?

Das ist eine gute Frage, natürlich soll der korrekte Code gespeichert werden. Wäre es denn möglich der VPN erneut den Code zu zeigen, den Sie zu Beginn eingeben hatte. Dann könnte Sie vergleichen und den korrekten Code eingeben und dann sollte entsprechend der zweite Code gespeichert werden.

Danke

1 Answer

0 votes
by SoSci Survey (327k points)

Wäre es denn möglich der VPN erneut den Code zu zeigen, den Sie zu Beginn eingeben hatte.

Ja, dafür müssen Sie an der Stelle einfach die Frage von vorne nochmal anzeigen. Das könnte dann wie folgt aussehen:

if (trim(strtoupper(value('TC01_01'))) != trim(strtoupper(value('TC02_01')))) {
  text('TC03');
  question('TC01');
  question('TC02');
  setNextPage('check'); // Zur Sicherheit nochmal kontrollieren
}
by s153404 (160 points)
Ich scheine etwas falsch zu machen, da ich Fehlermeldungen erhalte. Ich habe den php-Code auf die Seite nach der zweiten ID Abfrage gesetzt.

Die Fehlermeldungen sind:
Im Befragungsprojekt existiert kein Text mit der Kennung Das ist nicht der gleiche Code, den Sie zu Beginn eingegeben haben.
Die Frage mit der Kennung ID1_probe gibt es im Projekt nicht.
Die Frage mit der Kennung ID2_probe gibt es im Projekt nicht.
Die Seite check, die auf der letzten Seite in der Funktion setNextPage() angegeben wurde, gibt es im Fragebogen nicht.
by SoSci Survey (327k points)
> Im Befragungsprojekt existiert kein Text mit der Kennung Das ist nicht der gleiche Code, den Sie zu Beginn eingegeben haben.

Die Funktion text() erwartet die Kennung eines Textes, den Sie im Fragenkatalog angelegt haben.

> Die Frage mit der Kennung ID1_probe gibt es im Projekt nicht.

Wie lautet Ihr PHP-Code denn genau? Und welche Kennungen haben die beiden Fragen (nicht die Variablen)?

> Die Seite check, die auf der letzten Seite in der Funktion setNextPage() angegeben wurde, gibt es im Fragebogen nicht.

Die Seitenkennung müssen Sie noch eintragen, s. Anleitung zu setNextPage() oder goToPage().
by s153404 (160 points)
Hier ist mein php-Code:

Ich habe es mit den Variablennamen (ID1_probe und ID2_probe) als auch mit der Kennung (ID1probe und ID2probe) probiert.

Das ist der Code bei der ersten ID Abfrage:
$key = 'code-'.value('ID1_probe');
dbSet($key, 1);

Das ist der Code bei der zweiten ID Abfrage:
if (trim(strtoupper(value('ID1_probe'))) != trim(strtoupper(value('ID2_probe')))) {
  text('Das ist nicht der gleiche Code, den Sie zu Beginn eingegeben haben.');
  question('ID1probe');
  question('ID2probe');
  setNextPage('check'); // Zur Sicherheit nochmal kontrollieren
}
  
Danke für den Hinweis zur Seitenkennung bezüglich setNextPage(), diese Fehlermeldung ist weg. Jetzt erscheint nur ein Hinweis, dass die Antworten von Seite 79 hier angezeigt und anschließend überschrieben werden.

Die Antwort zur Funktion text() und dem anlegen des Textes im Fragenkatalog habe ich nicht verstanden. Wird das über Bausteine und Textfelder gemacht?
by SoSci Survey (327k points)
> Ich habe es mit den Variablennamen (ID1_probe und ID2_probe) als auch mit der Kennung (ID1probe und ID2probe) probiert.

Das ist aber nicht die (vierstellige) Kennung der Frage(n). Wie lautet denn diese?
by s153404 (160 points)
Für die erste Code Abfrage ist es A010 und für die zweite Code Abfrage ist es E205. Mit dieser kennung hatte ich es auch schon probiert und da kam bei der ersten ID Abfrage schon eine Fehlermeldung, weshalb ich die Variablennamen genutzt habe.
Die Fehlermeldung ist: Die Variable A010 gibt es in diesem Projekt nicht (siehe Variablen-Übersicht). Daher kann kein Antwort-Wert dafür ermittelt werden.
by SoSci Survey (327k points)
Der Trick ist, dass Sie value() mit Variablennamen versorgen und question() oder show() mit Frage-Kennungen:

if (trim(strtoupper(value('ID1_probe'))) != trim(strtoupper(value('ID2_probe')))) {
  text('TC03');
  question('A010');
  question('E205');
  setNextPage('check'); // Zur Sicherheit nochmal kontrollieren
}
by s153404 (160 points)
Vielen vielen Dank für den Hinweis.
Ich habe dazu aber noch eine Rückfrage. Ist es auch möglich nur den eingegebenen Code ohne den Fragetext anzuzeigen, da sich dieser zum Teil doppelt?

Ich habe es hinbekommen, dass zuerst der Text angezeigt wird:
Ihr persönlicher Code, den Sie auf der Seite zuvor angegebn haben, stimmt nicht mit Ihrem persönlichen Code überein, den Sie zu Beginn der Befragung eingegeben haben.

Den Code, den Sie Beginn eingebene hatten lautet:

Danach kommt dann die komplette Frage mit Eingabe der VP bei der ersten Eingabe

Darauf folgt der Text:
Auf der vorherigen Seite haben Sie diesen Code eingegeben.
Bitte überprüfen Sie welcher der eingebenen Codes der korrekte Code für Sie ist und geben Sie diesen erneut ein. Danke

Dann wird die komplette Frage der zweiten ID Abfrage angezeigt.

Ist es möglich nur das Eingabefeld mit Eingabe anzuzeigen? Und müsste man, um ein leeres Eingabefeld für den korrekten Code zu erhalten eine neue Frage erstellen und zu dieser Seite hinzufügen?
by SoSci Survey (327k points)
> Danach kommt dann die komplette Frage

Bitte werfen Sie mal einen Blick in die Anleitungen zu question() oder show() - was Ihnen besser liegt. Dort steht, wie man den Fragetext durch zusätzliche Parameter im Befehl ausblenden kann.

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

...