0 votes
in Datenauswertung by s149335 (355 points)

Hallo zusammen,

seit dem Update werden mehrere Fehler geworfen.
Der Auftraggeber hat mir mitgeteilt, dass von einem MA von SoSci Survey mitgeteilt wurde, dass "GetItems" verwendet werden soll.
Das geht aber nicht, weil hier mehrere Interview-Objekte ausgelesen werden.
Habe im Code mal die Alternativen mit Kommentaren markiert.
Am Einfachsten wäre die Verwendung von Try-Catch oder eben die Möglichkeit, dass überprüft werden kann, ob das Feld exisitert, ohne einen Fehler zu werfen.

function concatItem($top, $left, $sRef, $base, $sonstigesKey){
$baseTop = 0;
$concatString = "";
for ($i = 0; $i<30; $i++){
// Ursprünglicher Code:
$itemText = getItemtext($base,$i);
$itemText = $i;

// Fehler seit Update:
// Die Variable <strong>UV022</strong> gibt es in diesem Projekt nicht (siehe Variablen-Übersicht). Daher kann kein Antwort-Wert dafür ermittelt werden.
    
    
// Variante 1
// itemText anders erfragen
//
// $itemText = value($base.$i, 'free');  // Auswahl des Befragen als Text
// Die Funktion <strong>value()</strong> ist nur verfügbar, wenn ein einzelnes Interview als Datenbasis verfügbar ist.

// Variante 2
// Loop umschreiben
// 
// foreach (getItems($base, 'all') as $itemText){
// Fehler
// Die Funktion <strong>getItems()</strong> ist nur verfügbar, wenn ein einzelnes Interview als Datenbasis verfügbar ist.

// Variante 3:
// Array übergeben (ich weiß aber nicht im Vorfeld, wie viele Objekte ich abfragen muss. Das möchten wir nicht)
// 
// foreach ([2,4] as $i) { 
// ...
// }

$itemText = value($base.$i, 'free');  // Auswahl des Befragen als Text

    if (!empty($itemText)){
       if ($i>0) {
           $concatString .="\n";
       }
        $baseKey = $base.'_'.str_pad($i, 2, '0', STR_PAD_LEFT);
        if (isset($sRef[$baseKey])){
            $value = $sRef[$baseKey];
            if ($value==2){
                $concatString .= "■ ";
            } else {
                $concatString .= "□ ";
            }
        }
        $concatString .= $itemText ."\n";
    } 
}
if (isset($sRef[$sonstigesKey])){
       $concatString .="\n";
     $concatString .= $sRef[$sonstigesKey];
}

 add($concatString,
     ['top' =>$top+10*$baseTop,'left' => $left,'width' => 70,
     'size' => 10,]);
     $baseTop++;

}

1 Answer

0 votes
by SoSci Survey (312k points)

Ich erinnere mich vage an die Frage. Es ging darum, dass value() einen Fehler warf, weil getItemtext() nach Items fragte, die gar nicht existierten - richtig?

Die Überlegung war, dass Sie nicht pauschal nach den Nummer 1-30 suchen, sondern mittels getItems() einfachnur die verwenden, die es gibt, also in Ihrem Fall:

function concatItem($top, $left, $sRef, $base, $sonstigesKey){
    $baseTop = 0;
    $concatString = "";
    $items = getItems($base, 'all');
    foreach ($items as $it) {
        $itemText = getItemtext($base,$i);

Hilft das weiter?

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

...