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

0 votes

Guten Tag,

besteht die Möglichkeit, dass ich kostenpflichtige Hilfe in Anspruch nehme? Ich sitze seit letzten Donnerstag an dem Programm und kome nicht voran, obwohl mir das Problem klar ist. Ich habe mit meiner studentischen Gruppe nun alle Zeitfenster aufgebraucht.

Leider hat das Auslesen des Array in einzelne interne Merkmale nicht funktioniert.

Mein Code lautet:
$neue_liste = array();
$neue_liste[] = $itemliste[0]; // Kopiert Element 0
$neue_liste[] = $itemliste[1]; // Kopiert Element 1
$neue_liste[] = $itemliste[2]; // Kopiert Element 2;

html( '

'. count($itemliste).' relevante Items: '. implode(', ', $neue_liste). '

' );

if (count($neue_liste) > 0) {put('IV01_01', $neue_liste[0]);}
if (count($neue_liste) > 1) { put('IN01_03', $neue_liste[1]);}
if (count($neue_liste) > 2) { put('IN01_04', $neue_liste[2]);}

Ich erhalte zunächst die Warnung:

Warnung (Seite 9)
Die Variable AG02_01 wurde im Laufe dieses Interviews auf keiner vorhergehenden Seite abgefragt. Daher kann die Funktion value() keinen Antwort-Wert ermitteln.

Warnung (Seite 9)
Die Variable AG02_02 wurde im Laufe dieses Interviews auf keiner vorhergehenden Seite abgefragt. Daher kann die Funktion value() keinen Antwort-Wert ermitteln.

Danach erfolgt die folgende Fehlermeldung:

Fehler im Fragebogen (Seite 9)
Items in der nachfolgenden Fragen werden auf dieser Seite schon weiter oben angezeigt. Dies führt fast zwangsläufig zu Datenverlust! Falls Sie eine Frage mehrfach benötigen, legen Sie bitte eine Kopie der Frage an. Betroffen sind folgende Items: IV01_01.
Fehler im Fragebogen (Seite 9)
Der Befehl put() verweist auf die Frage IN01, die es im Projekt (noch) nicht gibt.
Fehler im Fragebogen (Seite 9)
Der Befehl put() verweist auf die Frage IN01, die es im Projekt (noch) nicht gibt.
Fehler im Fragebogen (Seite 9)
Im PHP-Code trat ein Fehler auf.

Fehler im Fragebogen: Undefined offset: 0
Zeile: 24

PHP-Code

021 html( '

'. count($itemliste).' relevante Items: '. implode(', ', $itemsAB). '

' );
022
023 $neue_liste = array();
024 $neue_liste[] = $itemliste[0];
025 $neue_liste[] = $itemliste[1];
026 $neue_liste[] = $itemliste[2];
027

Fehler im Fragebogen: Undefined offset: 1
Zeile: 25

PHP-Code

022
023 $neue_liste = array();
024 $neue_liste[] = $itemliste[0];
025 $neue_liste[] = $itemliste[1];
026 $neue_liste[] = $itemliste[2];
027
028 html( '

'. count($itemliste).' relevante Items: '. implode(', ', $neue_liste). '

' );

Fehler im Fragebogen: Undefined offset: 2
Zeile: 26

PHP-Code

023 $neue_liste = array();
024 $neue_liste[] = $itemliste[0];
025 $neue_liste[] = $itemliste[1];
026 $neue_liste[] = $itemliste[2];
027
028 html( '

'. count($itemliste).' relevante Items: '. implode(', ', $neue_liste). '

' );
029

Ich komme auch nicht dahinter, wie in PHP, die Schleife zum Anspringen der maximal drei Arbeitgeber programmiert wird.

Ich benötige daher professionelle Hilfe.

Vielen lieben Dank!

in SoSci Survey (dt.) by s094803 (160 points)
> Die Variable AG02_01 wurde im Laufe dieses Interviews auf keiner vorhergehenden Seite abgefragt. Daher kann die Funktion value() keinen Antwort-Wert ermitteln.

Schwierig zu beantworten ... in dem Code, den Sie posten, kommt AG02 nicht vor?!

Wenn Sie übrigens den Code markieren und dann auf den Knopf {} klicken, wird der Code sauber als Code formatiert. Das erhöht die Leserlichkeit enorm.

1 Answer

0 votes

Sie hatten im Fragebogen 25 Rubriken passend zu den 25 Arbeigebern angelegt. Mit einer Schleife loopToPage() kann man die 6 Fragen pro Rubrik recht elegante für max. 3 ausgewählte Arbeitgeber anzeigen lassen.

Auf der ersten Seite der Schleife kümmert man sich erstmal um die Zufallsauswahl von max. 3 Arbeitgebern.

if (!isset($selection)) {
  $selected = getItems('AG02', 'is', 2);
  shuffle($selected);
  $selection = array_slice($selected, 0, 3);
  // Noch in eine interne Variable speichern
  for ($i=0; $i<3; $i++) {
    put(id('IV01', $i+1), -1);
  }
  for ($i=0; $i<count($selection); $i++) {
    put(id('IV01', $i+1), $selection[$i]);
  }
  registerVariable($selection);
}

// Zuordnung Arbeitgeber-Nummern zu Rubriken
$sections = array(
  1 => 'AD',
  2 => 'AM',
  3 => 'BD',
  4 => 'BM',
  5 => 'BR',
  6 => 'CC',
  7 => 'DN',
  8 => 'DD',
  9 => 'DO',
  10 => 'DC',
  11 => 'DW',
  12 => 'DL',
  // Evian fehlt
  14 => 'FR',
  15 => 'GO',
  16 => 'GR',
  17 => 'HK',
  18 => 'LH',
  19 => 'MS',
  20 => 'NE',
  21 => 'PC',
  22 => 'PW',
  23 => 'PG',
  24 => 'RB',
  25 => 'UL'
);
registerVariable($sections);

Direkt darunter beginnt man die Schleife - und zwar so oft, wie man Arbeitgeber in der Variable $selection hat. Also zwischen 0 (dann greift schon vorher ein Filter, der in AG02 definiert wurde) und 3 (dafür sorgt das array_slice()).

Auf dieser Seite zeigt man die Fragen mit den Kennungen XX01, XX02 und XX03 - wobei das XX jeweils durch die Rubrik-Kennung des passenden Arbeitgebers ausgetauscht wird. Welcher Arbeitgeber (Code in AG02) zu welcher Rubrik gehört, haben wir in der Variable $sections oben definiert.

// Mittels loopToPage() kann man die ganzen Wiederholungen auf 3 Seiten erledigen
$i = loopToPage('LoopEnd', count($selection));
$sectionID = $sections[$selection[$i]];
question(id($sectionID, 1)); // Likes
question(id($sectionID, 2)); // Dislikes
question(id($sectionID, 3)); // Gesamtbewertung

Auf den Folgeseiten wird nun einfach das loopToPage() durch ein loopIndex() ersetzt, damit wir wissen, in welcher Wiederholung wir sind.

$i = loopIndex();
$sectionID = $sections[$selection[$i]];
question(id($sectionID, 4)); // Eigenschaften

Und gleich nochmal für die letzten beiden Fragen. Diese Seite hat die Seitenkennung "LoopEnd", die auf der ersten Seite in loopToPage() angegeben wurde.

$i = loopIndex();
$sectionID = $sections[$selection[$i]];
question(id($sectionID, 5)); // Medien AG
question(id($sectionID, 6)); // Die ultimative Frage (aka AV)

Die geschachtelten Array-Aufrufe $sections[$selection[$i]] muss man zwei- bis dreimal lesen, um den Sinn zu verstehen. Das ist einmal die Abfrage, welcher Arbeitgeber nun untersucht werden soll ($selection) - abhängig vom Wiederholungsindex $i. Und dann, welche Rubrik ($section) zu diesem Arbeitgeber gehört.

by SoSci Survey (92.5k points)
...