0 votes
in SoSci Survey (dt.) by s169511 (135 points)

Lieber Support,

ich habe versucht die Multi-Level Struktur umzusetzen aber es kommt aktuell immer der Fehler, dass Index i nicht da wäre.

Allgemein:
Ich möchte, dass 20 Seiten in zufälliger Reihenfolge dargestellt werden, auf denen jeweils 1 unterschiedliches Bild, 2 Texte und der Befehl zum Abspeichern der interne Variablen zur Codierung des Bildes sind. Auf diesen 20 Seiten wird immer die gleiche Frage [RA01] abgefragt. Für die Randomisierung der Seiten habe ich die Zufallsvariable [ZU01] erstellt.
Es gibt aber noch eine weitere Randomisierung [ZU02], weil in drei Bedingungen unterschiedliche Ausgangstexte beschrieben werden. Diese Zuweisung findet schon zuvor im Fragebogen statt.

Inhalt einer Seite Also alle 20 Seiten unterscheiden sich und auf einer würde dann beispielsweise stehen:

  1. Das Aufrufen des Textes je nach Bedingung

    if (value('ZU02') == 1) { text('MA01'); } elseif (value('ZU02') == 2) { text('MA02'); }elseif (value('ZU02') == 3) { text('MA03');}

  2. Bild
  3. Text [TE24]
  4. PHP Code je nach Bild

    put('IV01_01', 3); put('IV01_02', 5); put('IV02_01', 2); put('IV02_02', 2); put('IV03_01', 2); put('IV03_02', 1); put('IV04_01', 2); put('IV04_02', 1); put('IV05_01', 3); put('IV05_02', 1); put('IV06_01', 3); put('IV06_02', 1); put('IV07_01', 4); put('IV07_02', 1); put('IV08_01', 02);

Ohne Multi-Level Struktur funktionieren beide Randomisierungen und die Internen Variablen super. Mit leider überhaupt nicht.

Für die Multi-Level Struktur habe ich bisher wie in der Anleitung den Top und Sub Fragebogen erstellt.
Im Top Fragebogen steht auf der entsprechenden Seite zum Starten der Loop:

$codes = array_values(valueList('ZU01'));
$i = loopToPage('loopEnd', count($codes));
multiLevelDown('Sub', $codes[$i]);
// Festlegen, dass die Zettel nicht automatisch abgelegt werden
randomUse('ZU01', array());

und zum Beenden der loop auf der nächsten Seite:

$data = multiLevelResponse();
// Hat der Teilnehmer die Frage beantwortet (Code 1)?
if ($data == 1) {
$i = loopIndex(); // Wiederholung 0, 1, ...
$num = $i + 1; // Nummer des gezogenen Zettels 1, 2, ...
randomUse('ZU01', array($num));
}

Im Sub Fragebogen steht:

// Item-ID vom übergeordneten Fragebogen entgegennehmen
$itemID = multiLevelData();
// Weiter Daten aus dem Datenbank für Inhalte abrufen und z.B. ein Bild anzeigen
$data = dbGet('i'.$itemID);
// ID in eine interne Variable speichern (wichtig)
put('IN01_01', $itemID);
// Auswahlfrage, ob man das Item bewerten will
question('RA01');

Und eine Seite später

multiLevelReturn(1);

Also habe ich quasi zwei Fragen:

  1. Wie bekomme ich den Inhalt der 20 Seiten in die Loop neben der Frage
  2. Wo ist mein Fehler in der Loop? Liegt es in meiner Internen Variable?

Ich bedanke mich jetzt schon al für die Hilfe, weil ich weiß wirklich nicht mehr weiter!

by SoSci Survey (308k points)
ad 1) gar nicht, die Multi-Level-Struktur funktioniert nicht über Seiten, sondern über einen separaten Fragebogen, dem man via multiLevelDown() in jedem Durchganz unterschiedliche Daten mitteilt, damit er weiß, was er anzeigen soll.

