0 votes
in SoSci Survey (dt.) by s130803 (420 points)

Hallo,

auf meiner Fragebogenseite werden drei Fragen gestellt ('S007', 'S015' und 'S016'), die jeweils Auswahlfragen mit zwei Optionen sind.

Ist es möglich, den Teilnehmenden je nach dem, welche Frage(n) nicht beantwortet wurden unterschiedliche Texte anzeigen zu lassen, die sie gezielt auf den Fragetext verweisen und die entsprechenden Fragen zu markieren?

Spontan hätte ich das mit einem einfachen PHP-Code gelöst à la (analog zur Anleitung individuelle Antwortprüfung):

if (value('S007') == -9) {
  markFail('S007');
  repeatPage('Text1')
} elseif (value('S015') == -9) {
  markFail('S015');
  repeatPage('Text2')
} usw. ...

Und so weiter mit jeder möglichen Kombination der drei Fragen, die nicht beantwortet sein könnte und jeweils den Texten dazu ("Bite beantworten Sie Frage 1", "Bitte beantworten Sie Frage 1 und 2", etc.).

Gibt es hier eine schlankere und weniger fehleranfällige Methode? Oder auch die einfachere Möglichkeit komplett für die eine Seite des Fragebogens eine individuelle Fehlermeldung anzeigen zu lassen, wenn ein Item nicht beantwortet wurde (also ohne auf die konkrete Frage einzugehen)?

Vielen Dank!

1 Answer

0 votes
by SoSci Survey (331k points)
selected by s130803
 
Best answer

Und so weiter mit jeder möglichen Kombination der drei Fragen, die nicht beantwortet sein könnte und jeweils den Texten dazu

Einfacher wird es, wenn Sie die Kombinationen nicht betrachten müssen.

Versuchen Sie es einmal mit einer Schleife, welche die Fehlermeldungen sammelt und dann nur einmal das repeatPage() auslöst:

$checks = [
  'S007' => 'Text1',
  'S015' => 'Text2',
  // u.s.w.
];
// Alle Variabeln überprüfen
$messages = [];
foreach ($checks as $variable => $text) {
  if (value($variable) < 1) {
    markFail($variable);
    $messages[] = $text;
  }
}
// Ggf. Fehlermeldungen anzeigen und Seite wiederholen
if (!empty($messages)) {
  $messages = array_unique($messages);
  html('<div class="feedback" role="status">');  // Roter Rahmen
  foreach ($messages as $text) {
    text($text, 'spacing=10');
  }
  html('</div>');
  repeatPage();
}
by SoSci Survey (331k points)
PS: Ich habe den Code auch in die Anleitugn übernommen und dort nochmal genauer erklärt. https://www.soscisurvey.de/help/doku.php/de:create:functions:markfail#unterschiedliche_feedback-texte
by s130803 (420 points)
Vielen Dank für die schnelle Antwort! Toll, dass das generell möglich ist und auch, dass sie die Anleitung angepasst haben. Allerdings komme ich gerade noch nicht dahinter, warum das in meinem Fall nicht funktioniert ich habe den Code Ihrer Antwort um meine Frage => Text Kombinationen erweitert und auf der folgenden Fragebogenseite als PHP-Code ganz oben abgelegt. Leider wird immer noch der generische 'Fehlende Antwort'-Text eingeblendet.
Könnten Sie mal einen Blick darauf werfen? Hier der Pretest-Link zur entsprechenden Seite: https://www.soscisurvey.de/B2Elmi2/?act=UJS1mAKEDk7DKc1j8OxKfW23

Und hier der Teil Ihres Codes, den ich angepasst habe:
$checks = [
  'S006' => 'S032',
  'S007' => 'S033',
  'S015' => 'S034',
  'S016' => 'S035'
];

Die Fehlertexte habe ich als formatierten Text gespeichert.
by SoSci Survey (331k points)
> Leider wird immer noch der generische 'Fehlende Antwort'-Text eingeblendet.

Die Antwortpflicht bei den Fragen haben Sie abgeschaltet?

Nur wenn Sie den SoSci-internen Mechanismus zur Vollständigkeitsprüfung deaktivieren, kann der PHP-Code überhaupt aktiv werden.
by s130803 (420 points)
Das hatte ich nicht bedacht, allerdings kommt jetzt die Fehlermeldung, dass die Variable $missing nicht definiert sei (The PHP variable $missing has been used but the variable is yet undefined (the variable has no value)). Und dass die count()-Funktion entsprechend nicht funktioniert (count(): Parameter must be an array or an object that implements Countable).
by SoSci Survey (331k points)
Oh ja, da hatte ich noch etwas übersehen. Es muss

count($messages)

heißen anstatt

count($missing)

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

...