0 votes
in SoSci Survey (dt.) by s131737 (120 points)

Hallo Herr Leiner,
Erst einmal Danke, dass Sie den Nutzern von Soscisurvey immer so gut helfen.
Ich melde mich mit einer Frage in Hinblick auf die Einbindung eines Panels.
Hier ist mal wieder die Aufgabe ein tic durchzugeben.
Ich habe das schon einmal mit einem anderen Projekt gemacht und da hat das nach etwas Detailarbeit funktioniert.
Mein Vorgehen damals:
Konstante Variable erstellen, die am Anfang einfügen und so abfragen, redirects nach Qualitychecks und complete (redirect('https://panellink.de=%reference%');) einfügen und einen Link erstellen der https://www.soscisurvey.de/xxx/?r=#tic#&Konstantevariablenname=[code] lautet

Nun arbeiten wir wieder mit einem Panel zusammen. Aber das Vorgehen funktioniert nicht. Was diesmal anders ist: Der Fragebogen setzt sich aus 3 Bedingungen, als 3 Fragebögen zusammen. Ich habe, wie empfohlen, einen random Fragebogen erstellt, und hier eine Zufallsoption gesetzt, die das nun schön gleich auf die 3 Bedingungen verteilt. Nun kriege ich aber das tic des Panels nicht ordentlich implementiert. Ich habe probiert das erheben der konstanten variable auf die erste Seite der jeweiligen Fragebögen zu setzen, aber auch auf den random-Verteilfragebogen. Nichts führt zu erfolg. Muss man unter diesen Umständen anders vorgehen?
Über Hilfe wäre ich sehr dankbar.
Alles Gute und viele Grüße!

1 Answer

0 votes
by SoSci Survey (305k points)

Nun kriege ich aber das tic des Panels nicht ordentlich implementiert.

Einem anderen Nutzer habe ich kürzlich empfohlen, in diesem Fall die Funktion multiLevelDown() anstatt goToQuestionnaire() zu verwenden: Externes Panel einbauen mit 2 IDs.

In der Funktion multiLevelDown() kann man Daten an den untergeordneten Fragebogen übergeben und dann später im Redirect nutzen. Oder man setzt das Redirect in den "random" Fragebogen ans Ende, wo man in dieser Konstruktion ja wieder hin kommt (aber der Quality Check über MISSREL und die Zeit ist in diesem Fall kaum möglich).

Alternativ könnte man auch ein goToParent() verwenden, um wieder in den "random"-Fragebogen zurück zu kommen (wo dann das Redirect erfolgen könnte). Aber ich denke es ist flexibler (in Hinblick auf Screenouts und Qualitätskontrolle), wenn man die TIC einfach mit multiLevelDown() an die untergeordneten Fragebögen übergibt.

Eine letzte Option noch: Sie können dem Panel-Anbieter auftragen, die Teilnehmer gleich zufällig auf die drei Varianten zu verteilen.

by s131737 (120 points)
Hallo,
Leider hat das mit multiLevelDown() auch nicht funktioniert.
Es wird komischerweise statt der ID eine dreistellige Zahl durchgegeben z.B. 190. Haben Sie da eine Idee?
Vielen Dank
by SoSci Survey (305k points)
Bitte spezifizieren Sie in multiLevelDown() explizit, was Sie durchreichen möchten, z.B.

multiLevelDown('varianteA', reference());

Anleitung zur Funktion:
https://www.soscisurvey.de/help/doku.php/de:create:functions:multileveldown
by s131737 (120 points)
Ich habe mich an dem von Ihnen referenzierten Artikel orientiert und das so formuliert: Habe ich einen Fehler?

$qnr = value('SD19', 'label');
multiLevelDown($qnr, [
  'code' => value('SD17_RV1')
]);
by s131737 (120 points)
Vielleicht für die Vollständigkeit, weil ich mir mit dem Rest auch so unsicher bin:
Der Link, den ich generiere lautet https://www.soscisurvey.de/xxx/?r=#tic#&SD17_RV1=[code]
Und der Redirect mit den completes:
redirect('https://xxx.com/xx/&return_tic=%reference%');
by SoSci Survey (305k points)
> Der Link, den ich generiere lautet https://www.soscisurvey.de/xxx/?r=#tic#&SD17_RV1=[code]

Wenn Sie ein r=... im Link haben, dann brauchen Sie keine "Gerät und übermittelte Variablen". Das SD17_RV1 brauchen Sie sicher nicht - diese Variable speichert nur, was Sie in der Frage als Variablenname angegeben haben. Wenn Ihr Link also so aussieht:

