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

Hallo zusammen,

in der Befragung soll das nach Alter, Geschlecht und Bildung quotiert werden. Ich habe die entsprechenden Anweisungen dazu gelesen/befolgt, bekomme aber immer und immer wieder verschiedene Fehlermeldungen.

Zum Testen der Funktion habe ich zwei Suchmaschinen-Websites angegeben, auf die jeweils umgeleitet werden soll, wenn die Teilnehmer zu jung, zu alt oder in einer bereits erfüllten Gruppen sind. Ebenfalls zum Test sollen max. 2 Personen pro Altesgruppe befragt werden.

Der PHP-Code sieht momentant so aus:

$ageGrp2 = value('SD01');
if (($ageGrp2 < 2) or ($ageGrp2 > 6)) 
{
redirect('https://www.startpage.com');
};

$limits = array
('2=>2,
3=>2,
4=>2,
5=>2,
6=>2');

$n = statistic('count', 'SD01', '$ageGrp2');

if ($n >= $limits['SD01']) 
{
redirect ('https://www.google.de');
}

SD01 ist meine Altersvariable mit folgenden Auswahlmöglichkeiten
1= unter 18
2= 18 bis 29
3= 30 bis 39
4= 40 bis 49
5 =50 bis 59
6= 60 bis 74
7= 74+

Das Screenout für SD01=1 oder SD01=7 funktioniert, für die anderen Gruppen wird die folgende Fehlermeldung ausgegeben, mit der ich leider nichts anfangen kann:

Fehler im Fragebogen: Undefined offset: 6
Zeile: 21

PHP-Code

018
019 $n = statistic('count', 'SD01', '$ageGrp2');
020
021 if ($n >= $limits[$ageGrp2])
022 {
023 {
024 redirect ('https://www.google.de');

Kann mir da jemand mit einer Lösung weiterhelfen? Wo liegt der Fehler?

Herzlichen Dank schon mal vorab!

in SoSci Survey (dt.) by s081059 (125 points)

1 Answer

+1 vote

Der folgende Aufruf definiert keine "Tablelle" im Sinne von mehreren Limits, sondern nur einen einzigen String:

$limits = array
('2=>2,
3=>2,
4=>2,
5=>2,
6=>2');

Lassen Sie hier bitte die Anführungszeichen weg, um ein Array für die Schlüssel 2 bis 6 zu definieren:

$limits = array(
  2=>2,
  3=>2,
  4=>2,
  5=>2,
  6=>2
);
by SoSci Survey (92.7k points)
Auswahl abgeschlossonere Fragebögen
Erst einmal recht herzlichen Dank für die schnelle Antwort - es klappt einwandfrei!!

Nur tut sich nun ein neues Problem auf, es werden mit den Funktionen natürlich auch die Fragebögen gezählt, die abgebrochen wurden. Ich möchte die Quotierung aber natürlich nur für die vollständigen haben.

Dazu stellen sich nun diese Fragen:
Wenn ich das richtig sehe, muss ich dann die put()-Funktion nutzen und alle drei interessierenden Variablen erst einmal als Interne Variablen abspeichern?
Muss ich da schon definieren, dass nur Fälle mit SD01 >2 und <7 gespeichert werden, also nur die Befragten, die zwischen 18 und 74 Jahre alt sind? Oder reicht es zunächst aus,

put ('IN01_01', $ageGrp);

zu setzen, wobei IN01_01 die interne Variable für das Alter werden soll.

Diesen put()-Code würde ich laut der Anleitung ans Ende des FB setzen, während die eigentliche Quotierung aber direkt auf der 2. Seite kommt, damit die unpassenden Probanden nicht durch den FB klicken müssen, ist das richtig?

Und wie müsste ich den Code der Quotierung ändern, damit hier nur die abgeschlossenen Interviews mittels count() gezählt werden?

Momentan sieht der Quotierungs-Code so aus:

{$ageGrp = value('SD01');
if (($ageGrp < 2) or ($ageGrp > 6) or ($ageGrp == -9)) {redirect ('https://www.startpage.com');}
$limits = array(2=>4, 3=>4, 4=>4, 5=>4, 6=>4);
$n = statistic('count', 'SD01', $ageGrp);
$nMax = $limits[$ageGrp];
if ($n >= $nMax) {redirect ('https://google.de');}}

Der put()-Code für die Interne-Variable so:
$ageGrp = value('SD01');
put ('IN01_01', $ageGrp);

Auch hier herzlichen Dank vorab für jeden Hinweis :)
...