0 votes
in SoSci Survey (dt.) by s143454 (130 points)
edited by SoSci Survey

Hallo,

ich habe einen Fragebgen erstellt und diesen mehrmals dupliziert. Einer der Fragebögen geht an einen Panelanbieter, weshalb entsprechende Redirects und Screenouts einbaut worden sind. Der Befragungslink wurde um den entsprechenden Paramter erweitert.

Füllt man nur den Fragebogen aus ist die erste Filterfrage Position wie folgt codiert: wer nicht Führungkraft oder Fachkraft ist, erhält einen Screenout. Zusätzlich dürfen nicht mehr als 700 Fachkräfte (Quotafull) an der Befagung teilnehmen.

Unanbhängig davon, was man auswählt, erhält man nun folgende Fehlermeldung auf der Seite des Panelanbieters:

Sehr geehrter Teilnehmer,

leider ist ein Fehler aufgetreten.

Vermutlich fehlt hier der Beginn der Befragung.

Bitte schließen Sie Ihr Browserfenster.

Allerdings ist die Befragung aktiv? Was bedeutet fehlender Beginn der Befragung?

Besten Dank und viele Grüße

1 Answer

0 votes
by SoSci Survey (305k points)

Sehr geehrter Teilnehmer,
leider ist ein Fehler aufgetreten.
Vermutlich fehlt hier der Beginn der Befragung.

Vermutlich haben Sie den Fragebogen selbst gestartet und dabei keine Teilnahme-ID (diese generiert der Panel-Anbieter) verwendet? In dem Fall weiß der Server des Panel-Anbieters nicht, was er mit Ihrer Anfrage anfangen soll (Sie sind ja offensichtlich kein registrierter Panelist) und zeigt daher eine Fehlermeldung.

Diese Fehlermeldung ist also erstmal kein Hinweis auf einen Fehler.

Wir haben gerade gestern übrigens die Dokumentation zur Panel-Anbindung grundlich erweitert und die Abläufe nochmal klarer dargestellt. Just in case...

by SoSci Survey (305k points)
> Ich verstehe die If-Abfrage nicht ganz:

Hierbei handelt es sich um eine Umkodierung. Wenn die Variable SD08 den Wert 4 oder 5 hat (korrigiert oben wie Sie schon vermutet hatten, da stand noch 4), dann wird eine 4 gespeichert, sonst der Originalwert.

> Würde man dann die Quotierung wie folgt abfragen:

Äh, nein, den befehl count() würden Sie gar nicht verwenden. Sie würden ein Array mit den Quoten definieren und dann den Wert aus statistic() mit der Quote vergleichen wie in der Anleitung zur Quotierung beschrieben: https://www.soscisurvey.de/help/doku.php/de:survey:quota

Die Definitin der Quote wäre dann also:

$quotaPosition = [
  4=> 700
];

... denn die 5 wird ja auch zur 4 umkodiert. Und zählen müssten Sie in statistic() dann natürlich die Variable 'SD99_01'.
by s143454 (130 points)
Besten Dank, die Redirects und Quotafulls funktionieren nun. Letzte Frage ist die Fehlermeldung im Fragebogen:

Im PHP-Code trat ein Fehler auf. Rot markiert sind Zeile 1 und 3

Fehler im Fragebogen: Befehl oder String (Text) nicht abgeschlossen

    Hinter einem Befehl wie z.B. question() steht kein Strichpunkt oder
    ein String (Text in Anführungszeichen) ist nicht abgeschlossen oder
    im String selbst kommt ein Anführungszeichen vor, z.B. html('Mach's besser!'); – in diesem Fall stellen Sie dem Anführungszeichen einen Backslash (\) voran.
    Möglicherweise stimmen die öffnenenden und schließenden geschweiften Klammern für Anweisungsblöcke auch nicht überein.

PHP-Code

001 namespace s2survey\questionnaire\environment;
002
003 $Fachkraft = if ((value('SD08') == 4) || (value('SD08') == 5)) {
004   put('AB04_01', 4);
005 } else {
006   put('AB04_01', value('SD08'));

Wo liegt hier das Problem? Die Klammern und Anführungszeichen sind soweit gesetzt...
by SoSci Survey (305k points)
Das if liefert keinen Wert zurück, insofern macht $Fachkraft = if ... wenig Sinn.

Was inhaltlich sinnvol wäre ist:

$Fachkraft = ((value('SD08') == 4) || (value('SD08') == 5));

Dann bekommen Sie eine Bool'sche Variable $Fachkraft, welche Ihnen sagt, ob SD08 den Wert 4 oder 5 hat.

Wenn es Ihnen um das if geht, lassen Sie das $Fachkraft = vorher bitte weg.
by s143454 (130 points)
Ok, also ich habe jetzt folgenden Code angepasst:

if ((value('SD08') == 4) || (value('SD08') == 5)) {
  put('AB04_01', 4);
} else {
  put('AB04_01', value('SD08'));
}


$quotaPosition = [
 4 => 700
 
];

$Position = value('AB04_01');

$casesPosition = statistic('count', 'AB04_01', $Position);

if (!array_key_exists($Position, $quotaPosition)) {
redirect('https://www.innofact-umfrage3.de/kim4/screenout_f.php?u=%reference%');
}

 
$maxPerPosition = $quotaPosition[$Position];
 
// Quotenstopp
if ($casesPosition >= $maxPerPosition) {
  redirect('https://www.innofact-umfrage3.de/kim4/quotafull_f.php?u=%reference%');
}

Die Frage SD08 ist Seite 4 des Fragebogens und hat 11 Kategorien. 1-3 sind Führungskräfte und dürfen den weiteren Fragebogen inklusive zusätzlicher Seiten für Führungskräfte beantworten. 4-5 sind Fachrkäfte und drürfen den Fragebogen ausfüllen für alle anderen Kategorien wird der Teilnehmer zu einer Seite mit dem Screenout weitergeleitet.

Der hier oben gezeigte Code ist die Quotierung, die so angelegt ist, dass nicht mehr als 700 Fachkräfte (4 oder 5 in SD08) in die Stichprobe eingehen.

Jetzt ergibt sich das Problem, dass auch Führungskräfte (1-3 in SD08) einen Screenout nach Abschluss von Seite 4 erhalten.

Dier Verfilterung von SD08 ist wie folgt und funktioniert in anderen gleichen Fragebögen ohne Quotierung:

 4 aktive(r) Filter
Filter 1
Wenn eine der folgenden Antwortoption(en) ausgewählt wurde: 6, 7, 8, 9, 10, 11, -9
Dann nach dem Klick auf "Weiter" direkt zur Seite SO springen
Filter 2
Wenn eine der folgenden Antwortoption(en) ausgewählt wurde: 1, 2, 3
Dann Seite(n) jump1 des Fragebogens anzeigen (sonst ausblenden)
Filter 3
Wenn eine der folgenden Antwortoption(en) ausgewählt wurde: 1, 2, 3
Dann Seite(n) jump2 des Fragebogens anzeigen (sonst ausblenden)
Filter 4
Wenn eine der folgenden Antwortoption(en) ausgewählt wurde: 4, 5
Dann Seite(n) jump3 des Fragebogens ausblenden
by SoSci Survey (305k points)
>  1-3 sind Führungskräfte und dürfen den weiteren Fragebogen inklusive zusätzlicher Seiten für Führungskräfte beantworten

Richtig, denn Sie haben in $quotaPosition keine Quoten für diese definiert:

$quotaPosition = [
  1 => 9999,
  2 => 9999,
  3 => 9999,
  4 => 700
];

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

...