Als erste müssen Sie die 20 Sets also z.B. in einem Array definieren. Oder Sie hinterlegen die Parameter als Komma-getrennte Liste im Zufallsgenerator.

ad 2) Gegenfrage: Was genau besagt die Fehlermeldung genau und auf welchen PHP-Code in welchem Fragebogen bezieht sie sich?
by s169511 (135 points)
1) Ich habe leider keine Ahnung, wie und wo ich so ein Array definiere. Da bin ich jetzt komplett lost. Also ich müsste jetzt bei den Parametern, den Code für der Text, das Bild, den Text und die Dazugehörigen internen Variablen schreiben? Wie würde ich es hinbekommen, dass die richtigen Internen Variablen zu dem dazugehörigen Bild gespeichert werden?

2)hier kommt bei der Loop: Für den Schlüssel i liegen in der Datenbank keine Daten vor.
by SoSci Survey (308k points)
ad 1) https://www.soscisurvey.de/help/doku.php/de:create:array

ad 2) das bezieht sich wohl auf diese Zeile:

$data = dbGet('i'.$itemID);

Das hat mit $i nichts zu tun. Aber scheinbar haben Sie in der "Datenbank für Inhalte" (https://www.soscisurvey.de/help/doku.php/de:create:databank) noch nichts Passendes hinterlegt.

Wenn Sie mit einem Array arbeiten, brauchen Sie die Datenbank für Inhalte aber womöglich auch gar nicht.

Ich schalge vor, dass Sie mal ganz einfach anfangen. Und zwar bei der Anzeige des Sets. Sie schreiben zu Ihren Sets:

> jeweils 1 unterschiedliches Bild, 2 Texte

Das bedeutet, Ihr untergeordneter Fragebogen brauch drei Informationen: Den Dateinamen des Bildes, das er anzeigen soll und 2 Textkennungen.

Starten Sie mal mit folgendem PHP-Code und schreiben Sie weiter, sodass der PHP-Code das Bild und die 2 Texte anzeigt.

$bild = 'dateiname.png';
$text1 = 'TX01';
$text2 = 'TX02';

Wenn das funktioniert, können Sie noch überlegen, was Sie gerne in den internen Variablen gespeichert hätten ... hängt das vom Bild ab oder von den beiden Texten? Oder von allen drei Elementen?
by s169511 (135 points)
Hey:) Also es wird nicht mal, wenn ich nur das schreibe irgendwas angezeigt...
$bild = '1.png'; //Das ist tatsächlich der Name des ersten Bildes
$text1 = 'TE24';

Text 2 ist auch an eine Variable vom Top-Fragebogen geknüpft.
> if (value('ZU02') == 1) {
        text('MA01');
    } elseif (value('ZU02') == 2) {
        text('MA02');
    } elseif (value('ZU02') == 3) {
        text('MA03');
    }

Ich hatte jetzt mal sowas überlegt, aber ganz ehrlich, ich habe keine Ahnung von PHP. Ich weiß, dass es komplett falsch ist, aber irgendwas in die Richtung muss es doch geben:

// Anlegen der Arrays quasi als Seitenplatzhalter
> $a = array('1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18','19','20');
   
//Text 1 gekoppelt an die Antwort aus dem Top Fragebogen
if (value('ZU02') == 1) {
        text('MA01');
    } elseif (value('ZU02') == 2) {
        text('MA02');
    } elseif (value('ZU02') == 3) {
        text('MA03');
    }

