0 votes
in SoSci Survey (dt.) by s091537 (170 points)

Hallo zusammen,

ich habe eine Urnenziehung, 4 Urnen mit jeweils 15 Zetteln. Mittels Urndraw lasse ich mir einen Zettel ziehen und in eine interne Varoable speichern.
Diese interne Variable wird uaf der nächsten Seite abegfragt und in die interne Datenbank als Teil vom Key gespeichert.
Jetzt läuft der Fragebogen und alles lief problemlos, nur wenn nun auf einmal zu viele Personen gleichzeitig den Fragebogen beantworten, stimmen die Ziehungen nicht mehr mit den gespeciherten Keys überein. Es scheint als ob mehrere Personen gleichzeitig den selben Zettel bekommen (da ich erst am Ende des Fragebogens den Zettel ablege), jedoch dann auf einmal unterschiedliche Werte in die DB geschrieben werden, anstatt z.B. nur einer.
Kann mir jemand weiterhelfen was hier das Problem ist?

Vielen Dank!

1 Answer

0 votes
by SoSci Survey (304k points)

Es scheint als ob mehrere Personen gleichzeitig den selben Zettel bekommen (da ich erst am Ende des Fragebogens den Zettel ablege)

Ja, das ist bei Urnen durchaus möglich und auch erwünscht.

jedoch dann auf einmal unterschiedliche Werte in die DB geschrieben werden, anstatt z.B. nur einer.

Ohne den konkreten PHP-Code ist darauf leider wenig zu antworten... Ich verstehe spontan auch nicht den Sinn, einen Datenbank-Schlüssel auf Basis von Zufallsvariablen zu erzeugen. Vielleicht können Sie das nochmal etwas genauer ausführen?

by s091537 (170 points)
"Ja, das ist bei Urnen durchaus möglich und auch erwünscht."
--> Ich möchte ja aber, dass jeder Zettel erstmal nur einmal gezogen wird, bevor ALLE Zettel wieder zurück gelegt werden und erneut eine Runde startet. Ist dies dann nur möglich zu vermeiden, wenn ich die Zettel sofort ablege und nicht erst am Ende eines Fragebogens nach Abschluss mit "end" ?

Als Beispiel. Eine Urne enthält 15 Zettel. Ein Teilnehmer beantwortet eine Frage und begründet seine Antwort. Diese Begründung wird wie folgt in die Datenbank abgelegt.
$roundD = urnDraw('decoy', 'IV02','end');
$key = 'D-'.$roundD.'-'.value('IV02_01');
$dataD = array(
  value('DC01'),
  value('DC04_01'),
);
dbSet($key, $dataD);

Hierbei wird also ein Key erzeugt, der auch die Runde der Urnenziehung enthält. Also bei den ersten 15 Zetteln eigentlich die 1. (z.b. D-1-8)
Sinn davon ist es, dass die darauffolgenden 15 Teilnehmer erneut durch die Urnenziehung eine Zahl zwischen 1-15 zugeordnet bekommen und dadurch auch den entsprechenden Datensatz ihres Vorgängers angezeigt bekommen. Die Antworten der 15 Teilnerhmer der Runde zwei werden wieder mit dem entsprechenden Key in die SB angelebt. Also z.B. dann D-2-8
Da es noch eine dritte Runde gibt und es wichtig ist, dass ein Teilnehmer aus Runde 3 zwei Kommentare von seinen Vorgängern sieht würde dann der Teilnehmer mit dem Urnen Zettel 8 aus der dritten Runde die DB einträge von den Keys D-1-8 und D-2-8 angezeigt bekommen und sein eigener würde als D-3-8 abgespeichert werden.

Ich hoffe es wurde etwas klarer, weshalb die Funktion, dass die Urne erst einmal komplett geleert wird, ohne Dopplungen, an dieser Stelle wichtig ist.
by SoSci Survey (304k points)
> Ich möchte ja aber, dass jeder Zettel erstmal nur einmal gezogen wird, bevor ALLE Zettel wieder zurück gelegt werden und erneut eine Runde startet. Ist dies dann nur möglich zu vermeiden, wenn ich die Zettel sofort ablege und nicht erst am Ende eines Fragebogens nach Abschluss mit "end" ?

Ganz genau. Denn SoSci Survey weiß ja nicht, ob ein Teilnehmer jemals das Ende des Fragebogens erreichen wird.

Danke für die Erklärung, was hinter dem Ganzen steht. Ich befürchte, hier wird das Ablegen am Schluss tatsächlich nicht funktionieren, denn es kann eben vorkommen, dass eine Person gerade auf der Seite abbricht - und dann wäre nicht definiert, ob nun keine andere Nummer gezogen werden darf, bis die Person doch noch ausfüllt oder ob dann eine neue Runde losgeht (eben dann ohne Gleichverteilung).

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

...