0 votes
in SoSci Survey (dt.) by s212490 (190 points)
edited by SoSci Survey

Ich möchte die Anzahl der richtigen Antworten der Vp erfassen. Dazu habe ich folgenden Code genutzt.
Ich habe zunächst die richtigen Antworten definiert. Die Frage ist vom Typ "Lückentext offen"

// Definition der Fragen und der korrekten Antworten
$fragen = [
  'ZE06_01' => 18,  
  'ZE07_01' => 60,  
  'ZE08_01' => 5,  
  'ZE09_01' => 17,
  'ZE10_01' => 8,
  'ZE11_01' => 29,
  'ZE12_01' => 5,
  'ZE13_01' => 13,
  'ZE14_01' => 21,
  'ZE15_01' => 51,
];
// Initialisierung einer Zähler-Variable
$points = 0;
 
// Prüfung aller Fragen in einer Schleife
foreach ($fragen as $variable=>$correct) {
  if (value($variable) == $correct) {
    $points++;
  }
}

// ... oder in einer internen Variable speichern
put('IV_01', $points);

Ich habe bereits eine Frage vom Typ "interne Variable" erstellt und dort "IV_01" definiert. In der Variablenübersicht wird mir "IV_01" nicht in der Liste der internen Variablen präsentiert, sondern weiter unten bei den regulären Items. Auch wird mir bei den erhobenen Daten noch nicht angezeigt, wie viele Antworten richtig beantwortet wurden.
Habe ich die interne Variable also nicht richtig eingerichtet? Wenn nein, wie kann ich das richtig machen?

1 Answer

+1 vote
by SoSci Survey (306k points)

Ich habe bereits eine Frage vom Typ "interne Variable" erstellt und dort "IV_01" definiert.

Dann schreiben Sie den Wert von $points doch mal in diese Variable:

put('IV_01', $points);

Stellen Sie bitte sicher, dass der Variablennamen "IV_01" korrekt ist. SoSci Survey wird einen solchen Namen nicht vergeben, aber falls Sie die Variable umbenannt haben, kann er durchaus korrekt sein.

by s212490 (190 points)
Was meinen sie genau mit "dem Wert von $points". Also die richtige Lösung? Die habe ich oben definiert.
"IV_01" wurde von SoSci Survey vergeben. Ich habe die Frage "Interne Variablen" ausgewählt und der Name erschien automatisch
by SoSci Survey (306k points)
> "IV_01" wurde von SoSci Survey vergeben.

Aber nicht als Variablenname. Wenn Sie in der Rubrik "IV" eine Frage anlegen (und es ist die erste), dann hat die Frage die Kennung "IV01" und die erste Variable in der Frage hätte die Kennugn "IV01_01".

> Was meinen sie genau mit "dem Wert von $points". Also die richtige Lösung?

Ich meine damit die PHP-Variable $points, die Sie in Ihrem PHP-Code verwendet haben, vgl. https://www.soscisurvey.de/help/doku.php/de:create:variables

Was ich inhaltlich meinte: Schreibe Sie die Zeile mit put() ans Ende Ihres PHP-Codes. Und korrigieren Sie ggf. noch das "IV_01" zu "IV01_01"
by s212490 (190 points)
Danke!
Ich habe das so gemacht und nun wird mir die Variable angezeigt. Ich prüfe im Laufe der Woce, ob die Datenauswertung so funktioniert
by s212490 (190 points)
Ein weiteres Anliegen habe ich. Ich habe einen anderen Aufgabentyp mit dem Fragentyp "Dropdown-Auswahl". Hier habe ich die richtigen Lösungen als 1-5 definiert. Je nach Ihrer Lage im Dropdown-Feld.
Leider funktioniert der Code, den ich bei den Zahlenreihen nutze nicht genauso bei der Dropdown-Auswahl.
Folgenden Code nutze ich hier:
// Definition der Fragen und der korrekten Antworten
$fragen = [
  'A101_01' => 3,  
  'A120_01' => 5,  
  'A102_01' => 2,  
  'A119_01' => 1,
  'A103_01' => 5,
  'A118_01' => 3,
  'A104_01' => 2,
  'A117_01' => 4,
  'A105_01' => 5,
  'A116_01' => 5,
];