//Bild je nach Array
if ($a == 1) {'1.png'};
    elseif ($a == 2) {'2.png'};
    elseif ($a == 3) {'3.png'};
    elseif ($a == 4) {'4.png'};
    elseif ($a == 5) {'5.png'};
    elseif ($a == 6) {'6.png'};
    elseif ($a == 7) {'7.png'};
    elseif ($a == 8) {'8.png'};
    elseif ($a == 9) {'9.png'};
    elseif ($a == 10) {'10.png'};
    elseif ($a == 11) {'11.png'};
    elseif ($a == 12) {'No12.png'};
    elseif ($a == 13) {'13.png'};
    elseif ($a == 14) {'14.png'};
    elseif ($a == 15) {'15.png'};
    elseif ($a == 16) {'16.png'};
    elseif ($a == 17) {'17.png'};
    elseif ($a == 18) {'18.png'};
    elseif ($a == 19) {'19.png'};
    elseif ($a == 20) {'20.png'};

//Text 2 bei allen Seiten
$text2 = 'TE24';

Die internen Variablen hängen nur von dem Bild ab, das gezeigt wird. Die habe ich jetzt erstmal ausgeklammert.
by SoSci Survey (308k points)
> Also es wird nicht mal, wenn ich nur das schreibe irgendwas angezeigt...

Richtig, denn hier weisen Sie nur Texte in PHP-Variablen zu - das kann also nichts anzeigen.

Für die Anzeige brauchen Sie html(), question() und/oder show(). Bitte lesen Sie dazu einmal die Anleitung zur Randomisierung mit PHP-Code, ich denke, dann wird es ein wenig klarer.

>  ich habe keine Ahnung von PHP

Dann haben Sie jetzt die phantastische Gelegenheit, das zu ändern (also ... nicht, dass Sie bei Ihrem gewünschten Design drum herum kommen würden). Starten sie hier https://www.soscisurvey.de/de/screencast mit dem Video zu PHP-Code.
by s169511 (135 points)
Ok aktuell habe ich das auf der Subfragebogen Seite: ich weiß noch nicht was ich mit diesem Array anfangen soll und der Multilevelstruktur:


// Item-ID vom übergeordneten Fragebogen entgegennehmen
$itemID = multiLevelData();

//Die 20 Seiten anlegen -->* Brauch ich das überhaupt noch?
$a = array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20);

//Text 1 Gekoppelt an die Antwort aus dem Top Fragebogen --> Hier kommt ein Error im Code, aber ich habe den einszueins aus der stelle im Urspruchsfragebogen herauskopiert in dem er funktioniert.

if (value('ZU02') == 1) {
  text('MA01');
} elseif (value('ZU02') == 2) {
  text('MA02');
}
elseif (value('ZU02') == 3) {
  text('MA03');
}

$zahl = value('ZU01'); // Mein Zufallsgenerator für die Seiten
//Bild je nach Array //-> Bild einzeln funktioniert, in diesem Code kommt Error
if ($zahl == 1) {html('<img src="1.png"style="width: 100%">')};
    elseif ($zahl == 2) {html('<img src="2.png"style="width: 100%">')};
    elseif ($zahl == 3) {html('<img src="3.png"style="width: 100%">')};
    elseif ($zahl == 4) {html('<img src="4.png"style="width: 100%">')};
    elseif ($zahl == 5) {html('<img src="5.png"style="width: 100%">')};
    elseif ($zahl == 6) {html('<img src="6.png"style="width: 100%">')};
    elseif ($zahl == 7) {html('<img src="7.png"style="width: 100%">')};
    elseif ($zahl == 8) {html('<img src="8.png"style="width: 100%">')};
    elseif ($zahl == 9) {html('<img src="9.png"style="width: 100%">')};
    elseif ($zahl == 10) {html('<img src="10.png"style="width: 100%">')};
    elseif ($zahl == 11) {html('<img src="11.png"style="width: 100%">')};
    elseif ($zahl == 12) {html('<img src="No12.png"style="width: 100%">')};
    elseif ($zahl == 13) {html('<img src="13.png"style="width: 100%">')};
    elseif ($zahl == 14) {html('<img src="14.png"style="width: 100%">')};
    elseif ($zahl == 15) {html('<img src="15.png"style="width: 100%">')};
    elseif ($zahl == 16) {html('<img src="16.png"style="width: 100%">')};
    elseif ($zahl == 17) {html('<img src="17.png"style="width: 100%">')};
    elseif ($zahl == 18) {html('<img src="18.png"style="width: 100%">')};
    elseif ($zahl == 19) {html('<img src="19.png"style="width: 100%">')};
    elseif ($zahl == 20) {html('<img src="20.png"style="width: 100%">')};

