0 votes
in SoSci Survey (dt.) by s210296 (270 points)

Ich möchte eine Logik in einer Ouotierung einbaunen

ich habe zwei quota

$quotaIND = [ 1 >= 195 ];

$quotaIOKR = [ 1 >= 195 ];

nun möchte ich, wenn der User bei der Variable OKR == 1 und bei der Vaibale IND == 1 auswählt, dann zähle dies zu OKR Gruppe

Kannst du mir helfen, wie man das in PHP codiert?
Das wäre super hilfreich.
Herzlichen Dank.

Gruß

1 Answer

0 votes
by SoSci Survey (305k points)

Damit man "zu einer Gruppe zählen" kann, muss eine interne Variable gesetzt werden. Nehmen wir mal an, Sie haben IV01_01 angelegt und diese soll 1/2-kodiert werden mit

1 = nicht in der Gruppe OKR
2 = Mitglied der Gruppe OKR

wenn der User bei der Variable OKR == 1 und bei der Vaibale IND == 1 auswählt, dann zähle dies zu OKR Gruppe

Das wird nun einfach mit einem kleinen PHP-Filter erledigt.

if ((value('OKR') == 1) && (value('IND') == 1)) {
  $grpOKR = 2;
} else {
  $grpOKR = 1;
}

Diesen Code brauchen wir zweimal. Einmal vorne im Fragebogen, um die Quote zu prüfen. Und einmal hinter im Fragebogen, um den Fall für die Gruppe/Quote zu zählen:

put('IV01_01', $grpOKR);

Ansonsten entspricht die Anwendung dem Beispiel zum Alter in der Anleitung Quotierung. Dort heißt das Pendant zu $grpOKR dann $ageGroup.

Denken Sie daran, dass Sie sowohl für OKR=2 wie auch für OKR=1 eine Quote definieren müssen. Wenn eine Gruppe beliebig gruß werden darf (also kein Quotenstopp), dann setzen Sie eine sehr große Zahl ein.

by s210296 (270 points)
Es scheint nciht zu funktionieren.


ich habe nun zu Beginn im Fragebogen nun:$quotaIND = [
  1 >= 195,
  2 >= 195
];

$quotaOKR = [
  1 >= 195,
  2 >= 195
];


$IND = value('ZS30');
$OKR= value('ZS02');

if ((value('ZS02') == 1) && (value('ZS30') == 1)) {
  $grpOKR = 1;
} elseif ((value('ZS02') == 1) && (value('ZS30') == 2)) {
  $grpOKR = 1;
}
else {
  $grpINT = 1;
}

put('IQUOTA', $grpOKR);

$casesIND   = statistic('count', 'ZS30');
debug($casesIND);

$casesOKR   = statistic('count', 'ZS02');
debug($casesOKR);

if (($casesIND >= $quotaIND) && ($casesOKR >= $quotaOKR))
{
  redirect('https://survey.maximiles.com/quotasfull?p=89490_f1bc75ab&m=%reference%');
};


if ((value('ZS02') == 1) && (value('ZS30') == 1)) {
  $grpOKR = 1;
} elseif ((value('ZS02') == 1) && (value('ZS30') == 2)) {
  $grpOKR = 1;
}
else {
  $grpINT = 1;
}


und am Ende
$quotaIND = [
  1 >= 195,
  2 >= 195
];

$quotaOKR = [
  1 >= 195,
  2 >= 195
];


$IND = value('ZS30');
$OKR= value('ZS02');

if ((value('ZS02') == 1) && (value('ZS30') == 1)) {
  $grpOKR = 1;
} elseif ((value('ZS02') == 1) && (value('ZS30') == 2)) {
  $grpOKR = 1;
}
else {
  $grpINT = 1;
}

put('IQUOTA', $grpOKR);

$casesIND   = statistic('count', 'ZS30');
debug($casesIND);

$casesOKR   = statistic('count', 'ZS02');
debug($casesOKR);

if (($casesIND >= $quotaIND) && ($casesOKR >= $quotaOKR))
{
  redirect('https://survey.maximiles.com/quotasfull?p=89490_f1bc75ab&m=%reference%');
};

und bekommen folgende Meldung:
The command put() has been used with the variable name IQUOTA. There is no variable with this ID. Please check the variable listing for the proper variable name.

Wo lege ich die interne Varibale an?
Passt der Rest?

VG
by SoSci Survey (305k points)
> Wo lege ich die interne Varibale an?

Dies wird in der Anleitung erklärt:
https://www.soscisurvey.de/help/doku.php/de:create:questions:internal

> Passt der Rest?

Das kann ich so pauschal nicht beantworten. Beheben wir erstmal die Fehler und testen dann, ob es funktioniert.

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

...