// Initialisierung einer Zähler-Variable
$points = 0;
 
// Prüfung aller Fragen in einer Schleife
foreach ($fragen as $variable=>$correct) {
  if (value($variable) == $correct) {
    $points++;
  }
}

// ... oder in einer internen Variable speichern
put('IV01_01', $points);


Folgender Fehlercode wird mir angezeigt:
Warning (page 9)
The variable A101_01 has not been asked on a previous page during this interview. Therefore value() cannot determine any answer, yet.
Warning (page 9)
The variable A120_01 has not been asked on a previous page during this interview. Therefore value() cannot determine any answer, yet.
Für alle Aufgaben, die ich oben eigentlich definiert habe.
Woran kann das liegen?
by s212490 (190 points)
In der Datenauswertung funktioniert das nicht.
Mir wird nicht angezeigt, ob Aufgaben falsch beantwortet wurden und auch nicht, wie viele Aufgaben richtig beantwortet wurde.
Ich habe inzwischen alle möglichen Seiten von SoSciSurvey zu dem Thema durchforstet.
Habe ich irgendwo einen Aspekt übersehen?
Ich habe die Variable als Frage erstellt und sie wird mir in der Datenerfassung angezeigt. Sie erfasst aber nichts, deshalb denke ich, dass der Code nicht stimmt.
by SoSci Survey (306k points)
> The variable A101_01 has not been asked on a previous page during this interview. Therefore value() cannot determine any answer, yet.
Warning (page 9)

Haben Sie das Interview denn auf der Seite (oder früher) begonnen, auf welcher die Frage A1 steht? Was sagt denn die Debug-Information auf der Seite mit dem Fehler?

> Mir wird nicht angezeigt, ob Aufgaben falsch beantwortet wurden und auch nicht, wie viele Aufgaben richtig beantwortet wurde.

Richtig, in IV01_01 speichern Sie mit dem PHP-Code nur, wie viele Aufgaben korrekt beantwortet wurden. Wenn Sie etwas anderes speichern möchten, müssen Sie den Code entsprechend anpassen.

Was möchten Sie denn im Datensatz speichern?
by s212490 (190 points)
Diese Aufgabenart kommt auf der Seite das erste Mal vor. Allerdings habe ich auf der vorerigen Seite Zahlenreihen, die kommen auf der Seite auch zum ersten Mal vor und das stellt kein Problem dar.

Das wäre mir auch ausreichend. Leider speichert der PHP-Code nicht Anzahl der richtig beantworteten Aufgaben ab. Bei der Datenerfassung steht nur "0", egal wie viele Antworten richtig sind.
Ein weiterer Punkt. Ich habe vier Seiten mit je 10 Aufgaben und möchte für jede Seite die Anzahl der richtigen Lösungen haben. Wie kann ich das einstellen?
by SoSci Survey (306k points)
> Leider speichert der PHP-Code nicht Anzahl der richtig beantworteten Aufgaben ab. Bei der Datenerfassung steht nur "0", egal wie viele Antworten richtig sind.

Dann lassen Sie sich doch mal anzeigen, was da so los ist:

foreach ($fragen as $variable=>$correct) {
  debug($variable);
  debug(value($variable));
  debug($correct);
  if (value($variable) == $correct) {
    $points++;
  }
}
by s212490 (190 points)
Wenn ich den Code als PHP-Code eingebe, dann folgt folgende Fehlermeldung:


Questionnaire Error (page 7)
There is an error in the PHP code:
Questionnaire Error: The PHP variable $fragen has been used but the variable is yet undefined (the variable has no value).

PHP code