// Auswahlfrage, ob man das Item bewerten will
question('RA01');

//Text 2 bei allen Seiten
$text2 = show ('TE24');

$data = dbGet('i'.$itemID);

// ID in eine interne Variable speichern (wichtig)
put('IN01_01', $itemID);
by SoSci Survey (308k points)
> //Die 20 Seiten anlegen -->* Brauch ich das überhaupt noch?
> $a = array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20);

Nein, das brauchen Sie nicht mehr. Wenn der Sub-Fragebogen startet, dann wurde bereits im Hauptfragebogen ausgewählt, welches Set er anzeigen soll. Diese Information bekommt er also info über multiLevelData() übergeben.

Das hier ist als Beispiel (!) gedacht, welche Daten er bekommen könnte:

$bild = 'dateiname.png';
$text1 = 'TX01';
$text2 = 'TX02';

Meine Empfehlung wäre also, dass wir erst einmal annehmen, dass der Subfragebogen alle Daten für ein Set erhält - und uns darauf konzentrieren, dass er die Seite passend anzeigt.

Wenn das funktioniert, können wir uns um den Hauptfragebogen kümmern und darum, dass er dem Subfragebogen ein passendes Set an die Hand gibt.

> if ($zahl == 1) {html('<img src="1.png"style="width: 100%">')};
>    elseif ($zahl == 2) {html('<img src="2.png"style="width: 100%">')};

Kann man machen, ist aber ziemlich kompliziert. Gehen Sie doch mal davon aus, dass wir folgendes gegeben haben:

$bild = '1.png';

Dann können Sie den ganzen IF-Block wie folgt auf eine Zeile vereinfachen:

html('<img src="'.$bild.'"style="width: 100%">');
by s169511 (135 points)
edited by s169511
Ah also definiere ich in dem Top Fragebogen alles und da beziehe ich mich nur drauf?

Also nur das:
// Item-ID vom übergeordneten Fragebogen entgegennehmen
$itemID = multiLevelData();
//Text 1 Gekoppelt an die Antwort aus dem Top Fragebogen
show('text1');
html('<img src="'.$bild.'"style="width: 100%">');
// Auswahlfrage, ob man das Item bewerten will
question('RA01');
//Text 2 bei allen Seiten
show ('$text2');
$data = dbGet('i'.$itemID);
// ID in eine interne Variable speichern (wichtig)
put('IN01_01', $itemID);


Ist dann jetzt der Sub Fragebogen fertig?

Ich glaube mir würde es helfen, wenn Sie mir schreiben, was ich in den PHP code schreiben muss. Ich bin gerade etwas am verzweifeln und habe auch Deadlines, die ich einhalten muss und das Gefühl, dass Ihre Tipps mich nur mini Schritte voran bringen und ich dieses Problem sich noch ewig ziehen wird...
by SoSci Survey (308k points)
> Ich glaube mir würde es helfen, wenn Sie mir schreiben, was ich in den PHP code schreiben muss.

Woher soll ich das wissen ;) Sie wissen, wie Ihre Textbausteine heißen und was Sie sonst an Infos an den untergeordneten Fragebogen übergeben müssen. Das haben Sie ja alles vorab schon definiert, das kenne ich nicht.

In multiLevelData() werden sie mehrere Informationen als Array übergeben. Bis wir das haben, würde ich

$itemID = multiLevelData();

erstmal weglassen und stattdessen direkt die Variablen mit Inhalt zum Testen definieren, z.B.

