Ich brauche (und möchte) letztendlich nicht wissen, wer wen gezogen hat, um Anonymität der darauf folgenden Aufgabe zu gewährleisten. Ich will nur sicherstellen, dass jede Person von irgendeiner Person gezogen wurde, dass keine Person sich selber zieht.
Das heißt, ist ist für Ihre Auswertung vollkommen egal, welche andere Person gezogen wurde. Ist es denn relevant, wie häufig welche andere Person gezogen wird? Also im Extremfall: Wäre es auch okay, wenn alle dieselbe "andere" Person zugewiesen bekommen außer dieser Person selbst?
Generell muss SoSci Survey irgendwoher wissen, wer da teilnimmt, wenn es die Person aus der Ziehung nehmen soll. Wenn Sie also keine personalisierten Links versenden möchten, dann geht das nur über den vor Ihnen vorgeschlagenen Weg, dass man ggf. erneut zieht.
Allerdings wird das nicht mit dem Zufallsgenerator zusammen funktionieren. Denn dieser zieht nur einen Wert pro Interview. Und wenn Sie einen zweiten Zufallsgenerator verwenden würden, wüssten Sie ja schon wer teilnimmt, wenn der zweite zum Einsatz kommt.
Insofern würde ich hier ausnahmsweise ein shuffle()
empfehlen. Das könnte so aussehen:
if (!isset($personen)) {
// Erstmal brauchen wir eine Liste - da nehmen wir Ihren Zufallsgenerator als Quelle
$personen = getItems('RG01', 'all');
// Die mischen wir
shuffle($personen);
// Und merken uns die Abfolge
registerVariable($personen);
}
// Daraus nehmen wir den ersten Namen
$person = $personen[0];
// Und speichern den Namen zum Code in einen Platzhalter
$name = getValueText('RG01', $person);
replace('%name%', $name);
// Und dann zeigen Sie die Frage, ob man das selbst ist
question('AB01');
Der Trick ist nun: Wenn jemand "ja" anwortet, dann schneiden Sie den ersten Wert von der Liste ab. Also auf der folgenden Seite folgender Code:
if (value('AB01') == 1) {
array_shift($personen);
repeatPage();
}
Okay, vielleicht es nicht erforderlich, dann nochmal zu fragen... Wenn Sie also davon ausgehen, dass die zweite Person auf der Liste dann passt, dann...
if (value('AB01') == 1) {
array_shift($personen);
// Daraus nehmen wir (wieder) den ersten Namen
$person = $personen[0];
// Und speichern den Namen zum Code in einen Platzhalter
$name = getValueText('RG01', $person);
replace('%name%', $name);
}