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

0 votes

Ist es eigentlich möglich eine Fallanzahl festzulegen, nach der die Befragung automatisch gestoppt wird?
Gemäß der Bestimmungen des Verlages, der mir die Nutzungsrechte gemäß dem Urheberrecht für die genutzen Erhebungsinstrumente erteilt hat, darf ich nämlich für die eingeräumte kostenfreie Nutzung eine bestimmte Anzahl von Datensätzen nicht überschreiten.

in SoSci Survey (dt.) by s057478 (175 points)

1 Answer

0 votes

Ja - im Prinzip reicht ein trivialer Screenout-Filter (s. Screenout: Ungeeignete Teilnehmer filtern) zu beginn des Fragebogens. Die Frage ist nur, was Sie zählen?

  • Aufrufe des Fragebogens? Dann können Sie einfach die Fallnummer caseNumber() verwenden, haben aber auch alle Klicks ohne Daten in der Zählung.
  • Anzeigen des kostenpflichtigen Erhebungsinstruments? Dann setzen Sie bei Erreichen oder bei vollständiger Beanwortung des Instruments mittels put() eine interne Varible und zählen Sie diese mittels statistic('count', ...). Vorsicht: Standardmäßig zähle statistic() nur abgeschlossene Interviews (letzte Seite erreicht), um auch Abbrecher zu zählen, ist ein Parameter in der Funktion erforderlich.
  • Abgeschlossene Fragebögen? Auch in diesem Fall wäre statistic() das Mittel der Wahl. Und auch in diesem Fall ist es sinnvoll, eine Varible zum Zählen gezielt mittels put() zu setzen. Es kann aber auch jede andere Pflichtfrage verwendet werden.
by SoSci Survey (194k points)
Leider bin ich mit der Erklärung nicht ganz klargekommen. Mit PHP-Programmieren bin ich nicht fit.

Ich möchte die abgeschlossenen Fragebögen zählen.

Unklar ist mir, was dazu wo im Fragebogen platziert werden soll. Wenn ich den Code mit der put-Variable

// Screenout
{$anzahlFragebogen = statistic('count', 'F231_01'); // Anzahl Fragebogen
put('F231_01', $anzahlFragebogen > 2);
  text('screenout');  // Verabschiedung anzeigen
  buttonHide();  // Weiter-Knopf ausblenden
  pageStop();  // Falls unter dem Filter noch Inhalte auf der Seite folgen
}
am Fragebogenende setze passiert nichts, außer dass die nachfolgende Seite nicht mehr gezeigt und der Verabschiedungstext gezeigt wird.
Ich möchte aber bewirken, dass mögliche, nur über die angegebene Anzahl hinausgehende Teilnehmende den Fragebogen von Beginn an nicht mehr aufrufen können.  
Setze ich den Code an den Anfang, kann ich den Fragebogen nie aufrufen.
Was mache ich falsch?
> Setze ich den Code an den Anfang, kann ich den Fragebogen nie aufrufen.

Naja, so ganz korrekt ist der Code auch noch nicht ;)

Also ... am Anfang des Fragebogens setzen Sie ein IF (Sie haben noch kein IF im Fragebogen), welches prüft, ob die statistic() über der Quote liegt.

Und gegen Ende (dort wo gezählt werden soll) kommt nur das put(), aber ohne statistic(). Dort geht es wirklich nur darum, einen fixen Wert (z.B. 1) in eine interne Variable zu schreiben, damit man diese später - also im nächsten Interview - zählen kann.

put('F231_01', 1);

Ja, ich weiß ... der Start ins Programmieren ist alles andere als leicht. Aber deshalb gibt es in der Anleitung auch eine Menge PHP-Code zum Kopieren. Und auch wenn man gerade keine Zeit hat, sich auch noch damit zu befassen: Ich verspreche, es lohnt sich!
Erst einmal danke. Sagte ja, dass ich nicht fit bin... ;) Ich komme erst am nächsten Wochenende zum erneuten Ausprobieren. Und ich bin auch überzeugt, dass es sich lohnt hierbei dazu zu lernen...
Macht ja auch Spaß, wenn es dann irgendwann klappt.
Ich vermelde hier, ob ich es hingekriegt habe :-)
Also so komme ich nicht zurecht und verliere zu viel Zeit. Auf Seite 1 habe ich gesetzt:

$anzahlFragebogen = statistic('count', 'F231_01'); // Anzahl Fragebogen
if ($anzahlFragebogen > [5])
  {text('screenout');  // Verabschiedung anzeigen
  buttonHide();  // Weiter-Knopf ausblenden
  pageStop();  // Falls unter dem Filter noch Inhalte auf der Seite folgen
}

und auf der letzten Seite

{put('F231_01', 1);}

Nun gibt es zwar keine Fehlermeldung, aber nicht die gewünschte Reaktion der Seite. Beim Debugger sehe ich, dass der Wert 5 gezählt wird, wenn ich aber >  5 bzw. 4 zum Testen setze, wird die Seite immer angezeigt. Nur wenn ich z.B. = 4 setze verschwindet die Seite und der Alternativ-Text erscheint.

Könnten Sie mir bitte genau sagen, was noch fehlt und ich noch korrigieren bzw. ergänzen muss?
Bitte entfernen Sie die eckigen Klammern um die 5. Das [5] bedeutet ein Array mit dem Element 5 - und ist für den Vergleich nicht geeignet. Keine Zahl ist größer als ein Array. Einfach nur ($anzahlFragebogen > 5).
Danke für diesen Hinweis, aber so habe ich es auch nicht zum Laufen gekriegt. Habe eine einfachere Lösung gefunden, die nun zu funktionieren scheint:

if (statistic('count', 'F231_01', 1) > 5)
  {text('screenout');  // Verabschiedung anzeigen
  buttonHide();  // Weiter-Knopf ausblenden
  pageStop();  // Falls unter dem Filter noch Inhalte auf der Seite folgen
}
Mit dieser kleinen Zahl habe ich es getestet und nun auf meine tatsächliche Begrenzung von 200 umgestellt.
Ja, die Angabe des dritten Parameters (1) ist zumindest nicht falsch - sonst wird die Anzahl gültiger Fälle zurückgegeben, egal, was in der Variable steht. Ob man das Ganze in einer Variable zwischenspeichert, sollte hingegen keine Auswirkung auf das Ergebnis haben.
Welche Funktion benötigt man denn, um auszulesen, dass eine bestimmte Seite im Fragebogen erreicht wurde? Wie kann diese in eine interne Variable kopiert werden und mittels statistic('count', ...) ausgelesen werden?
Ich empfehle, keine Threads zu re-animieren, die schon über ein jahr alt sind. Kurze Antwort: Sie können mittels put() und value() auf einer Seite Ihrer Wahl - die Seite, die erreicht werden muss, damit gezählt wird - einen Wert von einer normalen Variable in eine interne Variable kopieren.
...