0 votes
in SoSci Survey (dt.) by s091065 (210 points)

Hallo,

ich habe folgendes Problem und wäre sehr dankbar wenn jemand mir weiterhelfen könnte, da ich selbst ein wenig feststecke...

-(1) Ich habe zum einen 4 Fragen aus je 12 Items (Fragen AO01, AO02, AO05, AO06)
- (2) zusätzlich habe ich 4 Abschnitte welche je 12 Fragen zu einem bestimmten Thema beinhalten. (Fragen P101-P112; P301-P312; N101-N112; N301-N312)

Was nun passieren soll ist Folgendes:
- Eine Frage aus (2) soll mit einem Item aus (1) komibiniert werden (dabei soll z.B. immer ein Item aus AO01 einer Frage aus P101-P112 zugewiesen werden, AO02 zu P301-312, usw.)

  • anschließend sollen diese so erstellen zweier Kombinationen noch randomisiert werden

  • es soll immer eine Frage/ ein Item pro Seite dargestellt werden.

Nun habe ich bisher folgenden PHP-Code zusammengebastelt

if (!isset($items)) {
  $itemA = getItems('AO01','all');  //AO01-AO06 sind Fragen mit jeweils 12 Items
  $itemB = getItems('AO02','all');
  $itemC = getItems('AO05','all');
  $itemD = getItems('AO06','all');
  $itemE = array(                    //die Variablen $itemE-$itemH beinhalten jeweils 12 Fragen eines spezifischen Typs 
    'N101','N102','N103','N104','N105','N106','N107','N108','N109', 'N110','N111','N112');
  $itemF = array(
    'N301','N302','N303','N304','N305','N306','N307','N308','N309', 'N310','N311','N312');
  $itemG = array(
    'P101','P102','P103','P104','P105','P106','P107','P108','P109', 'P110','P111','P112');
  $itemH = array(
    'P301','P302','P303','P304','P305','P306','P307','P308','P309', 'P310','P311','P312');

  shuffle($itemA);
  shuffle($itemB);
  shuffle($itemC);
  shuffle($itemD);
  shuffle($itemE);
  shuffle($itemF);
  shuffle($itemG);
  shuffle($itemH);


  $paare = array();                   // es sollen Paare erstellt werden aus $item EC, FD, GA, HB
  for ($i=0; $i<count(11); $i++) {     // es sollten immer jeweils 12 Paare sein, daher count(11)?

    $paare[] = array(array($itemE[$i]), array('AO05', $itemC[$i]));
    $paare[] = array(array($itemF[$i]), array('AO06', $itemD[$i]));
    $paare[] = array(array($itemG[$i]), array('AO01', $itemA[$i]));
    $paare[] = array(array($itemH[$i]), array('AO02', $itemB[$i]));
  }
  shuffle($paare);                //die Paare aus $item EC, FD, GA, HB sollen randomisiert werden


  $items = array();
  foreach ($paare as $paar) {    //die Paare aus "$paare" wieder aufteilen, damit sie einzeln angezeigt werden
    $items[] = $paar[0];
    $items[] = $paar[1];
  }
  registerVariable($items);

}
debug($items);
debug($paar);

$i = loopPage(count(96));      //  8*12 Durchgänge sollten sich aus den Variablen $itemA-$itemH ergeben, daher 96..aber das scheint auch  nicht richtig
question($items[$i][0], $items[$i][1]);

Ich fürchte da stimmt so das ein oder andere nicht. Ich schätze ein Teil hat mit den "count" Befehlen zu tun, aber das wird nicht alles sein....ich kenne mich leider noch nicht so gut mit der Materie aus.
z.B. habe ich auch folgende Fehlermeldung im Debug Modus: Fehler im Fragebogen: Undefined offset: 1 Zeile:38 question($items[$i][0], $items[$i][1]);

Falls irgendwas unklar sein sollte oder weitere Infos nötig sind, fragt gerne nach.

by SoSci Survey (327k points)
Sieht schon ganz gut aus. Was genau meinen Sie mit "es soll immer eine Frage/ ein Item pro Seite dargestellt werden."? Meinen Sie hier eine kombinierte Frage oder geht es um die Darstellung von Item und Fragen untereinander? Oder bleiben das Item aus A-D und die Frage aus E-F auf getrennten Seiten? Oder etwas ganz anderes?
by s091065 (210 points)
Es soll immer ein Bild bzw eine Frage pro Bildschirm angezeigt werden. Wenn also z.B. ein Item aus von $ItemE und ein Item von $ItemC ein Paar bilden. Soll zuerst ItemE erscheinen, einzeln, beatnwortet werden und verschwinden, dann soll ItemC als nächstes einzeln auf dem Bildschirm erscheinen usw.
Ist das so verständlich?

1 Answer

+1 vote
by SoSci Survey (327k points)
selected by s091065
 
Best answer

Die Funktino count() zählt die Elemente eine Arrays, entsprechend wird diese Zeile hier icht funktionieren:

for ($i=0; $i<count(11); $i++) {     

Ändern Sie diese wie folgt:

for ($i=0; $i<count($itemA); $i++) {

(die Arrays $ItemA bis $itemH haben ja alle dieselbe Anzahl von Elementen)

Nun wird es ein wenig anspruchsvoller. Und zwar haben Sie in einigen Fällen (A-D) Items, in anderen Fällen (E-H) ganze Fragen. Dort tragen wir als Item-Definition NULL ein.

$paare[] = array(array($itemE[$i], null), array('AO05', $itemC[$i]));
$paare[] = array(array($itemF[$i], null), array('AO06', $itemD[$i]));
$paare[] = array(array($itemG[$i], null), array('AO01', $itemA[$i]));
$paare[] = array(array($itemH[$i], null), array('AO02', $itemB[$i]));

Somit haben wir für jedes Element zwei Teile (Frage + Item-Liste), und nicht einmal eines, einmal zwei.

Wenn Sie weniger Risiko beim zählen eingehen möchten, könnten Sie

$i = loopPage(96);

(das count() muss wieder weg!) noch ersetzen durch

$i = loopPage(count($items));

Das muss aber nicht sein. Und dann sollte es schon ein Stückchen besser laufen. Wenn noch nicht alles klappt, posten Sie bitte die neue Fehlermeldung und/oder die Debug-Information der Seite.

by s091065 (210 points)
Hat super geklappt, läuft jetzt wie es soll!
Vielen lieben Dank für die gute Hilfe!

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

...