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

Guten Tag,

wir möchten folgendes mittels PHP-Code programmieren:

Die Befragten sollen zunächst ihr Geburtsjahr angeben. Hierbei möchten wir lediglich die Geburtsjahre 1946-1964 (Kennung 1-19, Urne "baby_boomer") sowie 1980-1995 (Kennung 35-50, Urne "generation_y") befragen.

Diejenigen, die nicht in dieses Cluster fallen, werden durch einen Filter rausgeschmissen.

Diejenigen, die in dieses Cluster fallen, sollen mit der Umfrage fortfahren.

Wir möchten beide Generationen zu zwei verschiedenen Marken befragen und dabei sollen beide Marken gleichverteilt bleiben. Also würden wir dies gern mit einer Urne umsetzen, die dafür sorgt, dass gleich viele Personen zu beiden Marken befragt werden.

Wir möchten insgesamt 120 Personen befragen.
--> 60 pro Marke - und dabei sollen 30 pro Generation befragt werden.
Hierfür haben wir in beiden Urnen 60 Zettel vergeben: 30x die 1, 30x die 2.

Zusammengefasst möchten wir einfach nur, dass automatisch gleich viele Personen zu beiden Marken befragt werden und wir uns keine Sorgen um die Gleichverteilung machen müssen. Dabei soll natürlich beachtet werden, dass jeder nur zu einer einzigen Marke befragt wird.

Anbei unser PHP-Code, der leider eine Fehlermeldung auswirft, die wir nicht nachvollziehen können:

if((value('HT02')==19));
{
urnDraw('baby_boomer','IV01','end');
$baby1 = value('IV01_01');
urnDraw('baby_boomer','IV02','end');
$baby2 = value('IV01_01');
if($baby1<='baby2')
{
gotopage('jump1');
urnDraw('Baby_boomer', 'IV01');
html('<p>Auf dem Zettel steht die Kombination '.value('IV01_01').' - '.value('IV01_02').'</p>');
}
if($baby2<=baby1)
{
gotopage('Giorgio Armani');
urnDraw('Baby_boomer', 'IV02');
}
if(value('HT02')>=35);
{
urnDraw('generation_y','IV01','end');
$Y1 = value('IV01_01');
urnDraw('generation_y','IV02','end');
$Y2 = value('IV01_01');
if($Y1<=Y2)
{
gotopage('jump1');
urnDraw('generation_y', 'IV01');
html('<p>Auf dem Zettel steht die Kombination '.value('IV01_01').' - '.value('IV01_02').'</p>');
}
if($Y2<=Y1)
gotopage('Giorgio Armani');
urnDraw('generation_y' , 'IV02');
}
}

Das ist die Fehlermeldung:

VIELEN DANK fürs Lesen und für eine Antwort!

Viele Grüße
Valeria

in SoSci Survey (dt.) by s114904 (150 points)
edited by SoSci Survey

1 Answer

0 votes

Zwei Fehler, die mir ins Auge stechen:

if((value('HT02')==19));
{
  urnDraw('baby_boomer','IV01','end');

Wenn Sie zwischen der schließenden runden Klammer beim IF und der öffenenden geschweiften Klammer einen Stichpunkt setzen, dann wird das IF ignoriert. Was Sie schreiben, ist gleichbedeutend mit:

if((value('HT02')==19)) {
  // Nichts tun
};
{
  urnDraw('baby_boomer','IV01','end');

Der Strichpunkt muss also unbedingt weg:

if((value('HT02')==19))
{
  urnDraw('baby_boomer','IV01','end');

Nummer 2: Die Fehlermeldung zu IV01. Eine Frage "interne Variablen" müssen Sie erstmal manuell im Fragenkatalog anlegen. Mehr dazu s. put().

Und dann noch ein Hinweis: Sie ziehen zweimal aus derselben Urne. Es kann dabei passieren, dass Sie zweimal den gleichen Wert bekommen. Das ist sogar sicher, wenn nur noch ein Zettel in der Urne ist, bevor diese neu befüllt wird.

Wenn Sie zwei Ziehungen pro Interview benötigen, dann verwenden Sie einen Zufallsgenerator statt der Urne. Der kann das. Und der bringt seine Variablen übrigens selbst mit :)

Damit es trotzdem mit den beiden Gruppen klappt, verwenden Sie in jeder Gruppe einen anderen Zufallsgenerator und kopieren SIe die Ziehung(en) anschließend mit put() in eine interne Variable. Die müssen Sie natürlich dann doch wieder anlegen:

put('IV01_01', value('RG01x1'));
put('IV01_02', value('RG01x2'));
by SoSci Survey (88.4k points)
Programmierung PHP Code interne Variable
...