$text1 = 'AB01';
$text2 = 'AB03';
u.s.w.

Und die Variablen würden Sie dann in show() etc. verwenden, z.B.

show($text1);

Bitte beachten Sie hier, dass der Variablenname nicht in Anführungszeichen stehen darf.

Was genau Sie in IN01_01 speichern möchten, weiß ich auch nicht. Aber vermutlich einen Code für die linke und rechte Auswahloption? Oder Codes für die Eigenschaften der Auswahloptionen?
by s169511 (135 points)
Hello hello,

also ich bin jetzt ein bisschen weiter gekommen (glaube ich), vor allem mit den Speichern der Variablen. Leider funktioniert noch nicht die Datenübertragung zwischen den Fragebögen...

Mein Top Fragebogen sieht jetzt so aus:

$codes = array_values(valueList('ZU03'));
$i = loopToPage('loopEnd', count($codes));

// Festlegen, dass die Zettel nicht automatisch abgelegt werden
randomUse('ZU03', array());

//Text1 Wert -> der wert meiner Anderen Zufallsvariable zum Zeigen des einen Textes
$text1= value('ZU02');
registerVariable($text1);


//Bildwählen -> ich habe Jetzt die Bilder einfach als Text in den Fragekatalog eingefügt.

if (!isset($bild)) {
    $bild = array('CS01','CS02','CS03','CS04', 'CS05', 'CS06', 'CS07', 'CS08', 'CS09', 'CS10', 'CS11', 'CS12', 'CS13', 'CS14', 'CS15', 'CS16', 'CS17', 'CS18', 'CS19', 'CS20' );
    registerVariable($bild);
    }

//Variablen an anderen Fragebogenschicken
multiLevelDown('Sub', $codes[$i]);
multiLevelDown('Sub', $text1);
multiLevelDown('Sub', $bild[$i]);


In meinem SubFragebogen steht jetzt:

//Variablen holen
$itemID = multiLevelData();
// Weiter Daten aus dem Datenbank für Inhalte abrufen und z.B. ein Bild anzeigen
$data = dbGet('i'.$codes);
$random = $data[0];
$mybild = dbGet('i'.$bild);
$text1 = dbGet($text1);


//Text1 anzeigen
if ($text1 == 1) {
  text('MA01');
    } elseif ($text1 == 2) {
  text('MA02');
}
elseif ($text1 == 3) {
  text('MA03');
}

//Bildanzeigen
question($mybild);


// Auswahlfrage,
question('RA01');

//Text2 anzeigen
question('TE24');

// ID in eine interne Variable speichern (wichtig)
put('IN01_01', $itemID);
by SoSci Survey (308k points)
Sie haben da im Moment drei Aufrufe von multiLevelDown() - nur der erste davon wird ausgeführt:

//Variablen an anderen Fragebogenschicken
multiLevelDown('Sub', $codes[$i]);
multiLevelDown('Sub', $text1);
multiLevelDown('Sub', $bild[$i]);

Ich rate mal, dass Sie die drei Werte übermitteln möchten. Machen SIe das wie folgt:

//Variablen an anderen Fragebogenschicken
multiLevelDown('Sub', [
  'code' => $codes[$i],
  'text' => $text1,
  'bild' => $bild[$i]
]);

Und dann im untergeordneten Fragebogen.

$info = multiLevelData();
$itemID = $info['bild'];
u.s.w.

Dazu auch folgender Lesetipp: https://www.soscisurvey.de/help/doku.php/de:create:array#assoziative_arrays
by s169511 (135 points)
Super Danke! Das klappt jetzt! Es geht weiter: unzwar geht meine Zufallsvariable ZU3 nicht richtig, sodass immer das gleiche Bild gezeigt wird.


Also im Top Fragebogen:
codes = array_values(valueList('ZU03'));
$i = loopToPage('loopEnd', count($codes));

