0 votes
in SoSci Survey (dt.) by s049805 (660 points)
edited by SoSci Survey
$values = valueList('EN01');
arsort($values);
 
$order = array_keys($values);
$threshold = $values[$order[2]];
$greater = array();
$equal = array();
foreach ($values as $varID => $value) {
  $itemID = (int)ltrim(substr($varID, 4), "0");
  if ($value > $threshold) {
    $greater[] = $varID;
  } elseif ($value == $threshold) {
    $equal[] = $varID;
  }
}
 
shuffle($equal);
$needed = 3 - count($greater);
$items = array_merge($greater, array_slice($equal, 0, $needed));
 
question('EN11', $items);

Das ist Derzeit der Code - eig. 1:1 aus der Anleitung übernommen, die ja eigentlich "maßgeschneidert" auf mein Problem war. Da gibt mir der Fragebogen allerdings den Fehler aus: "Für die Frage EN11 wurde kein Item mit der Kennung 0 gefunden" (und zwar 3x taucht der Fehler auf der Debug Seite auf - vermutlich wegen dem Versuch die Top 3 abzurufen...)

Haben Sie eine Idee wo der Haken hängt?
Könnte es daran liegen, dass vor den Fragen EN01 bereits ein Filter liegt, der auch schon diese Items filtert oder sollte das unabhängig voneinander funktionieren?

Liebe Grüße und Danke!

by SoSci Survey (302k points)
Könnten Sie vor der letzten Zeile question() bitte einmal folgenden Code einfügen und berichten, was die Debug-Information anzeigt?

debug($greater);
debug($equal);
debug($items);

Danke.
by s049805 (660 points)
Debug-Information für $greater:
0EN01_08, 1EN01_03
Hinweis (Seite 14)
Debug-Information für $equal:
0EN01_01
Hinweis (Seite 14)
Debug-Information für $items:
0EN01_08, 1EN01_03, 2EN01_01
Warnung (Seite 14)
Für die Frage EN11 wurde kein Item mit der Kennung 0 gefunden
Warnung (Seite 14)
Für die Frage EN11 wurde kein Item mit der Kennung 0 gefunden
Warnung (Seite 14)
Für die Frage EN11 wurde kein Item mit der Kennung 0 gefunden

1 Answer

0 votes
by SoSci Survey (302k points)

Danke für die Debug-Information. In der Tat enthielt die Anleitung da noch einen Fehler. Und zwar war es oben in der Anleitung richtig - am Ende im "Gesamtcode" aber falsch (nun korrigiert).

Es muss beim Sammeln der Werte $itemID statt $varID heißen:

  if ($value > $threshold) {
    $greater[] = $itemID;
  } elseif ($value == $threshold) {
    $equal[] = $itemID;
  }
by s049805 (660 points)
edited by s049805
Funktioniert leider immer noch nicht... ich erstelle mal eine neue Frage...
asked Jun 12, 2019 in SoSci Survey (dt.) by s049805 (660 points) PHP Code klappt nicht - V2.0

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

...