0 votes
in SoSci Survey (dt.) by s172230 (210 points)
edited by SoSci Survey

Hallo liebe Community,

leider komme ich mit den Anleitungen nicht mehr weiter und bräuchte nun Eure Hilfe.
Durch eine Auswahlfrage (FR01) werden Frageblöcke (a 6 Fragen, die auch gleich aussehen) maximal 3x geloopt. Code (s.u.) funktioniert auch einwandfrei.

$anzahl = (int)value('FR01');
// Frageblock wiederholen
loopToPage('blockEnd', $anzahl);
// Definition der Rubriken
$rubriken = array('X1', 'X2', 'X3');
registerVariable($rubriken);

Nun geht es darum, dass z.B. in der ersten Frage aus Frageblock 1 (X101) freie Begriffe erfragt werden (bis zu 10 Stück). Und in den Folgefragen (Typ Texteingabe offen (X103, X104, X105, X106, X108), Skala (X107)) sollen die Antworten aus der Frage X101 als Platzhalter genutzt werden.

Ich bekomme es zwar hin, dass die Platzhalter, die ich eingegeben habe, angezeigt werden, aber es werden auch jene angezeigt (Format: %..%), die nicht in X101 beschrieben wurden. Aber es kommen auch die folgenden Fehlermeldungen:

  • Für die Funktion id wurden nicht ausreichend Argumente angegeben, 1 Argumente sind zwingend erforderlich. Weitere Details finden Sie in der Anleitung zur Funktion.
  • Im Befehl question() wurde keine Frage-Kennung angegeben.
  • Im PHP-Code trat ein Fehler auf. Fehler im Fragebogen: Die PHP-Variable $rubrik wurde verwendet, in diesem PHP-Code aber noch nicht definiert (sie enthält noch keinen Wert).
  • Für den Platzhalter %text3% wurde weder ein Eingabefeld mit prepare_input() vorbereitet, noch ein Inhalt mit replace() festgelegt.

Ich hätte auch gerne gewusst, wie es funktioniert, dass diese Platzhalter-Anweisung für alle weiteren Rubriken (also X2, ud X3) auf gleiche Weise erfolgt (z.B. Frage X201 wird beantwortet und dann in den Folgefragen (X202-X207) als Platzhalter verwendet).

Tausend Dank für Eure Hilfe!

Mein aktueller PHP Code ist:

$frage = 'X101';
$items = array();
for ($i=1; $i<=10; $i++) {
  $itemID = id($frage, $i);
  $antwort = value($itemID);
  if (trim($antwort) != '') {
    replace('%text'.$i.'%', $antwort);
    $items[] = $i;
  }
}
// Folgefrage anzeigen
if (count($items) > 0) {
  question(id($rubrik, 3, $items));
}

1 Answer

0 votes
by SoSci Survey (328k points)

Es geht bei den Fehlermeldungen vermutlich um dieser Zeile:

question(id($rubrik, 3, $items));

Und ich vermute stark, dass die Variable $rubrik beim Testen nicht definiert ist. Zumindest sehe ich in Ihrem Code nicht, wo sie definiert wird.

Versuchen Sie zu Beginn des Codes mal das hier:

$i = loopIndex();
$rubrik = $rubriken[$i];
$frage = $rubrik.'01';
$items = array();
// Rest wie gehabt

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

...