// Random
randomUse('ZU03', array());
$zahl= value('ZU03'); #### Also eigentlich möchte ich ja dass er ohne zurücklegen 20 zieht, und dann möchte ich die Zahl, die gezogen wurde unter $zahl abspeichern.

//Text1 Wert
$text1= value('ZU02');

//Variablen an anderen Fragebogen Schicken
multiLevelDown('Sub2', ['code' => $codes[$i], 'text1'=> $text1,'zahl'=>$zahl]);


In meinem Subfragebogen steht:

//Variablen holen
$info = multiLevelData();
// Weiter Daten aus dem Datenbank für Inhalte abrufen und z.B. ein Bild anzeigen
$ID = $info['code'];
$zahl = $info['zahl'];
$text1 = $info['text1'];


//Text1 anzeigen
if ($text1 == 1) {
  text('MA01');
    } elseif ($text1== 2) {
  text('MA02');
}
elseif ($text1 == 3) {
  text('MA03');
}

//Bildanzeigen
## Hier gibt es bestimmt eine elegantere Lösung aber solange es klappt, bin ich so happy:)

if ($zahl = 1){show('CS01');}
    else if ($zahl = 2) {show('CS02');}
    else if($zahl = 3) {show('CS03');}
    else if($zahl = 4) {show('CS04');}
    else if($zahl = 5) {show('CS05');}
    else if($zahl = 6) {show('CS06');}
    else if($zahl = 7) {show('CS07');}
    else if($zahl = 8) {show('CS08');}
    else if($zahl = 9) {show('CS09');}
    else if($zahl = 10) {show('CS10');}
    else if($zahl = 11) {show('CS11');}
    else if($zahl = 12) {show('CS12');}
    else if($zahl = 13) {show('CS13');}
    else if($zahl = 14) {show('CS14');}
    else if($zahl = 15) {show('CS15');}
    else if($zahl = 16) {show('CS16');}
    else if($zahl = 17) {show('CS17');}
    else if($zahl = 18) {show('CS18');}
    else if($zahl = 19) {show('CS19');}
    else if($zahl = 20) {show('CS20');}


// Wahlfrage,
question('RA01');

//Text2 anzeigen
question('TE24');

// ID in eine interne Variable speichern (wichtig)
put('IN01_01', $info);
####Hier kommt irgendwie immer die Warnung, das Put hier mehrere Varibalen speichern würde, aber nur eine speichern kann..
by SoSci Survey (308k points)
Was wird denn angezeigt, wenn Sie im Hauptfragebogen

debug($zahl);

ergänzen und dasselbe im untergeordneten Fragebogen auch nochmal?
by s169511 (135 points)
edited by s169511
Da kommt: Inhalt: $zahl = 1 (integer), deswegen wird auch immer nur das erste Bild angezeigt. Aber sollte nicht bei dem RansomUse bei jeder Loop eine andere Zahl aus den 20 angelegten Zetteln gezogen werden?
In dem Kästchen mit dem Debug informationen steht aber auch davor value("ZU03") =""


Ich hatte da noch die Alternativ Idee zu der Randomisierung, dass man eine Liste von 1-20 anlegt, die einmal Shufflet und dann bei jedem Loop einen Punkt weiter in der Liste geht, das wäre ja in meinem Fall ausreichend weil ich ja nur die reihenfolge von 20 Bildern verändern muss.

also:
$n = 20
$index= range(1,$n)

shuffle($index)

und ab dann wüsste ich nicht mehr weiter:
$zahl = index[$i]+ 1 ## oder so?
by SoSci Survey (308k points)
Tun Sie das nicht ... das macht nur Ärger ;)

Haben Sie denn den Zufallsgenerator ZU03 über dem PHP-Code auf die Seite gezogen?

Was bezwecken Sie genau mit dieser Zeile?

randomUse('ZU03', array());
by s169511 (135 points)
Alles klar:)