https://www.soscisurvey.de/xxx/?tic=[tic],

dann würden Sie in der Frage "Gerät und übermittelte Variablen" angeben, dass Sie die Variable "tic" einlesen möchten. Und dann würde Ihr Code für multiLevelDown() wieder stimmen.

Und in dem untergeordneten Fragebogen müssen Sie die Daten mittels multiLevelData() entgegennehmen.

$data = multiLevelData();
$tic = $data['code'];

Diese können Sie dann z.B. per put() in einer internen Variable ablegen. Und/oder für das redirect() nutzen:

redirect('https://xxx.com/xx/&return_tic='.$tic);
by s131737 (120 points)
Vielen Lieben Dank.
Ich habe alles nach meinem besten Wissen & gewissen eingesetzt, aber wir kommen leider noch nicht zum Erfolg.
Vielleicht beschreibe ich noch mal meine Vorgehensweise:
1. SD17_RV1 Variablenname (1): zu tic verändert.
2. Link angepasst: https://www.soscisurvey.de/xxx/?tic=[tic]
3. Auf random Fragebogen folgenden Code verwendet:
$qnr = value('SD19', 'label');
multiLevelDown($qnr, [
  'code' => value('SD17_RV1')
]);
4. Auf der Startseite der 3 Fragebögen folgenden Code eingesetzt:
$data = multiLevelData();
$tic = $data['code'];
5. Auf den einzelnen Seiten beim Qualitycheck jeweils folgenden Code:
if ((value('Q1') == 2) or (value('Q1') == 3) or (value('Q1') == 4) or (value('Q1') == 5))
{
redirect('https://xx/s/1269770/ospe.php3?c_0002=3&return_tic='.$tic);
}
6. Für den complete folgenden PHP Code:
redirect('https://xxx.com/s/1269770/ospe.php3?c_0002=1&return_tic='.$tic);

Ich finde einfach nicht den Fehler. Vielen Dank, dass Sie sich die Mühe machen, mir bei meinem Problem zu helfen.
by SoSci Survey (305k points)
Haben Sie die Frage SD19 auf die erste Seite von "random" gelegt? Zeigt SoSci Survey irgendwelche Fehler?

Wenn nicht, dann bauen Sie ein wenig Debugging-Code ein:

> 3. Auf random Fragebogen folgenden Code verwendet:

$qnr = value('SD19', 'label');
html('<p>Code: '.value('SD17_RV1').'</p>');

Dann die URL mit einer beliebigen TIC aufrufen. Wenn das klappt, dann das html() wieder durch das multiLevelDown() ersetzen und weiter im untergeordneten Fragebogen:

$data = multiLevelData();
$tic = $data['code'];
html('<p>Code: '.$tic.'</p>');

Wenn auch das klappt, dann nochmal direkt dort, wo das redirect() stehen sollte:

html('<p>URL: https://xxx.com/s/1269770/ospe.php3?c_0002=1&return_tic='.$tic.'</p>');
by s131737 (120 points)
Guten morgen,
Jetzt geht leider gar nichts mehr.
Ich habe die Frage SD19 auf dem Random-Fragebogen liegen gehabt.
Dann den Code wie gefordert eingegeben:
$qnr = value('SD19', 'label');
html('<p>Code: '.value('SD17_RV1').'</p>');
Nun kann ich leider nicht unabhängig testen, ob die Weitergabe des Tics klappt, aber alleine mit dem Code wurde ich gar nicht mehr zu den Fragebögen weitergeleitet, sondern zum Ende des random-Fragebogens statt zu den untergeordneten Fragebögen.
wenn ich das html durch ersetze, also:
$qnr = value('SD19', 'label');
multiLevelDown('<p>Code: '.value('SD17_RV1').'</p>');
Dann wird mir ein Fehler angezeigt.
(Im Befragungsprojekt liegt kein Fragebogen mit der Kennung <p>Code: </p> vor.)
Muss ich dann da den ursprünglichen Mulicode vor "<p>" einsetzen??
Tut mir wirklich leid, dass ich da so viel Hilfe in Anspruch nehmen muss, aber es will einfach nicht klappen.
by SoSci Survey (305k points)
> aber alleine mit dem Code wurde ich gar nicht mehr zu den Fragebögen weitergeleitet

Das war auch Ziel der Übung. Wenn der Code an dieser Stelle schon nicht angezeigt wird, müssen wir an dieser Stelle suchen. Wenn der Code hier angezeigt wird, können Sie wieder den Original-Code einsetzen und mit der nächsten Stelle weiter-testen. Einfach Schritt für Schritt prüfen, wo der Code/TIC verloren geht.

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

...