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

Im Hauptfragebogen werden Module (mittels Erweiterte Auswahl, Mehrfachnennung) abgefragt.

Die Variablen:

S105_CN
Anzahl der ausgewählten Optionen auf der letzten Ebene (Optionen ohne weitere Unter-Optionen) oder ausgewählte Residualoption (negativ)

Ganze Zahl

S105x01
Pädagogik im Gesundheitswesen

S105x02
Wissenschaftliches Arbeiten

S105x03
Fachwissenschaft I – Gesundheitspädagogik und Gesundheitswissenschaft

S105x04
Fachwissenschaft III – Pflegewissenschaft und Pflegemanagement

S105x05
...
usw.

Danach geht es zum subFragebogen:

$items = getItems('S105x02', 'valid');
if (count($items) > 0) {
  $item = loopPage($items);
  $element = value(id('S105x02', $item));
  multiLevelDown('qnr2', $element);
}

Hier in PHP habe ich als test für mich erstmal nur eine Variable S105x02 drin. Die Bezeichnung des ausgewählten Moduls aus dem Hauptfragebogen soll im subFragebogen in der Überschrift erscheinen:

$element = multiLevelData();
// Element im Teildatensatz speichern
put('S106_01', $element);
// Platzhalter %element% definieren
replace('%element%', $element);

Im Textbaustein im subFragebogen steht:

Modul: %element%

. Doch es ändert sich nichts. Beim Testen steht auf der Seite dann nur Mudul:

Ich habe schon an verschiedenen Stellen im Fragebogen mit Platzhaltern versucht zu arbeiten, doch es gelingt mir einfach nicht. Der Platzhalter wird zwar anglegt, doch der Name erscheint dort einfach nicht. Ich mache wohl grundsätzlich etwas falsch.

  1. Die Frage ist also, wie lege ich Platzhalter richtig an?
  2. Eine zweite Frage ist, wenn ich mit Platzhaltern arbeite, dann brauche ich nur einmal einen subFragebogen anlegen und dieser kann mit Hilfe dieser Platzhalter für verschiedene Module (alle, die der Befragte im Hauptfragebogen auswählt) ausgefüllt werden? Oder geht das gar nicht und ich muss für jede gewählte Variable (Modul) einen subFragebogen anlegen?

Ich hoffe, das ist verständlich. Und freue mich, wenn Ihr mir helfen könnt.

Danke im Voraus!!!

by s137973 (240 points)
Riesen Dank. Mit der letzten Hilfestellung hat es nun geklappt. Jedoch habe ich $items durch $item ersetzt (wie bereits davor vorgeschlagen wurde). Damit wiederholt sich der Fragebogen automatisch so oft, wie die Anzahl der ausgewählten Module. Danke!!!!!

1 Answer

0 votes
by SoSci Survey (305k points)
selected by s137973
 
Best answer

Mir fallen spontan 2 Punkte auf:

$items = getItems('S105x02', 'valid');

Hier ist (a) die Kennung eines einzelnes Items angegeben und (b) können Antworten auf eine Mehrfachauswahl nicht ungültig sein. Versuchen Sie es bitte mit

$items = getItems('S105', 'is', 2);

Auch das if sollten Sie weglassen oder anders verwenden:

if (count($items) == 0) {
  goToPage('next');
}
$item = loopPage($items);
multiLevelDown('qnr2', $element);

Das mit dem value() habe ich gestrichen, weil Sie dabei nur immer eine 2 (=ausgewählt) bekommen würden.

Versuchen Sie es bitte mal soweit und ergänzen Sie im untergeordneten Fragebogen noch ein debug():

$element = multiLevelData();
debug($element);
by s137973 (240 points)
Vielen Dank für die schnelle Rückmeldung. Ich habe das soweit umgesetzt.
Hauptfragebogen:

$items = getItems('S105x02', 'is', 2);
$item = loopPage($items);
multiLevelDown('qnr2', $element);