001 namespace s2survey\questionnaire\environment;
002
003 foreach ($fragen as $variable=>$correct) {
004   debug($variable);
005   debug(value($variable));
006   debug($correct);
Questionnaire Error: Invalid argument supplied for foreach()
line: 3

PHP code

001 namespace s2survey\questionnaire\environment;
002
003 foreach ($fragen as $variable=>$correct) {
004   debug($variable);
005   debug(value($variable));
006   debug($correct);
by SoSci Survey (306k points)
Die drei zusätzlichen debug()-Zeilen müssen in Ihrem schon bestehenden Code in der FOR-Schleife ergänzt werden.
by s212490 (190 points)
Folgendes wird angezeigt:

Notice (page 7)
Debug information for $variable:
$variable = ZE01_01 (string)
value('ZE01_01') =
Notice (page 7)
Debug information for value($variable):
value($variable) = (string)
Notice (page 7)
Debug information for $correct:
$correct = 23 (integer)
Notice (page 7)
Debug information for $variable:
$variable = ZE20_01 (string)
value('ZE20_01') =
Notice (page 7)
Debug information for value($variable):
value($variable) = (string)
Notice (page 7)
Debug information for $correct:
$correct = 63 (integer)
Notice (page 7)
Debug information for $variable:
$variable = ZE02_01 (string)
value('ZE02_01') =
Notice (page 7)
Debug information for value($variable):
value($variable) = (string)
Notice (page 7)
Debug information for $correct:
$correct = 13 (integer)
Notice (page 7)
Debug information for $variable:
$variable = ZE19_01 (string)
value('ZE19_01') =
Notice (page 7)
Debug information for value($variable):
value($variable) = (string)
Notice (page 7)
Debug information for $correct:
$correct = 26 (integer)
Notice (page 7)
Debug information for $variable:
$variable = ZE03_01 (string)
value('ZE03_01') =
Notice (page 7)
Debug information for value($variable):
value($variable) = (string)
Notice (page 7)
Debug information for $correct:
$correct = 38 (integer)
Notice (page 7)
Debug information for $variable:
$variable = ZE18_01 (string)
value('ZE18_01') =
Notice (page 7)
Debug information for value($variable):
value($variable) = (string)
Notice (page 7)
Debug information for $correct:
$correct = 15 (integer)
Notice (page 7)
Debug information for $variable:
$variable = ZE04_01 (string)
value('ZE04_01') =
Notice (page 7)
Debug information for value($variable):
value($variable) = (string)
Notice (page 7)
Debug information for $correct:
$correct = 12 (integer)
Notice (page 7)
Debug information for $variable:
$variable = ZE17_01 (string)
value('ZE17_01') =
Notice (page 7)
Debug information for value($variable):
value($variable) = (string)
Notice (page 7)
Debug information for $correct:
$correct = 71 (integer)
Notice (page 7)
Debug information for $variable:
$variable = ZE05_01 (string)
value('ZE05_01') =
Notice (page 7)
Debug information for value($variable):
value($variable) = (string)
Notice (page 7)
Debug information for $correct:
$correct = 42 (integer)
Notice (page 7)
Debug information for $variable:
$variable = ZE16_01 (string)
value('ZE16_01') =
Notice (page 7)
Debug information for value($variable):
value($variable) = (string)
Notice (page 7)
Debug information for $correct:
$correct = 63 (integer)
by SoSci Survey (306k points)
> Notice (page 7)
> Debug information for $variable:
> $variable = ZE01_01 (string)
> value('ZE01_01') =

Es sieht so aus, als hätten Sie in diesem Testdurchlauf keine Antworten in ZE01 eingetragen.
by s212490 (190 points)
Doch, das habe ich. Der Code lautet wie folgt:

// Definition der Fragen und der korrekten Antworten
$fragen = [
  'ZE01_01' => 23,  
  'ZE20_01' => 63,  
  'ZE02_01' => 13,  
  'ZE19_01' => 26,
  'ZE03_01' => 38,
  'ZE18_01' => 15,
  'ZE04_01' => 12,
  'ZE17_01' => 71,
  'ZE05_01' => 42,
  'ZE16_01' => 63,
];

Kann es sein, dass die Antworten noch nicht angenommen wurden?
Der Code muss richtig sein.
by SoSci Survey (306k points)
> Doch, das habe ich. Der Code lautet wie folgt:

Es geht nicht um den Code ... ich meinte, dass Sie das Interview scheinbar nicht ab der Seite gestartet haben, auf welcher die Frage ZE01 etc. abgefragt wird.

Auf welchen Seiten haben Sie denn die Fragen ZE01 etc. und auf welcher Seite kommt die Auswertung? Ab wo haben Sie den Testlauf begonnen? Was zeigt die Debug-Information (rechts oben) wenn Sie auf der Seite mit ZE01 auf "Weiter" geklickt haben? Wenn Sie dann weiter zur Seite mit der Auswertung klicken, was zeigt die Debug-Information dort?
by s212490 (190 points)
Die Frage ZE01 befindet sich auf Seite 7, dort befindet sich auch die Auswertung. Die Auswertung soll der Vp nicht angezeigt werden, sondern sich nur in meiner internen Variable wiederfinden. Eine Seite zur Auswertung für die Vp gibt es also nicht.
by SoSci Survey (306k points)
> Die Frage ZE01 befindet sich auf Seite 7, dort befindet sich auch die Auswertung.

Das kann nicht funktionieren, vgl. Anleitung zu value()

> Wichtig: Es können nur solche Antworten abgefragt werden, welche der Teilnehmer auf einer früheren Fragebogen-Seite angegeben und bereits mit „Weiter“ an den Server übermittelt hat.

Platzieren Sie den PHP-Code also bitte auf die folgende Fragebogen-Seite.
by s212490 (190 points)
edited by s212490
Danke, für die Zahlenreihen funktioniert das jetzt.
Ich ahbe noch einen zweiten Aufgabentyp vom Typ "dropdown-Auswahl". Sobald ich hier denselben PHP-Code eingebe funktioniert die gesamte Punkteerfassung nicht mehr.
Folgende Code nutze ich:
// Definition der Fragen und der korrekten Antworten
$fragen = [
  'A106_01' => 1,  
  'A107_01' => 2,  
  'A108_01' => 3,  
  'A109_01' => 3,
  'A110_01' => 5,
  'A111_01' => 1,
  'A112_01' => 5,
  'A113_01' => 4,
  'A114_01' => 3,
  'A115_01' => 3,
];

// Initialisierung einer Zähler-Variable
$points = 0;
 
// Prüfung aller Fragen in einer Schleife
foreach ($fragen as $variable=>$correct) {
  if (value($variable) == $correct) {
    $points++;
  }
}

// ... oder in einer internen Variable speichern
put('IV04_01', $points);



Ich erhalte folgenden Fehlercode:
Warning (page 17)
The variable A106_01 has not been asked on a previous page during this interview. Therefore value() cannot determine any answer, yet.
Warning (page 17)
The variable A107_01 has not been asked on a previous page during this interview. Therefore value() cannot determine any answer, yet.
Warning (page 17)
The variable A108_01 has not been asked on a previous page during this interview. Therefore value() cannot determine any answer, yet.
Warning (page 17)
The variable A109_01 has not been asked on a previous page during this interview. Therefore value() cannot determine any answer, yet.
Warning (page 17)
The variable A110_01 has not been asked on a previous page during this interview. Therefore value() cannot determine any answer, yet.
Warning (page 17)
The variable A111_01 has not been asked on a previous page during this interview. Therefore value() cannot determine any answer, yet.
Warning (page 17)
The variable A112_01 has not been asked on a previous page during this interview. Therefore value() cannot determine any answer, yet.
Warning (page 17)
The variable A113_01 has not been asked on a previous page during this interview. Therefore value() cannot determine any answer, yet.
Warning (page 17)
The variable A114_01 has not been asked on a previous page during this interview. Therefore value() cannot determine any answer, yet.
Warning (page 17)
The variable A115_01 has not been asked on a previous page during this interview. Therefore value() cannot determine any answer, yet.


Die Variable IV04_01 habe ich bereits in einer Frage definiert
by s212490 (190 points)
Ich habe als Lösungen immer 1-5 angegeben. Je nachdem, an welcher Stelle die Auswahlmöglichkeit stand. Ist das so richtig?
by SoSci Survey (306k points)
> The variable A106_01 has not been asked on a previous page during this interview.

Auch hier haben wir wieder das Problem, dass entweder keine Antworten gegeben wurden oder dass das value() nicht auf einer Seite pltziert ist, die hinter A106 liegt. Deshalb auch hier meine Frage: Auf welcher Seite ist Frage A106 etc., auf welcher Seite der PHP-Code, auf welcher Seite haben Sie Ihren Test begonnen?

> Ich habe als Lösungen immer 1-5 angegeben. Je nachdem, an welcher Stelle die Auswahlmöglichkeit stand. Ist das so richtig?

Das kommt darauf an, wie die Optionen kodiert sind. Das verrät der "Variablen" Karteireiter in der jeweiligen Frage oder die "Variablen-Übersicht".
by s212490 (190 points)
Die Frage ist auf Seite 17, der PHP-Code auf Seite 18. Der Test beginnt auf Seite 7.
Das Ganze ist jetzt genauso formatiert wie bei den Zahlenreihen. Bei den Zahlenreihen funktioniert die Zählung, bei den Anagramen nicht.
Die Antworten sind richtig kodiert.
Folgenden Code nutze ich:

// Definition der Fragen und der korrekten Antworten
$fragen = [
  'A106_01' => 1,  
  'A107_01' => 2,  
  'A108_01' => 3,  
  'A109_01' => 3,
  'A110_01' => 5,
  'A111_01' => 1,
  'A112_01' => 5,
  'A113_01' => 4,
  'A114_01' => 3,
  'A115_01' => 3,
];

// Initialisierung einer Zähler-Variable
$points = 0;
 
// Prüfung aller Fragen in einer Schleife
foreach ($fragen as $variable=>$correct) {
  if (value($variable) == $correct) {
    $points++;
  }
}

// ... oder in einer internen Variable speichern
put('IV04_01', $points);

Die interne Variable "IV04_01" habe ich bereits definiert
by SoSci Survey (306k points)
> Die Frage ist auf Seite 17, der PHP-Code auf Seite 18.

Klingt gut. Posten Sie bitte mal die Debug-Information von Seite 18. Als erstes müssen wir diesen Fehler loswerden:

> The variable A106_01 has not been asked on a previous page during this interview. Therefore value() cannot determine any answer, yet.

Vorher kann nichts funktionieren.
by s212490 (190 points)
Ich korrigiere. Ddie Frage ist auf Seite 16, der PHP-Code auf Seite 17.
Folgenden Fehlercode erhalte ich auf Seite 17.

Warning (page 17)
The variable A106_01 has not been asked on a previous page during this interview. Therefore value() cannot determine any answer, yet.
Warning (page 17)
The variable A107_01 has not been asked on a previous page during this interview. Therefore value() cannot determine any answer, yet.
Warning (page 17)
The variable A108_01 has not been asked on a previous page during this interview. Therefore value() cannot determine any answer, yet.
Warning (page 17)
The variable A109_01 has not been asked on a previous page during this interview. Therefore value() cannot determine any answer, yet.
Warning (page 17)
The variable A110_01 has not been asked on a previous page during this interview. Therefore value() cannot determine any answer, yet.
Warning (page 17)
The variable A111_01 has not been asked on a previous page during this interview. Therefore value() cannot determine any answer, yet.
Warning (page 17)
The variable A112_01 has not been asked on a previous page during this interview. Therefore value() cannot determine any answer, yet.
Warning (page 17)
The variable A113_01 has not been asked on a previous page during this interview. Therefore value() cannot determine any answer, yet.
Warning (page 17)
The variable A114_01 has not been asked on a previous page during this interview. Therefore value() cannot determine any answer, yet.
Warning (page 17)
The variable A115_01 has not been asked on a previous page during this interview. Therefore value() cannot determine any answer, yet.
by SoSci Survey (306k points)
Bitte posten Sie die vollständige Debug-Information von rechts oben (https://www.soscisurvey.de/help/doku.php/de:create:debugging). Danke.
by s212490 (190 points)
Die Variablen sind aber auf Seite 16. Dort sind die Fragen mit der genauen Bezeichnung
by s212490 (190 points)
Seite 16 mit den Fragen:
[Information]    Interview number 314 is to be continued
[Information]    Questionnaire Expra from project tutorial307944 will be used
[Information]    Retention period on page 18 has been 47 seconds
[Processing]    Reading answers from page 17+18
[Information]    Answer missing for SC06_01
[Information]    0% of the questions have been answered so far
[Processing]    Create page 16 in questionnaire Expra
[Content]    Create question A106
[Content]    Create question A107
[Content]    Create question A108
[Content]    Create question A109
[Content]    Create question A110
[Content]    Create question A111
[Content]    Create question A112
[Content]    Create question A113
[Content]    Create question A114
[Content]    Create question A115
[Information]    The following placeholders have been prepared:
%remain% = (text) 238

Seite 17 mit PHP-Code:
[Information]    Interview number 314 is to be continued
[Information]    Questionnaire Expra from project tutorial307944 will be used
[Information]    The retention period on page 16 has been additional 32 seconds
[Processing]    Reading answers from page 16
[Information]    Ignore A106 failed (omit after probing)
[Information]    Answer missing for A106
[Information]    Ignore A107 failed (omit after probing)
[Information]    Answer missing for A107
[Information]    Ignore A108 failed (omit after probing)
[Information]    Answer missing for A108
[Information]    Ignore A109 failed (omit after probing)
[Information]    Answer missing for A109
[Information]    Ignore A110 failed (omit after probing)
[Information]    Answer missing for A110
[Information]    Ignore A111 failed (omit after probing)
[Information]    Answer missing for A111
[Information]    Ignore A112 failed (omit after probing)
[Information]    Answer missing for A112
[Information]    Ignore A113 failed (omit after probing)
[Information]    Answer missing for A113
[Information]    Ignore A114 failed (omit after probing)
[Information]    Answer missing for A114
[Information]    Ignore A115 failed (omit after probing)
[Information]    Answer missing for A115
[Information]    0% of the questions have been answered so far
[Processing]    Create page 17 in questionnaire Expra
[Information]    value("A106_01") = ???
[Information]    value("A107_01") = ???
[Information]    value("A108_01") = ???
[Information]    value("A109_01") = ???
[Information]    value("A110_01") = ???
[Information]    value("A111_01") = ???
[Information]    value("A112_01") = ???
[Information]    value("A113_01") = ???
[Information]    value("A114_01") = ???
[Information]    value("A115_01") = ???
[Information]    The internal variable IV04_01 gets a value of 0.
[Information]    No visible content on this page, continue with page 18
[Processing]    Create page 18 in questionnaire Expra
[Content]    Create question SC06
[Information]    The following placeholders have been prepared:
%remain% = (text) 238
by SoSci Survey (306k points)
Laut Debug-Information wurden die Fragen alle nicht beantwortet (obwohl der Fragebogen nachgehakt hatte).

> [Information]    Ignore A106 failed (omit after probing)
> [Information]    Answer missing for A106
> [Information]    Ignore A107 failed (omit after probing)
> [Information]    Answer missing for A107

Ach ja, falls es sich um Dropdowns handelt (?), heißen die Variablen A106 und nicht A106_01 (etc.).
by s212490 (190 points)
Danke! Jetzt funktioniert alles. Ich musste die Variablen lediglich ohne "_01" definieren.

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

...