0 votes
in SoSci Survey (dt.) by s288744 (150 points)

Hi,

ich habe eine eine Frage erstellt, in der die Teilnehmer aus einer Liste 8 Länder auswählen sollen. In der anschließenden Frage sollen entsprechend der Vorauswahl diese 8 Länder paarweise auf einer Likert-Skala bewertet werden. Also insgesamt 28 Kombinationen bewertet werden (8x7/2).

Bisher sieht mein PHP-Code folgendermaßen aus:

$items = getItems('LA01','==', 2);

question('MS01', $items);

$combinations = [28];
for ($i=0; $i<count($selected); $i++) {
for ($j=0; $i<count($selected); $j++) {
$combinations[28] = [$selected[$i], $selected[$j]];
}
}
debug($combinations);

Leider bekomme ich Fehlermeldungen und komme nicht weiter. Eine der Fehlermeldungen lautet: "Für die Frage MS01 wurde kein Item mit der Kennung 34 gefunden".
Könnt ihr mir helfen?

Vielen vielen Dank und LG

1 Answer

0 votes
by SoSci Survey (327k points)

Für die Frage MS01 wurde kein Item mit der Kennung 34 gefunden

Das bezieht sich auf diese Zeile, die in Ihrem Code m.E. nicht erforderlich ist:

question('MS01', $items); 

Hier würden Sie mit Frage MS01 nochmal zusätzliche Fragen zu den ausgewählten Ländern stellen, aber dafür müsste die Frage MS01 auch so viele Items haben, wie die Länderauswahl.

Außerdem noch nicht ganz korrekt ich diese Zeile:

$combinations[28] = [$selected[$i], $selected[$j]];

Die 28 muss hier raus:

$combinations[] = [$selected[$i], $selected[$j]];

Mit der leeren Klammer wird an das Array $combinations ein Element angehängt. Falls Sie mit Arrays nicht vertraut sind, lesen Sie bitte kurz die verlinkte Anleitung, danke.

Außerdem wäre es jetzt an der Zeit, dass Sie sich schonmal die Anleitung zur Multi-Level-Struktur durchlesen. Die brauchen Sie für den nächsten Schritt, in welchem Sie das Array $combinations von vorne bis hinten abarbeiten.

by s288744 (150 points)
Danke für die Hilfe!
Ich habe nun auf der Seite 2 die Abfrage der Länder
Auf Seite 3 habe ich folgenden PHP-Code:

// Step 1:
$items = getItems('LA01','==', 2);

// Convert the selected countries from a string to an array
$selectedArray = explode(',', $selected);

// Step 2: Generate combinations of the selected countries
$combinations = [];
for ($i = 0; $i < count($selectedArray); $i++) {
    for ($j = $i + 1; $j < count($selectedArray); $j++) {
        $combinations[] = [$selectedArray[$i], $selectedArray[$j]];
    }
}
debug($combinations);

// Step 3: Loop through the combinations
$currentCombination = loopPage($combinations);

// Step 4: Start sub-questionnaire for each combination
multiLevelDown('sub01', $currentCombination);

Und in einer sub-questionnaire habe ich auf einer Seite die Kombinationsfrage und auf der nächsten Seite des sub-questionnaires diesen PHP-Code:

// Retrieve the combination data
$currentCombination = multiLevelData();
list($item1, $item2) = $currentCombination;

// Set placeholders for the items
replace('%item1%', $item1);
replace('%item2%', $item2);

// Define the questions in the sub-questionnaire
question('How would you rate the similarity between %item1% and %item2%?', 'scale', [
    'Very Similar',
    'Somewhat Similar',
    'Neutral',
    'Somewhat Different',
    'Very Different'
]);

// Return to main questionnaire
multiLevelReturn(true);

An sich läuft der Fragebogen bei Testung auch richtig durch, allerdings wird nur der Fragetext der Kombinationsfrage angezeigt und keine Kombination der Items und die korrekte Darstellung der Frage mit Skala. Danach fährt der Fragebogen ordnungsgemäß auf  dem übergeordneten Fragebogen fort. Könnt ihr mir sagen, was hier noch fehlt bzw. falsch ist? Dankeschön :)
by SoSci Survey (327k points)
> // Convert the selected countries from a string to an array
> $selectedArray = explode(',', $selected);

Dieser Schritt ist nicht erforderlich und wird mangels einer Variable $selected auch nicht funktionieren. Sie haben in $items bereits das gewünschte Array.

$selectedArray = $items;
by s288744 (150 points)
Alles klar, nun komme ich beim Testdurchlauf bis zum Fragetext der Kombinationsfrage. Mir werden aber immer noch keine Kombinationen, also die eigentliche Frage angezeigt und man kann den Fragebogen ab dieser Seite auch nicht weiterdurchlaufen. Warum werden die Kombinationen denn nicht angezeigt?
by SoSci Survey (327k points)
> Warum werden die Kombinationen denn nicht angezeigt?

Sie setzen das question() im untergeordneten Fragebogen m.E. noch nicht korrekt ein. Der question()-Befehl nimmt nur die Kennung einer Frage - alle Texte und auch die Platzhalter %item1% und %item2% müssen direkt in die Frage.

Ob Sie die Frage dann per question() einbinden oder in die Seite ziehen, das ist hier nicht weiter relevant.

Auch noch interessant wäre: Was zeigt denn die Debug-Information an?
by s288744 (150 points)
Ok, dankeschön! Die Frage habe ich jetzt m.E. korrekt eingebuden.

Die Debug-Ausgabe zeigt folgendes an:

[Information]    Fragen bisher zu 100% vollständig beantwortet
[Verarbeitung]    Erstelle Seite 3 in Fragebogen FR5
[Information]    value("LA01") = 8
debug()    Inhalt: $selected = 8 (string)
debug()    Inhalt: 08
debug()    Inhalt: Array (ohne Elemente)
debug()    Inhalt: 'Not enough countries selected to generate combinations' = Not enough countries selected to generate combinations (string)
[Information]    Die Seite zeigt keine Inhalte, automatisch weiter mit Seite Nr. 4
[Verarbeitung]    Erstelle Seite 4 in Fragebogen FR5

Wenn ich das richtig verstehe, kann sie die Kombinationen nicht anzeigen, weil die Antworten aus LA01 als eine Antwort gespeichert werden und nicht als arrays oder kommagetrennte Liste und daher keine Kombinationen generiert werden können richtig?

Als Fragetyp habe ich aber "Mehrfachauswahl" ausgewählt und auch angegeben, dass sowohl mind. als auch höchst. 8 Länder ausgewählt werden können für die Kombination.

Wo kann ich die Antwortspeicherung denn überprüfen bzw. anpassen? Weil das scheint doch das Problem zu sein, richtig?

Vielen Dank!!
by SoSci Survey (327k points)
Es scheint so, dass Sie den Code zwischenzeitlich geändert haben .. value('LA01') kommt in dem Code, den Sie oben gepostet hatten, nicht vor. Dort gibt es noch ein getItems().

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

...