Ja habe ich, die ZU03 ist aber immernoch leer..
Die Zeile habe ich aus dieser Anleitung: https://www.soscisurvey.de/help/doku.php/de:create:functions:randomuse

Das Array wird dann so wie ich verstanden habe bei jeder ziehung gefüllt oder?

Auf meiner zweiten Subfragebogen Seite habe ich dann diesen Code:
multiLevelReturn(1);

$data = multiLevelResponse();
// Hat der Teilnehmer die Frage beantwortet (Code 1)?

$i = loopIndex(2);  // Wiederholung 0, 1, ...
$num = $i + 1;     // Nummer des gezogenen Zettels 1, 2, ...
randomUse('ZU03', array($num));


Aber anders als in dem Beispiel, gibt es ja bei mir keine Antworten, zwischen denen ich differeziere, alle sollen alle bilder gezeigt werden.
by SoSci Survey (308k points)
> Ja habe ich, die ZU03 ist aber immernoch leer..

Könnten Sie bitte mal die komplette Debug-Information der Seite (also die mit Zufallsgenerator und PHP-Code) hier posten? Danke.

> Aber anders als in dem Beispiel, gibt es ja bei mir keine Antworten, zwischen denen ich differeziere, alle sollen alle bilder gezeigt werden.

Dann lassen Sie das randomUse() bitte weg. Das ist nur für solche Fälle, wo man aus einem großen Pool zieht und nicht weiß, ob alle Befragten alle Wiederholungen mitmachen.
by s169511 (135 points)
edited by s169511
Hab es raus gelöscht. Jetzt wurde der Code gezogen, aber $zahl ist immer noch leer:

[Information]    Interview Nummer 649 wird fortgesetzt
[Information]    Der Fragebogen NEW im Projekt hilfsangebote wird verwendet
[Information]    Die Verweildauer auf Seite 8 war 2 Sekunden
[Verarbeitung]    Lese Antworten von Seite 8
[Information]    Fragen bisher zu 100% vollständig beantwortet
[Verarbeitung]    Erstelle Seite 9 in Fragebogen NEW
[Inhalt]    Erstelle Frage ZU03
[Information]    Vom Zufallsgenerator ZU03 wurden folgende Codes gezogen: 7, 13, 6, 14, 3, 11, 18, 1, 4, 10, 17, 20, 19, 5, 15, 16, 2, 9, 12, 8
[Information]    loopToPage() wiederholt nun 2 Seiten 20 mal
[Information]    value("ZU03") = ""
[Information]    value("ZU02") = 3
[Information]    Neuer Datensatz erstellt (CASE )
[Information]    Wechsel des Datensatzes: CASE 649 → CASE 650
[Information]    Interview Nummer 650 wird fortgesetzt
[Verarbeitung]    Erstelle Seite 1 in Fragebogen Sub2
[Inhalt]    Zeige Text MA03
[Inhalt]    Erstelle Frage RA01
[Inhalt]    Erstelle Frage TE24
debug()    Inhalt: $zahl = 1 (integer)

1 Answer

0 votes
by SoSci Survey (308k points)
selected by s169511
 
Best answer

Danke für die Debug-Information. Soweit alles gut, jetzt müssen Sie nur noch in jedem Durchlauf eine andere der ZU03-Variablen auslesen. Im übergeordneten Fragebogen sieht das so aus.

$i = loopPage(20);
$code = value(id('ZU03', $i+1));

multiLevelDown(..., [
  'code' => $code,
  ...
]);

Und im untergeordneten wie bekannt:

$data = multiLevelData();
$code =$data['code'];

Das id('ZU03', $i+1) im ersten Code liefert im ersten Durchganz ZU03x01, im zweiten Durchgang ZU03x02 u.s.w. Die Alternative wäre:

$codes = valueList('ZU03');
$code = loopPage($codes);
by s169511 (135 points)
edited by s169511
Super! Danke! Der Loop funktioniert jetzt!

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

...