0 votes
in SoSci Survey (dt.) by s154258 (120 points)
edited by SoSci Survey

Hallo, ich versuche seit mehreren Tagen einen PHP-Code zu erstellen, um die Items aus den insgesamt drei Fragen, in einer bestimmten Reihenfolge zu mischen und auf verschiedenen Seiten anzuzeigen. Das Problem ist, dass weder die Fragen gemischt werden und immer folgende Fehlermeldung aufkommt:

Im PHP-Code trat ein Fehler auf.
Fehler im Fragebogen: Befehl oder String (Text) nicht abgeschlossen

Hinter einem Befehl wie z.B. question() steht kein Strichpunkt oder
ein String (Text in Anführungszeichen) ist nicht abgeschlossen oder
im String selbst kommt ein Anführungszeichen vor, z.B. html('Mach's besser!'); – in diesem Fall stellen Sie dem Anführungszeichen einen Backslash () voran.
Möglicherweise stimmen die öffnenenden und schließenden geschweiften Klammern für Anweisungsblöcke auch nicht überein.
PHP-Code

035 foreach ($questions as $qstID) {
036   $qstItems = getItems($qstID, 'all');
037   foreach ($qstItems as $itemID) {
038     $items[ 
039            ['LST', 1],
040 ['AES', 1],
041 ['EOE', 1],
042 ['EOE', 2],

Bisher habe ich mithilfe der Internetseite https://www.soscisurvey.de/help/doku.php/de:create:rotation-itemmix
folgende PHP-funktion erstellt:

Kompletter Befehl mit ‘‘

if (isset($itemBlocks)) {
$questions = ['LST', 'AES', 'EOE'];
 // Liste mit allen Items erstellen
$items = [  
    ['LST', 1],
['AES', 1],
['EOE', 1],
['EOE', 2],
['LST', 2],
['EOE', 3],
['LST', 3],
['AES', 2],
['LST', 4],
['LST', 5],
['AES', 3],
['LST', 6],
['LST', 7],
['LST', 8],
['EOE', 4],
['EOE', 5],
['EOE', 6],
['LST', 9],
['EOE', 7],
['AES', 4],
['EOE', 8],
['EOE', 9],
['LST', 10],
['EOE', 10],
['LST', 11],
['AES', 5]
];

foreach ($questions as $qstID) {
  $qstItems = getItems($qstID, ‘all‘);
  foreach ($qstItems as $itemID) {
    $items[ 
           ['LST', 1],
['AES', 1],
['EOE', 1],
['EOE', 2],
['LST', 2],
['EOE', 3],
['LST', 3],
['AES', 2],
['LST', 4],
['LST', 5],
['AES', 3],
['LST', 6],
['LST', 7],
['LST', 8],
['EOE', 4],
['EOE', 5],
['EOE', 6],
['LST', 9],
['EOE', 7],
['AES', 4],
['EOE', 8],
['EOE', 9],
['LST', 10],
['EOE', 10],
['LST', 11],
['AES', 5]
] = [$qstID, $itemID];
  }
}
// Liste mischen
  shuffle($items);
  registerVariable($items);
}

  // Fragetext anzeigen
question('HS03', 'spacing=0', 'show-items=no');

// Items anzeigen
foreach ($items as $item) {
  question($item[0], [$item[1]], [$item[1]], [$item[2]], [$item[2]], [$item[3]], [$item[3]], [$item[2]], [$item[4]], [$item[5]], [$item[3]], [$item[6]], [$item[7]], [$item[8]], [$item[4]], [$item[5]], [$item[6]], [$item[9]], [$item[7]], [$item[4]], [$item[8]], [$item[9]], [$item[10]], [$item[10]], [$item[11]], [$item[05]], 'spacing=0', 'show-title=no', 'show-explanation=no');
}


if (isset($itemBlocks)) {
  $questions = ['LST', 'AES', 'EOE'];
  // Liste mit allen Items erstellen
  $items = [
         ['LST', 1],
['AES', 1],
['EOE', 1],
['EOE', 2],
['LST', 2],
['EOE', 3],
['LST', 3],
['AES', 2],
['LST', 4],
['LST', 5],
['AES', 3],
['LST', 6],
['LST', 7],
['LST', 8],
['EOE', 4],
['EOE', 5],
['EOE', 6],
['LST', 9],
['EOE', 7],
['AES', 4],
['EOE', 8],
['EOE', 9],
['LST', 10],
['EOE', 10],
['LST', 11],
['AES', 5]
];
  foreach ($questions as $qstID) {
    $qstItems = getItems($qstID, 'all');
    foreach ($qstItem as $itemID) {
      $items[
           ['LST', 1],
['AES', 1],
['EOE', 1],
['EOE', 2],
['LST', 2],
['EOE', 3],
['LST', 3],
['AES', 2],
['LST', 4],
['LST', 5],
['AES', 3],
['LST', 6],
['LST', 7],
['LST', 8],
['EOE', 4],
['EOE', 5],
['EOE', 6],
['LST', 9],
['EOE', 7],
['AES', 4],
['EOE', 8],
['EOE', 9],
['LST', 10],
['EOE', 10],
['LST', 11],
['AES', 5]
] = [$qstID, $itemID];
    }
  }
  // Liste mischen
  shuffle($items);

// Liste aufteilen
  $itemBlocks = array_chunk($items, 12);
  registerVariable($itemBlocks);
}
 
// Auf mehreren Seiten präsentieren
$i = loopPage(count($itemBlocks));
 
// Fragetext anzeigen
question('HS03', 'spacing=0', 'show-items=no');
 
// Items anzeigen
$items = $itemBlocks[$i];
foreach ($items as $item) {
  question ($item[0], [$item[1]], [$item[1]], [$item[2]], [$item[2]], [$item[3]], [$item[3]], [$item[2]], [$item[4]], [$item[5]], [$item[3]], [$item[6]], [$item[7]], [$item[8]], [$item[4]], [$item[5]], [$item[6]], [$item[9]], [$item[7]], [$item[4]], [$item[8]], [$item[9]], [$item[10]], [$item[10]], [$item[11]], [$item[05]], 'spacing=0', 'show-title=no', 'show-explanation=no');
}

Ich hoffe Sie können mir weiter helfen, da ich nicht viel vom Programmieren verstehe.

1 Answer

0 votes
by SoSci Survey (330k points)

Sie schreiben hinter dem foreach wie folgt: $items[

$items[ 
    ['LST', 1],
    ['AES', 1],

Weiter oben im Code haben Sie es korrekt mit Gleichheitszeichen (=Setzen der Variable) geschrieben:

$items = [  
    ['LST', 1],
    ['AES', 1],

Und weiter unten haben Sie noch

    ['AES', 5]
] = [$qstID, $itemID];

Das ist nicht korrekt - aber was Sie da machen wollten, sehe ich leider 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

...