0 votes
in SoSci Survey (dt.) by s092700 (305 points)

Anmerkung: Die mir vorgeschlagenen verwandten Fragen zu dieser Frage sind alle von mir.

Folgender Code sorgt für Fehlermeldungen, Ziel ist im Titel zu lesen:

if (!isset($fragen)) {
 $fragen = array(
 'AK06', 'AK07',
 'AK08', 'AK09',
 'AK10', 'AK11',
 'AK12'
 );   

shuffle($fragen);
registerVariable($fragen);
}

$randoms = array(
  'AK06' => 'AK13',
  'AK07' => 'AK14',
  'AK08' => 'AK15', 
  'AK09' => 'AK16',
  'AK10' => 'AK17', 
  'AK11' => 'AK18',
  'AK12' => 'AK19'
  );
registerVariable($randoms);

//Seite 1 (entspricht Seite 8 im Fragebogen (FB))
$frage = $fragen[0];
$random = $randoms[$frage];
$items = valueList($random);  
question($frage, $items);
//bis Index [3]

//Seite 2 (entspricht Seite 9 im FB)
$frage = $fragen[0];
question($frage, valueList($randoms[$frage]));
//bis Index [6]

Bei Ausführung des Codes erscheint auf Seite 8 lediglich die Anweisung ("Lesen Sie sich ... genau durch. ..." Und in der gelben Sprechblase die Bezeichnung: AK06).

Auf Seite 9 drei Mal folgende Rückmeldungen (wahrscheinlich für Index [4,5,6]):

Für die Funktion valueList wurden nicht ausreichend Argumente angegeben, 1 Argumente sind zwingend erforderlich.
Im Befehl question() wurde keine Frage-Kennung angegeben.


Im PHP-Code trat ein Fehler auf.

Fehler im Fragebogen: Die PHP-Variable $fragen wurde verwendet, in diesem PHP-Code aber noch nicht definiert (sie enthält noch keinen Wert).

Danach:

PHP-Code

001 $frage = $fragen[4];
002 question($frage, valueList($randoms[$frage]));
003
004 $frage = $fragen[5];

Fehler im Fragebogen: Die PHP-Variable $randoms wurde verwendet, in diesem PHP-Code aber noch nicht definiert (sie enthält noch keinen Wert).

PHP-Code

001 $frage = $fragen[4];
002 question($frage, valueList($randoms[$frage]));
003
004 $frage = $fragen[5];
005 question($frage, valueList($randoms[$frage]));

Fehler im Fragebogen: Die PHP-Variable $fragen wurde verwendet, in diesem PHP-Code aber noch nicht definiert (sie enthält noch keinen Wert).

PHP-Code

001 $frage = $fragen[4];
002 question($frage, valueList($randoms[$frage]));
003
004 $frage = $fragen[5];
005 question($frage, valueList($randoms[$frage]));
006
007 $frage = $fragen[6];

Fehler im Fragebogen: Die PHP-Variable $randoms wurde verwendet, in diesem PHP-Code aber noch nicht definiert (sie enthält noch keinen Wert).

PHP-Code

002 question($frage, valueList($randoms[$frage]));
003
004 $frage = $fragen[5];
005 question($frage, valueList($randoms[$frage]));
006
007 $frage = $fragen[6];
008 question($frage, valueList($randoms[$frage]));

Fehler im Fragebogen: Die PHP-Variable $fragen wurde verwendet, in diesem PHP-Code aber noch nicht definiert (sie enthält noch keinen Wert).

PHP-Code

004 $frage = $fragen[5];
005 question($frage, valueList($randoms[$frage]));
006 
007 $frage = $fragen[6];
008 question($frage, valueList($randoms[$frage]));
009 return 'ok';

Fehler im Fragebogen: Die PHP-Variable $randoms wurde verwendet, in diesem PHP-Code aber noch nicht definiert (sie enthält noch keinen Wert).

PHP-Code

005 question($frage, valueList($randoms[$frage]));
006 
007 $frage = $fragen[6];
008 question($frage, valueList($randoms[$frage]));
009 return 'ok';
by SoSci Survey (302k points)
Gehen wir die Probleme Schritt für Schritt durch - beginnend mit der ersten Seite (Nr. 8). Bitte posten Sie die Debug-Information von Seite 8 (s. https://www.soscisurvey.de/help/doku.php/de:create:debugging) und fügen Sie dann unter question(...) - also am Ende - noch folgende Zeilen ein:

debug($fragen);
debug($frage);
debug($random);
debug($items);

Posten Sie bitte auch die Ausgabe dieser Zeilen (nur zu sehen im Debug-Modus).
by s092700 (305 points)
Zu Teil a) Ihrer Frage (wobei bei mehrmaligem Ausführen die Reihenfolge der Fragebögen zwischen AK06 - AK12 auf Seite 8 variiert):
[Verarbeitung]    Erstelle Fragebogen-Seite Nr. 8
[Inhalt]    Erstelle Frage AK08
[Inhalt]    Erstelle Frage AK06
[Inhalt]    Erstelle Frage AK07
[Inhalt]    Erstelle Frage AK10