subFragebogen:

$element = multiLevelData(); debug($element);
put('S106_01', $element);
replace('%element%', $element);

Nun bekomme ich jedoch mehrere Meldungen:
1. Es liegen keine Daten von einem übergeordneten Fragebogen vor. Die Funktion multiLevelData() liefert den Wert null.
2. Debug-Information für $element:
Keine Daten (null)
3. Für die Funktion replace() wurden nicht ausreichend Argumente angegeben, 2 Argumente sind zwingend erforderlich. Weitere Details finden Sie in der Anleitung zur Funktion.
4. Für den Platzhalter %element% wurde weder ein Eingabefeld mit prepare_input() vorbereitet, noch ein Inhalt mit replace() festgelegt.

Jetzt weiß ich gar nicht mehr weiter. Alles andere habe ich nicht angerührt
by SoSci Survey (305k points)
Ähm ja, die Variable $element gibt es natürlich nicht mehr. Bitte ändern Sie die Zeile wie folgt:

multiLevelDown('qnr2', $item);
by s137973 (240 points)
ok, danke. Geht aber immer noch nicht. Folgende Fehler:
1. Debug-Information für $element:
hochgestellte 0 dann 1, hochgestellte 1 dann 2
2. Sie versuchen gerade, mit put() ein Array (also mehrere Werte) abzuspeichern. put() speichert aber nur einzelne Texte und Zahlen.

Beim Testen steht an Stelle des Platzhalters 1,2 statt Text/Name des Moduls. Wähle ich weiteres Modul aus, dann steht da 1,2,3 usw.
by SoSci Survey (305k points)
Sind Sie sicher, dass Sie im multiLevelDown() di variable $item und nicht $items verwendet haben? Das 1, 2 würde ich für $items erwarten, wenn Sie die ersten beiden Items markiert hätten.

> Beim Testen steht an Stelle des Platzhalters 1,2

Das ist folgerichtig :) Wenn wir es hinbekommen, dass nur ein Wert übermittelt wird, dann sollten Sie mit folgendem Code den richtigen Text in den Platzhalter bekommen:


$element = multiLevelData();
put('S106_01', $element);
replace('%element%', getItemtext('S105', $element));
by s137973 (240 points)
das sieht schon mal definitiv besser aus. Leider erscheint an der Stelle des Platzhalters der Name des Studienganges (Ebene 1) und nicht der Name des gewählten Moduls (Ebene 2).

1. Ebene:
S105x01 Pädagogik im Gesundheitswesen

2. Ebene:
S105x02 Wissenschaftliches Arbeiten
S105x03 Fachwissenschaft I – Gesundheitspädagogik und Gesundheitswissenschaft
S105x04 Fachwissenschaft III – Pflegewissenschaft und Pflegemanagement
...

Ich wähle S105x01 und kreuze dort S105x02 an. Also möchte ich im Platzhalter den Namen "Wissenschaftliches Arbeiten" (S105x02) lesen. Egal, was und wieviel ich ankreuze, erscheint Pädagogik im Gesundheitswesen (S105x01).

Haben Sie da noch eine Idee? Hab auch versucht gleich mit der Variable S105x02 im PHP zu arbeiten. Funktioniert nicht.
by SoSci Survey (305k points)
> Leider erscheint an der Stelle des Platzhalters der Name des Studienganges (Ebene 1) und nicht der Name des gewählten Moduls (Ebene 2).

Das dürfte daran liegen, dass in der frage sowohl das Modul als auch der Studiengang ausgewählt sind. Und mit getItems() bekommen Sie beides. Wenn Sie weiter-klicken, kommt der untergeordnete Fragebogen nochmal, dann mit dem Modul.

Entfernen Sie die Codes der Studiengänge bitte aus der Liste, die Sie mit getItems() erstellen:

$items = getItems('S105x02', 'is', 2);
$items = array_diff($items, [1,7,15]);

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

...