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

Vielen Dank für die schnelle und hilfreiche Antwort! Ich habe mich mal am Code versucht und folgendes kam dabei heraus:

// Liste der FragenTest erstellen und mischen
if (!isset($fragenTest)) {
  $fragenTest = array(  // Liste der Frage-Kennungen
'P101',
'P102',
'P103',
'P104',
'P105',
'P106',
'P107',
'P108',
'P109',
'P110',
'P111',
'P112',
'P113',
'P114',
'P115',
'P116',
'P117',
'P118',
'P119',
'P120'
);

  // Die Liste zufällig mischen
  shuffle($fragenTest);
  // Die Rotation für eine eventuelle Wiederholung der Seite zwischenspeichern
  registerVariable($fragenTest);

}

// Die Liste in Teillisten à 5 Fragen teilen
  $fragenTest = array_chunk($fragenTest, 4);

// Liste der FragenControl erstellen 
if (!isset($fragenControl)) {
  $fragenControl = array(  // Liste der Frage-Kennungen
'K101',
'K102',
'K103'
);

// Die Liste zufällig mischen
  shuffle($fragenControl);
  // Die Rotation für eine eventuelle Wiederholung der Seite zwischenspeichern
  registerVariable($fragenControl);
}

// Die Liste in Teillisten à 1 Frage teilen
  $fragenControl = array_chunk($fragenControl, 3);

// Bilder und Kontrollbilder zusammenfügen
for ($fragen = 0; $fragen < 24; $fragen = ++) {
    $fragen = array_merge($fragenTest, $fragenControl);
}

// Fragen anzeigen
$i = loopPage(count($fragen));
question($fragen[$i]);

Insbesondere was die FOR-Schleife betrifft, bin ich mir damit unsicher und erhalte auch die Fehlermeldung "Fehler im Fragebogen: Befehl oder String (Text) nicht abgeschlossen". Den entsprechenden Fehler konnte ich als absoluter PHP-Anfänger leider nicht ausfindig machen. Möglicherweise könnten Sie mir auch hier weiterhelfen?

Liebe Grüße

related to an answer for: Seiten von Rotation ausnehmen

1 Answer

0 votes
by SoSci Survey (305k points)

Schon ganz gut, aber in folgender Zeile gibt es Probleme:

$fragenTest = array_chunk($fragenTest, 4);

Hier überschreiben Sie Ihre Variable $fragenTest und spätestens bei der Wiederholung funktioniert es dann nicht mehr. Packen Sie lieber den kompletten oberen Teil (also alles vor dem loopPage() in ein if (isset(...)). Sie benötigen dann eigentlich nur die Variable $fragen.

Insbesondere was die FOR-Schleife betrifft, bin ich mir damit unsicher und erhalte auch die Fehlermeldung "Fehler im Fragebogen: Befehl oder String (Text) nicht abgeschlossen".

Auf welche Zeile verweist denn die Fehlermeldung? Ich würde vermuten, PHP beschwert sich über das Gleichzeitzecihen vor dem ++. Korrekt wäre:

for ($fragen = 0; $fragen < 24; $fragen++) {

Aber zum Zusammenbauen des Arrays müsst der Code ohnehin ein klein wenig anders aussehen. Und überhaupt ... soll die Reihenfolge der Kontrollfragen überhaupt gemischt werden?

// Liste der FragenTest erstellen und mischen
if (!isset($fragen)) {
  $fragenTest = array(  // Liste der Frage-Kennungen
    'P101',
    'P102',
    'P103',
    /// ...
    'P120'
  );

  // Die Liste zufällig mischen
  shuffle($fragenTest);

  // Die Liste in Teillisten à 5 Fragen teilen
  $fragenBloecke = array_chunk($fragenTest, 5);

  // Liste der FragenControl erstellen 
  $fragenControl = array(
    'K101',
    'K102',
    'K103'
  );

  // Die Liste zufällig mischen (?)
  shuffle($fragenControl);

  // Bilder und Kontrollbilder zusammenfügen
  $fragen = [];
  for ($i=0; $i < 3; $i++) {
    $fragen = array_merge($fragen, $fragenBloecke[$i], [$fragenControl[$i]]);
  }
  // Ein block fehlt noch
  $fragen = array_merge($fragen, $fragenBloecke[3]);
  registerVariable($fragen);
}

// Fragen anzeigen
$i = loopPage(count($fragen));
question($fragen[$i]);
by s134049 (120 points)
Vielen, vielen Dank für die Hilfe! Jetzt läuft alles.

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

...