Zu Teil b) Ihrer Frage:
[Verarbeitung]    Erstelle Fragebogen-Seite Nr. 8
[Inhalt]    Erstelle Frage AK06
[Inhalt]    Erstelle Frage AK08
[Inhalt]    Erstelle Frage AK10
[Inhalt]    Erstelle Frage AK11
debug()    Inhalt: 0AK06, 1AK08, 2AK10, 3AK11, 4AK09, 5AK07, 6AK12
debug()    Inhalt: $frage = AK11 (string)
debug()    Inhalt: Keine Daten (null)
debug()    Inhalt: Keine Daten (null)

Für Seite 9 ebenfalls durchgeführt:
[Verarbeitung]    Erstelle Fragebogen-Seite Nr. 9
debug()    Inhalt: Keine Daten (null)
debug()    Inhalt: Keine Daten (null)
debug()    Inhalt: Keine Daten (null)
debug()    Inhalt: Keine Daten (null)

2 Answers

0 votes
by s092700 (305 points)
selected by s092700
 
Best answer

Achtung: Seite 8 = Seite 13
Der komplette php-Code von Seite 8 (bin mir nicht sicher, ob ich das mit den Blöcken verstanden hab):

if (!isset($fragen)) {
  $fragen = array(
    'AK06', 'AK07',
    'AK08', 'AK09',
    'AK10', 'AK11',
    'AK12'
   );
shuffle($fragen);
registerVariable($fragen);
}
$randoms = array(
  'AK06' => 'AK13',
  'AK07' => 'AK14',
  'AK08' => 'AK15', 
  'AK09' => 'AK16',
  'AK10' => 'AK17', 
  'AK11' => 'AK18',
  'AK12' => 'AK19'
  );
$frage = $fragen[0];
$random = $randoms[$frage];
$items = valueList($random);
question($frage, $items);
$frage = $fragen[1];
$random = $randoms[$frage];
$items = valueList($random);
question($frage, $items);
$frage = $fragen[2];
$random = $randoms[$frage];
$items = valueList($random);
question($frage, $items);
$frage = $fragen[3];
$random = $randoms[$frage];
$items = valueList($random);
question($frage, $items);
    debug($fragen);
    debug($frage);
    debug($random);
    debug($items);

Beim Testen des gesamten Codes bekomme ich diese Information:

[Verarbeitung] Erstelle Fragebogen-Seite Nr. 13
[Inhalt] Erstelle Frage AK06
[Inhalt] Erstelle Frage AK12
[Inhalt] Erstelle Frage AK11
[Inhalt] Erstelle Frage AK09
debug() Inhalt: 0AK06, 1AK12, 2AK11, 3AK09, 4AK08, 5AK10, 6AK07
debug() Inhalt: $frage = AK09 (string)
debug() Inhalt: $random = AK16 (string)
debug() Inhalt: AK16x01, AK16x02, AK16x03, AK16x04, AK16x05

Nach Klicken auf Weiter erscheint:

[Verarbeitung] Erstelle Fragebogen-Seite Nr. 14
[Inhalt] Erstelle Frage AK08
[Inhalt] Erstelle Frage AK10
[Inhalt] Erstelle Frage AK07
debug() Inhalt: 0AK06, 1AK12, 2AK11, 3AK09, 4AK08, 5AK10, 6AK07
debug() Inhalt: $frage = AK07 (string)
debug() Inhalt: $random = AK14 (string)
debug() Inhalt: AK14x01, AK14x02, AK14x03, AK14x04, AK14x05, AK14x06, AK14x07

Wenn ich die Debug-Information korrekt interpretiere, haben Sie dort bereits $fragen[0] bis $fragen[3] eingebunden. Damit kann ich aber nicht mehr sehen, was nach dem ersten Aufruf in den Variablen steht.

Wenn ich also den Code reduziere und nur $fragen[0] einbinde, erscheint folgende Info (ohne, dass ich Seite 14 aufgerufen habe. Auf Seite 14 habe ich lediglich den Code für $fragen[1] + debug-Befehle (selbe wie oben), damit da etwas steht, sonst wäre es ebenfalls leer. Wusste nicht, wie Sie es brauchen):

