0 votes
in SoSci Survey (dt.) by s090684 (335 points)

Hallo Zusammen,

ich habe an gleicher Stelle die gleiche Fehlermeldung, an den Anführungszeichen liegt es aber nicht, die hatte ich nie drin.

Im PHP-Code trat ein Fehler auf.
Fehler im Fragebogen: Undefined offset: 1
Zeile: 46

PHP-Code

    043 
    044 $n = statistic('count', 'IV01_03', $ageGrp);
    045 
    046 $nMax = $limits[$ageGrp];
    047  
    048 
    049 if ($n >= $nMax) {

Hier der vollständige Code:

$age = value('SD01');
$sex = value('SD02');


//Screenout für unter 18
if ($age == 1) {
 redirect('screenoutlink');

}

//Quoten für Alter
// Umkodieren
if ($age < 18) {
  $ageGrp = 1;
} elseif ($age <= 25) {
  $ageGrp = 2;
} elseif ($age <= 35) {
  $ageGrp = 3;
} elseif ($age <= 45) {
  $ageGrp = 4;
} elseif ($age <= 55) {
  $ageGrp = 5;
} else {
  $ageGrp = 6;
}
 
// Im Datensatz speichern
put('IV01_03', $ageGrp);

// Obergrenzen Alter
$limits = array(
  2 => 75,
  3 => 91,
  4 => 86,
  5 => 116,
  6 => 282
);
 
// Ermittlung der Anzahl abgeschlossener Fragebögen in dieser Altersgruppe
$n = statistic('count', 'IV01_03', $ageGrp);
// Auslesen des Limit für diese Altergrsuppe
$nMax = $limits[$ageGrp];
 
// Quotenstopp
if ($n >= $nMax) {
  // Hier der individuelle Quotafull-Link für die Studie
  redirect('quotafulllink');
}

// Quote für Geschlecht
// Obergrenzen Geschlecht
$limits = array(
  1 => 318,
  2 => 332
);
 
// Ermittlung der Anzahl abgeschlossener Fragebögen in dieser Altersgruppe
$n = statistic('count', 'SD02', $sexGrp);
// Auslesen des Limit für diese Altergrsuppe
$nMax = $limits[$sexGrp];
 
// Quotenstopp
if ($n >= $nMax) {
  // Hier der individuelle Quotafull-Link für die Studie
  redirect('quotafulllink');
}

Ich habe eine Weile gesucht, konnte den Fehler aber nicht ausmachen und würde mich über Hilfe freuen.
Anschließend gleich eine weitere Frage: Ich definiere die php Variablen $limits, $n und $nMax immer wieder neu (auf einer späteren Fragebogenseite wird noch nach Bildung quotiert). Das sollte kein Problem sein oder empfiehlt es sich, hier je Quote einen anderen Variablennamen zu verwenden? Etwa $limitsAge, $limitsSex, $limitsEdu...

Besten Dank für Ihre Hilfe!

1 Answer

0 votes
by SoSci Survey (304k points)

Die Fehlermeldung besagt, dass $ageGrp den Wert 1 hat, aber dafür kein Eintrag im Array `$limits' vorliegt:

// Obergrenzen Alter
$limits = array(
  2 => 75,
  3 => 91,
  4 => 86,
  5 => 116,
  6 => 282
);

Ihr Screenout nach dem Alter läuft hier ins leere. Der filter müsste korrekt heißen:

if ($age < 1) {
 redirect('screenoutlink');
}

Oder aber

if ($ageGrp == 1) {
 redirect('screenoutlink');
}

... dann müsste er aber unter dem IF-Bäumchen stehen, welche die Variable $ageGrp definiert/umkodiert.

by s090684 (335 points)
edited by s090684
Herzlichen Dank, jetzt funktioniert es. Sollte jemand den von mir oben beschriebenen Code nutzen wollen, sei darauf geachtet, dass bei der Recodierung von $age zu $ageGrp die Variablenwerte (Kenn.) und nicht die tatsächlichen Altersstufen eingetragen werden. Beispiel: Das Alter 25 hatte bei mir den Variablenwert 9. Entsprechen müssen Werte < 9 und nicht, wie oben abgebildet <25, in die Altersgruppe 2 laufen. Alternativ ginge auch $ageNeu = ($age+16); und dann mit $ageNeu die Recodierung in $ageGrp vornehmen.


Ein weiterer Fehler steckt unten in der Quotierung für Geschlecht. Es muss überall $sex und nicht $sexGrp heissen.
 
Beste Grüsse!

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

...