0 votes
in SoSci Survey (dt.) by s303917 (220 points)

Weil ich aktuell ehrlich gesagt nicht weiß wie ich weiterkomme. Ich mache das ganze zum ersten Mal und brauche alle möglichen Quellen, vor allem ChatGPT, um das über eine Quotierung zu implementieren.

Ich habe nun auf Seite 3 (also nach der Länderabfrage) folgenden PHP-Code:

// Maximale Anzahl pro Land festlegen
$quotaLimit = 750;

// Antwort aus der Länderfrage auslesen
$country = value('A007');

// Vorhandene Zählungen abrufen
$cases_DE = statistic('count', 'A011_01', 1); // Teilnehmer Deutschland
$cases_FR = statistic('count', 'A012_01', 1); // Teilnehmer Frankreich
$cases_ES = statistic('count', 'A013_01', 1); // Teilnehmer Spanien
$cases_IT = statistic('count', 'A014_01', 1); // Teilnehmer Italien
$cases_GB = statistic('count', 'A015_01', 1); // Teilnehmer Großbritannien

// Quoten prüfen und ggf. Teilnehmer ablehnen
if ($country == 1 && $cases_DE >= $quotaLimit) {

goToPage('QuotaEnd');

} elseif ($country == 2 && $cases_FR >= $quotaLimit) {

goToPage('QuotaEnd');

} elseif ($country == 3 && $cases_ES >= $quotaLimit) {

goToPage('QuotaEnd');

} elseif ($country == 4 && $cases_IT >= $quotaLimit) {

goToPage('QuotaEnd');

} elseif ($country == 5 && $cases_GB >= $quotaLimit) {

goToPage('QuotaEnd');

}

Auf Seite 4 habe ich folgenden PHP-Code:

// Antwort aus der Länderfrage auslesen
$country = value('A007');

// Dynamischer Hinweistext basierend auf der Länderwahl
if ($country == 1) {

$endText = "Vielen Dank! Leider ist die maximale Teilnehmeranzahl für Deutschland bereits erreicht.";

} elseif ($country == 2) {

$endText = "Vielen Dank! Leider ist die maximale Teilnehmeranzahl für Frankreich bereits erreicht.";

} elseif ($country == 3) {

$endText = "Vielen Dank! Leider ist die maximale Teilnehmeranzahl für Spanien bereits erreicht.";

} elseif ($country == 4) {

$endText = "Vielen Dank! Leider ist die maximale Teilnehmeranzahl für Italien bereits erreicht.";

} elseif ($country == 5) {

$endText = "Vielen Dank! Leider ist die maximale Teilnehmeranzahl für Großbritannien bereits erreicht.";

} else {

$endText = "Vielen Dank! Leider ist die maximale Teilnehmeranzahl für Ihr Land bereits erreicht.";

}

// Hinweistext anzeigen
html('

' . htmlspecialchars($endText) . '

');

Und auf Seite 13, die Seite vor der Endseite, folgenden PHP-Code:

// Antwort der Länderfrage auslesen
$country = value('A007');

// Zählvariablen aktualisieren basierend auf der Länderwahl (IDs verwenden)
if ($country == 1) {

put('A011_01', value('A011_01') + 1); // Teilnehmer für Deutschland zählen

} elseif ($country == 2) {

put('A012_01', value('A012_01') + 1); // Teilnehmer für Frankreich zählen

} elseif ($country == 3) {

put('A013_01', value('A013_01') + 1); // Teilnehmer für Spanien zählen

} elseif ($country == 4) {

put('A014_01', value('A014_01') + 1); // Teilnehmer für Italien zählen

} elseif ($country == 5) {

put('A015_01', value('A015_01') + 1); // Teilnehmer für Großbritannien zählen

}

Wie stelle ich zudem die internen Variablen ein? Muss ich bei den Items etwas einfügen?

Bei der Einstellung des einen Items habe ich folgendes ausgewählt:

  • "Daten mit der restlichen Seite übermitteln"
  • "Ganze Zahlen"

Ich wäre dankbar für präzise Hilfe, weil ich gerade nicht weiter weiß.

Viele Grüße

by s109993 (12.0k points)
Da kann ja etwas nicht mit der Reihenfolge stimmen.

Auf Seite 3 Länderfrage
Auf Seite 4, bevor Sie  "Vorhandene Zählungen abrufen", muss ja zuerst einmal die interne Variable befüllt werden. Das kann ja nicht erst 10 Seiten später passieren :)

Schau vielleicht nochmal in die Erklärung und halte dich an die Reihenfolge: https://www.soscisurvey.de/help/doku.php/de:survey:quota

Beispiel:

$country = value('A007');

if ($country = 1) {
  put('A011_01', 1);
}  elseif ($country = 2) {
  put('A012_01', 1);
} ($country = 3) {
  put('A013_01', 1);
} und so weiter...

Dann kann "Vorhandene Zählungen abrufen" und der Filter kommen


und chatGPT funktioniert bei SoSci nur bedingt, weil SoSci einige "eigene" Funktionen benutzt. Besser SoSci wiki benutzen.

1 Answer

0 votes
by SoSci Survey (330k points)

Bitte starten Sie mit der Anleitung zur Quotierung und lassen Sie ChatGPT bitte außen vor. ChatGPT hat keine Ahnung von SoSci Survey und die Vorschäge kosten Sie nur Zeit.

// Antwort aus der Länderfrage auslesen
$country = value('A007');

// Vorhandene Zählungen abrufen
$cases_DE = statistic('count', 'A011_01', 1); // Teilnehmer Deutschland
$cases_FR = statistic('count', 'A012_01', 1); // Teilnehmer Frankreich
$cases_ES = statistic('count', 'A013_01', 1); // Teilnehmer Spanien
$cases_IT = statistic('count', 'A014_01', 1); // Teilnehmer Italien
$cases_GB = statistic('count', 'A015_01', 1); // Teilnehmer Großbritannien

Der wesentliche Punkt ist: Sie brauchen in einem einzelnen Interview nicht zu wissen, wie häufig jedes Land schon abgefragt wurde. Sie müssen ausschließlich herausfinden, wie viele Fälle für das Land vorliegen, welches der aktuelle Teilnehmer ausgewählt hat.

$country = value('A007');
$faelle = statistic('count', 'A007', $country);

Und mit dieser Zahl prüfen Sie Ihre Quote. Wie in der Anleitung beschrieben.

if ($faelle > 650) {
    text('SX01');
    buttonHide();
    pageStop();
}

Wenn Sie nur abgeschlossene Fälle zählen wollen, dann legen Sie eine (!) interne Variable an, z.B. A011_01. Die zählen sie ...

$country = value('A007');
$faelle = statistic('count', 'A011_01', $country);

Und am Ende des Fragebogens (vorletzte Seite) kopieren Sie die Auswahl in diese Variable:

put('A011_01', value('A007'));

Mehr nicht.

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

...