[Verarbeitung] Erstelle Fragebogen-Seite Nr. 13
[Inhalt] Erstelle Frage AK10
debug() Inhalt: 0AK10, 1AK07, 2AK12, 3AK06, 4AK09, 5AK11, 6AK08
debug() Inhalt: $frage = AK10 (string)
debug() Inhalt: $random = AK17 (string)
debug() Inhalt: AK17x01, AK17x02, AK17x03, AK17x04, AK17x05, AK17x06, AK17x07
[Information] Die Seite zeigt keine Inhalte, automatisch weiter mit Seite Nr. 14
[Verarbeitung] Erstelle Fragebogen-Seite Nr. 14
[Inhalt] Erstelle Frage AK07
debug() Inhalt: 0AK10, 1AK07, 2AK12, 3AK06, 4AK09, 5AK11, 6AK08
debug() Inhalt: $frage = AK07 (string)
debug() Inhalt: $random = AK14 (string)
debug() Inhalt: AK14x01, AK14x02, AK14x03, AK14x04, AK14x05, AK14x06, AK14x07
[Information] Die Seite zeigt keine Inhalte, automatisch weiter mit Seite Nr. 15
[Verarbeitung] Erstelle Fragebogen-Seite Nr. 15
[Information] Die Seite zeigt keine Inhalte, automatisch weiter mit Seite Nr. 16

Unter den Hinweisen auf der Testseite werden Items mit der vollbeschrifteten Likert-Skala angezeigt. Die Fragebögen stehen in der Reihenfolge AK09 - AK12. Aus den Fragebögen werden wie vorgesehen zufällig Items gezogen.

by SoSci Survey (302k points)
> debug() Inhalt: AK16x01, AK16x02, AK16x03, AK16x04, AK16x05

In Ordnung, das meiste sieht gut aus. Aber der Inhalte von $items passt noch nicht. Kann es sein, dass Sie die Seite mit den Zufallsgeneratoren (diese hatten sie auf der Seite zuvor, wenn ich mich korrekt erinnere) noch nicht aufgerufen hatten? Ist aber auch kein Problem, das können wir ja direkt auf dieser Seite erledigen.

Ändern Sie dafür bitte ...

$frage = $fragen[0];
$random = $randoms[$frage];
$items = valueList($random);
question($frage, $items);

... wie folgt ab ...

$frage = $fragen[0];
$random = $randoms[$frage];
question($random);  // Zufallswerte ziehen
$items = array_values(valueList($random));  // Nur die Werte verwenden, nicht die Schlüssel
question($frage, $items);
by s092700 (305 points)
Wow, das funktioniert! Vielen Dank! Das macht Laune!

Tipp für Freunde der Kürze - von einem Menschen vom Fach dazu:

Seite 1 - nach "registerVariable($randoms);"
for($i=0; $i < 4; $i++){
  $frage = $fragen[$i];
  $random = $randoms[$frage];
  question($random);
  $items = array_values(valueList($random));  
  question($frage, $items);
}

Und auf Seite 2 dann die restlichen 3 der 7 Fragen:
for($i=4; $i < 7; $i++){
  $frage = $fragen[$i];
  $random = $randoms[$frage];
  question($random);
  $items = array_values(valueList($random));  
  question($frage, $items);
}
0 votes
by SoSci Survey (302k points)

In Ordnung ... bis hier sieht es gut aus:

debug() Inhalt: $frage = AK11 (string)

Aber offenbar is in der Variable $random nichts gespeichert. Könnten Sie bitte nochmal den kompletten (!) PHP-Code von Seite 8 posten. Stellen Sie auch bitte sicher, dass dieser in einem einzigen Element "PHP-Code" steht und nicht über mehrere Blöcke verteilt ist.

Bitte verwenden Sie auf Seite 8 erstmal auch nur den Code, um eine Frage anzuzeigen:

$frage = $fragen[0];
$random = $randoms[$frage];
$items = valueList($random);
question($frage, $items);

Wenn ich die Debug-Information korrekt interpretiere, haben Sie dort bereits $fragen[0] bis $fragen[3] eingebunden. Damit kann ich aber nicht mehr sehen, was nach dem ersten Aufruf in den Variablen steht.

Hatten Sie Seite 9 direkt aufgerufen oder hatten Sie auf Seite 8 auf "Weiter" geklickt? Funktionieren kann nur der Weg über "Weiter", sonst fehlt die Randomisierung.

by s092700 (305 points)
Um zitieren und Codes schön anzeigen zu lassen, habe ich weiter oben eine Antwort auf Ihren Kommentar erstellt.

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

...