0 votes
in SoSci Survey (dt.) by s137634 (700 points)

Guten Tag,

aufbauend auf meiner Frage hier (https://support.soscisurvey.de/?qa=22390/seitenkennungen-und-variablen-in-if-befehlen-benutzen) würde ich gerne wissen, ob es auch möglich wäre, nicht nur die Auswahl zu speichern, die als letzte getroffen wurde, sondern auch alle vorherigen.

Um das ganze kurz zusammen zu fassen:
In meinem Skript wird auf einer Seite ein Array randomisiert, das vier Blöcke (weitere Arrays), à 7 Seiten enthält, die auch randomisiert werden. Die Probanden können auf jeder der Seiten die Auswahl "ja" oder "nein" treffen. Meine Frage oben bezog sich darauf, dass ich (auf einer anderen Seite - die Reihenfolgen werden in einer global definierten variable gespeichert) in einer internen Variablen speichern wollte, welche "ja"-Antwort pro Block zeitlich als letzte getätigt wurde (weil die Reihenfolge der Seiten ja durcheinander ist, reicht deren Position im Skript dafür nicht aus). Wenn keine "ja"-Antwort getätigt wurde, dann sollte einfach ein "keiner" in die interne Variable geschrieben werden.

Das Skript, das ich mit der Hilfe des Supports erstellen konnte, sieht folgendermaßen aus:

$fragen = [
  's1GU1' => 'SG01',
  's2GU1' => 'SG02',
  's3GU1' => 'SG03',
  's4GU1' => 'SG16',
  's5GU1' => 'SG04',
  's6GU1' => 'SG21',
  's7GU1' => 'SG22',
  's1GU2' => 'SG05',
  's2GU2' => 'SG06',
  's3GU2' => 'SG07',
  's4GU2' => 'SG08',
  's5GU2' => 'SG09',
  's6GU2' => 'SG25',
  's7GU2' => 'SG23',
  's1GU3' => 'SG10',
  's2GU3' => 'SG11',
  's3GU3' => 'SG17',
  's4GU3' => 'SG18',
  's5GU3' => 'SG19',
  's6GU3' => 'SG26',
  's7GU3' => 'SG27',
  's1GU4' => 'SG12',
  's2GU4' => 'SG13',
  's3GU4' => 'SG20',
  's4GU4' => 'SG14',
  's5GU4' => 'SG15',
  's6GU4' => 'SG28',
  's7GU4' => 'SG24',
 ];

put('IV08_01', -1);
put('IV08_02', -1);
put('IV08_03', -1);
put('IV08_04', -1);

foreach ($Seq_GUNeu as $block => $pages) {
  foreach ($pages as $pos => $pageID) {
    $frage = $fragen[$pageID];
    if (value($frage) == 1) {
      $saveID = id('IV08', $block);
      put($saveID, $pageID);
    }
  }
}


//Speicherung der Codierung der Position für Block 1
if( (value('IV08_01') == 's1GU1')
)  { 
put('IV08_05', 1);
put('IV08_09', 'Distraktor 1');
}
if( (value('IV08_01') == 's2GU1')
)  { 
put('IV08_05', 2);
put('IV08_09', 'Distraktor 2');
}
if( (value('IV08_01') == 's3GU1')
)  { 
put('IV08_05', 3);
put('IV08_09', 'Distraktor 3');
}
if( (value('IV08_01') == 's4GU1')
)  { 
put('IV08_05', 4);
put('IV08_09', 'Distraktor 4');
}
if( (value('IV08_01') == 's5GU1')
)  { 
put('IV08_05', 5);
put('IV08_09', 'Distraktor 5');
}
if( (value('IV08_01') == 's6GU1')
)  { 
put('IV08_05', 6);
put('IV08_09', 'Target 1');
}
if( (value('IV08_01') == 's7GU1')
)  { 
put('IV08_05', 7);
put('IV08_09', 'Target 2');
}
if( (value('IV08_01') == -1)
)  { 
put('IV08_05', -1);
put('IV08_09', 'Keiner');
}

//speicherung der Codierung der Position für Block 2
if( (value('IV08_02') == 's1GU2')
)  { 
put('IV08_06', 1);
put('IV08_10', 'Distraktor 1');
}
if( (value('IV08_02') == 's2GU2')
)  { 
put('IV08_06', 2);
put('IV08_10', 'Distraktor 2');
}
if( (value('IV08_02') == 's3GU2')
)  { 
put('IV08_06', 3);
put('IV08_10', 'Distraktor 3');
}
if( (value('IV08_02') == 's4GU2')
)  { 
put('IV08_06', 4);
put('IV08_10', 'Distraktor 4');
}
if( (value('IV08_02') == 's5GU2')
)  { 
put('IV08_06', 5);
put('IV08_10', 'Distraktor 5');
}
if( (value('IV08_02') == 's6GU2')
)  { 
put('IV08_06', 6);
put('IV08_10', 'Target 1');
}
if( (value('IV08_02') == 's7GU2')
)  { 
put('IV08_06', 7);
put('IV08_10', 'Target 2');
}
if( (value('IV08_02') == -1)
)  { 
put('IV08_06', -1);
put('IV08_10', 'Keiner');
}

//speicherung der Codierung der Position für Block 3
if( (value('IV08_03') == 's1GU1')
)  { 
put('IV08_07', 1);
put('IV08_11', 'Distraktor 1');
}
if( (value('IV08_03') == 's2GU3')
)  { 
put('IV08_07', 2);
put('IV08_11', 'Distraktor 2');
}
if( (value('IV08_03') == 's3GU3')
)  { 
put('IV08_07', 3);
put('IV08_11', 'Distraktor 3');
}
if( (value('IV08_03') == 's4GU3')
)  { 
put('IV08_07', 4);
put('IV08_11', 'Distraktor 4');
}
if( (value('IV08_03') == 's5GU3')
)  { 
put('IV08_07', 5);
put('IV08_11', 'Distraktor 5');
}
if( (value('IV08_03') == 's6GU3')
)  { 
put('IV08_07', 6);
put('IV08_11', 'Target 1');
}
if( (value('IV08_03') == 's7GU3')
)  { 
put('IV08_07', 7);
put('IV08_11', 'Target 2');
}
if( (value('IV08_03') == -1)
)  { 
put('IV08_07', -1);
put('IV08_11', 'Keiner');
}

//speicherung der Codierung der Position für Block 4
if( (value('IV08_04') == 's1GU4')
)  { 
put('IV08_08', 1);
put('IV08_12', 'Distraktor 1');
}
if( (value('IV08_04') == 's2GU4')
)  { 
put('IV08_08', 2);
put('IV08_12', 'Distraktor 2');
}
if( (value('IV08_04') == 's3GU4')
)  { 
put('IV08_08', 3);
put('IV08_12', 'Distraktor 3');
}
if( (value('IV08_04') == 's4GU4')
)  { 
put('IV08_08', 4);
put('IV08_12', 'Distraktor 4');
}
if( (value('IV08_04') == 's5GU4')
)  { 
put('IV08_08', 5);
put('IV08_12', 'Distraktor 5');
}
if( (value('IV08_04') == 's6GU4')
)  { 
put('IV08_08', 6);
put('IV08_12', 'Target 1');
}
if( (value('IV08_04') == 's7GU4')
)  { 
put('IV08_08', 7);
put('IV08_12', 'Target 2');
}
if( (value('IV08_04') == -1)
)  { 
put('IV08_08', -1);
put('IV08_12', 'Keiner');
}
}

Ich brauche für die Auswertung der Daten nun aber auch mögliche "ja"-Auswahlen, die zuvor getroffen wurden. Ein Teilnehmer kann ja nur auf einer der sieben Seiten "ja" sagen, aber auch insgesamt zwei Mal oder sogar auf allen Seiten "ja" ankreuzen. Das würde ich ebenfalls gerne in eine (neue) interne Variable schreiben, und zwar in der Reihenfolge, in der diese "ja"-Auswahlen getätigt wurden. Um das verständlicher zu machen vielleicht ein Beispiel: Wenn die Blöcke nach der Randomisierung folgende Reihenfolge haben:

Block 2
Block 1
Block 4
Block 3

und die Seiten in Block 2 dann z.B. so vorliegen:

S3, S2, S7, S5, S1, S4, S6

könnte der Teilnehmer ja z.B. auf Seite 3, "nein" auswählen, auf Seite 2 ebenfalls. Auf Seite 7 würde er dann "ja" sagen, auf Seite 5 wieder "nein", auf Seite 1 und 4 wieder "ja" und auf Seite 6 wieder "nein"

S3 - nein
S2 - nein
S7 - ja
S5 - nein
S1 - ja
S4 - ja
S6 - nein

Dann würde im Augenblick gespeichert werden, dass Seite 4 als letztes mit "ja" beantwortet wurde. Das Programm würde mir dann die Seitenkennung "S4GU2" (s. Skript) raussuchen und in meine interne Variable eine 4 schreiben. Ich hätte aber gerne, dass es eben auch Seite 1 erfasst und mir als nächstes eine 1 aufschreibt (weil das die vorletzte Antwort war) und danach auch noch die Seite 7 mit einer 7 (weil dies die erste "ja"-Antwort war). Analog soll das mit allen "ja"-Antworten passieren und dann natürlich für alle Blöcke.

Wie muss das Skript dafür angepasst werden?

Ich hoffe ich konnte verständlich machen, was mein Anliegen ist.
Liebe Grüße und vielen Dank im Voraus!

4 Answers

0 votes
by SoSci Survey (302k points)
edited by SoSci Survey

und zwar in der Reihenfolge, in der diese "ja"-Auswahlen getätigt wurden

Mein erster Gedanke galt hier eine sinnvollen Datenstruktur.

Ich würde vorschlagen, dass Sie 4 x 7 = 28 interne Variablen anlegen. Nachdem Sie das Ganze "pro Block" haben möchten, bietet es sich an, dass Sie das in 4 Fragen (interne Variablen) à 7 Variablen aufteilen.

In diese Variablen würden Sie dann 1/2 schreiben, entsprechend der Antwort im Fragebogen, aber eben in der Reihenfolge, wie es abgefragt wurde. Das könnte dann so aussehen:

01 02 03 04 05 06 07
  1   2   2   1   2   1   2

Dort wäre es so gewesen, dass beim ersten, vierten und sechsten Item "Ja" ausgewählt wurde. In der anderen Variable wäre die 6 gespeichert worden.

Und dann haben Sie ja diese hübsche Schleife im Code, welche die Blöcke und Fragen in der Reihenfolge durchgeht, in welcher sie im Fragebogen erscheinen:

foreach ($Seq_GUNeu as $block => $pages) {
  foreach ($pages as $pos => $pageID) {
    $frage = $fragen[$pageID];
    if (value($frage) == 1) {
      $saveID = id('IV08', $block);
      put($saveID, $pageID);
    }
  }
}

Unter dem IF müssten Sie nur noch zwei weitere Zeilen ergänzen:

foreach ($Seq_GUNeu as $block => $pages) {
  foreach ($pages as $pos => $pageID) {
    $frage = $fragen[$pageID];
    if (value($frage) == 1) {
      $saveID = id('IV08', $block);
      put($saveID, $pageID);
    }
    $saveID2 = id($intVarID, $pos);
    put($saveID2, value($frage));
  }
}

Dort wird also in die Variable an der entsprechenden Stelle einfach nochmal der Wert aus de Ja/Nein-Auswahl geschrieben. Bevor Sie das testen: So funktioniert es noch nicht, denn wir benötigen noch die Variable $intVarID. Das beschreibt die Frage-Kennung der interne Variablen-Frage, welche zu dem Block gehört.

Und an der Stelle bin ich unsicher. Denn dafür müsste ich wissen, was genau in der Variable $Seq_GUNeu steht. Da ist die Frage, ob wir aus den pages die passende Block-Variable herausfinden können oder ob wir das nochmal separat speichern müssen. Wenn Sie den Code von der Seite mit der Definition von $Seq_GUNeu posten (der steht auch nicht in der "alten" Frage im Support), kann ich mir das nochmal ansehen.

Ergänzung

Sie speichern in drie internen Variablen IV13 ja die Ränge der 4 Blöcke.

$id = id('IV13', $indicesA[$i] + 1);
...
put($id, $i + 1);

Diese müssen wir für die korrekte Zuordnung wieder zurückkodieren.

$blocks = array_flip(array_values(valueList('IV13')));

Das sind ein paar verschachtelte Funktionen. Also kurz zur Erklärung: valueList() holt eine Liste der Ränge, array_values() erstzt die Schlüssel (erstmal die Variablennamen) durch die Indizes 0..3. Und array_flip() tauscht Schlüssel und Werte. Jetzt haben wir also eine Liste: Rang -> Block-Index (=Block-Nummer - 1).

Dann wissen wir jetzt auch, welcher Block z.B. auf dem ersten Rank anezeigt wird. Das können wir nutzen.

$blocks = array_flip(array_values(valueList('IV13')));
foreach ($Seq_GUNeu as $block => $pages) {
  $blockNum = $blocks[$block + 1] + 1;
  foreach ($pages as $pos => $pageID) {
    $frage = $fragen[$pageID];
    if (value($frage) == 1) {
      $saveID = id('IV08', $block);
      put($saveID, $pageID);
    }
    $saveID2 = id('IV99', $blockNum, $pos);
    put($saveID2, value($frage));
  }
}

So, Sie sehen, wie aus $blocks nun die Variable $blockNum ermittelt wird - und diese wird dann weiter unten verwendet, um eine interne Variable zu kodieren:

  $saveID2 = id('IX', $blockNum, $pos);

Das IX müssen Sie natürlich durch die Rubrik-Kennung ersetzen, wo die 4 neuen internen Variablen stehen. Sie können da natürlich auch rechnen, wenn Ihre neuen Variablen z.B: die Kennungen IV20 bis IV23 haben:

  $saveID2 = id('IV', $blockNum + 19, $pos);
by s137634 (700 points)
Vielen Dank! Ich habe in einer weiteren Antwort geantwortet.
0 votes
by s137634 (700 points)

Vielen Dank für die schnelle Antwort!
Ich habe Ihnen den passenden Ausschnitt des Skripts hier unten gepostet. Ich habe bewusst den ganzen Abschnitt genommen, falls sie den für das Verständnis brauchen. Aber letzten Endes macht das Skript kurz vor dem Ende (ab "//Speichern der Reihenfolge von Targets und Distraktoren in einer internen Variable") vier Mal das Selbe, bevor alles in $Seq_GUNeu gespeichert wird.

// Erst einmal die Seitenkennungen als Arrays speichern
$Seq_GU = array (
'Seq_GU11' => array('s1GU1', 's2GU1', 's3GU1', 
                 's4GU1', 's5GU1', 's7GU1'),

'Seq_GU21' => array('s1GU2', 's2GU2', 's3GU2', 
                 's4GU2', 's5GU2', 's7GU2'),

'Seq_GU31' => array('s1GU3', 's2GU3', 's3GU3', 
                 's4GU3', 's5GU3', 's6GU3'),

'Seq_GU41' => array('s1GU4', 's2GU4', 's3GU4', 
                 's4GU4', 's5GU4', 's6GU4')
);


// Den ersten Block aus dem Array $Seq_GU herausnehmen, etc.
$Seq_GU1 = array_shift($Seq_GU);
$Seq_GU2 = array_shift($Seq_GU);
$Seq_GU3 = array_shift($Seq_GU);
$Seq_GU4 = array_shift($Seq_GU);


//Speichern der Reihenfolge von Targets und Distraktoren in einer internen Variable

$indices1 = array_keys($Seq_GU1);
shuffle($indices1);
registerVariable('indices1');
// Nun die Ränge speichern - und die neue Abfolge der Seiten in $Seq_GU_order speichern
$Seq_GU_order1 = array();
for ($i=0; $i<count($indices1); $i++) {
  // Rang speichern wie oben
  $id = id('IV01', $indices1[$i] + 1);
  put($id, $i + 1);
  // Seite in der Abfolge speichern
  $Seq_GU_order1[$i] = $Seq_GU1[$indices1[$i]];
}

$indices2 = array_keys($Seq_GU2);
shuffle($indices2);
registerVariable('indices2');
// Nun die Ränge speichern - und die neue Abfolge der Seiten in $Seq_GU_order speichern
$Seq_GU_order2 = array();
for ($i=0; $i<count($indices2); $i++) {
  // Rang speichern wie oben
  $id = id('IV03', $indices2[$i] + 1);
  put($id, $i + 1);
  // Seite in der Abfolge speichern
  $Seq_GU_order2[$i] = $Seq_GU2[$indices2[$i]];
}

$indices3 = array_keys($Seq_GU3);
shuffle($indices3);
registerVariable('indices3');
// Nun die Ränge speichern - und die neue Abfolge der Seiten in $Seq_GU_order speichern
$Seq_GU_order3 = array();
for ($i=0; $i<count($indices3); $i++) {
  // Rang speichern wie oben
  $id = id('IV04', $indices3[$i] + 1);
  put($id, $i + 1);
  // Seite in der Abfolge speichern
  $Seq_GU_order3[$i] = $Seq_GU3[$indices3[$i]];
}

$indices4 = array_keys($Seq_GU4);
shuffle($indices4);
registerVariable('indices4');
// Nun die Ränge speichern - und die neue Abfolge der Seiten in $Seq_GU_order speichern
$Seq_GU_order4 = array();
for ($i=0; $i<count($indices4); $i++) {
  // Rang speichern wie oben
  $id = id('IV05', $indices4[$i] + 1);
  put($id, $i + 1);
  // Seite in der Abfolge speichern
  $Seq_GU_order4[$i] = $Seq_GU4[$indices4[$i]];
}

$Seq_GUNeu = [
  1 => $Seq_GU_order1,
  2 => $Seq_GU_order2,
  3 => $Seq_GU_order3,
  4 => $Seq_GU_order4
];
registerVariable('Seq_GUNeu');
by s137634 (700 points)
Vielen Dank für Ihre schnelle Antwort. Ich habe das ergänzt.

Irritiert bin ich allerdings darüber, dass die Variablen IV36_01 - IV 39_07 nicht existieren sollen. ich habe sie nämlich alle angelegt und finde sie auch links oben in der Leiste.

Zudem wird weiterhin ein Fehler in diesem Abschnitt des Codes gemeldet:
Fehler im Fragebogen: Undefined offset: 5

050 $blockNum = $blocks[$block + 1] + 1;
by SoSci Survey (302k points)
> Irritiert bin ich allerdings darüber, dass die Variablen IV36_01 - IV 39_07 nicht existieren sollen.

Stehen sie auch in der "Variable-Liste"?

> Fehler im Fragebogen: Undefined offset: 5

Wenn Sie über oder unter der fraglichen Zeile folgende Zeile ergänzen, was sagt denn dann die Debug-Information?

debug($blocks);
by s137634 (700 points)
edited by SoSci Survey
Guten Tag,

nein, bisher stehen die Variablen nicht in der Liste. Wie genau muss ich diese denn dort einpflegen?

Und ich habe unter der entsprechenden Zeile den Debug-Befehl eingefügt. Folgendes wird auf der Seite in einem gelben Kästchen angezeigt:

Debug-Information für $blocks:
4 0, 3 1, 2 2, 1 3, 7
(wobei die 4, 3, 2 und 1 in klein über der 0, 1, 2 und 3 stehen)
by SoSci Survey (302k points)
Danke für die ausführlichen Debug-Infos. Ich brauche im Moment tatsächlich nur die Information zu $blocks - den Rest habe ich daher entfernt.

Steht da wirklich noch eine 7 dahinter?

Die Ziffern die klein oben stehen, sind die Indizes des Arrays. Die Variable $blocks kommt ja hierher:

$blocks = array_flip(array_values(valueList('IV13')));

Heißt, da wurden die Werte aus IV13 genommen und dann Indizes und Werte vertauscht. Korrekt muss es dann aber heißen:

$blockNum = $blocks[$block] + 1;

Also ein +1 weniger. Dann sollten da Werte von [0..3]+1 = [1..4] herauskommen. Diese werden dann weiter unten in Variablen-Namen umgerechnet:

id('IV', $blockNum + 35, $pos + 1);

In dem Fall wäre das dann IV36 bis IV39.

> nein, bisher stehen die Variablen nicht in der Liste.

Prüfen Sie bitte, dass Sie 4 interne Variablen haben (z.B. mit den Kennung IV36 bis IV39) und dass jede dieser Fragen die passende Anzahl von 7 Items (Variabeln) enthält, um die Auswahlentscheidungen abzuspeichern.
by s137634 (700 points)
Ich habe noch einmal als "Antwort" kommentiert, weil ich Ihnen dort Screenshots bereitstellen kann.
0 votes
by s137634 (700 points)

Vielen dank für Ihre rasche Rückmeldung!
Ich habe die Änderung übernommen. Die Debug-Option wird nun wie folgt angezeigt:
(die 7 steht tatsächlich dort)


Und zu den internen Variablen: Ja, sie sind angelegt. Auch hier noch einmal ein Screenshot dazu, wie sie links oben in der Leiste erscheinen:

Deswegen bin ich weiterhin verwirrt, warum das Programm sie nicht erkennt. Muss ich die Variablen irgendwo im Code noch erwähnen?

by s137634 (700 points)
Ich habe drei Testdurchgänge gemacht:

Beim ersten passten die Variablen mit der Reihenfolge in der Studie zusammen:
3, 4, 1, 2 wurden in IV40 - IV43 als 3, 4, 1, 2 angezeigt. In IV13_01 - 13_04 ebenfalls 3, 4, 1, 2

Anders sah es im zweiten Durchgang aus. Da war die Reihen folge in der Studie 3, 2, 4, 1 aber sowohl in IV40 - IV43 und IV 13_01 - IV13_04 4, 2, 1, 3

Im dritten Durchgang zeigte sich das ebenso: Die Reihenfolge in der Studie war 1, 4, 2, 3 aber in allen Variablen als 1, 3, 4, 2 gespeichert
by SoSci Survey (302k points)
Sie haben in der Variable die Ränge (!) der Blöcke gespeichert:

1, 4, 2, 3 bedeutet:

Block 1 wurde auf Position 1 gezeigt
Block 2 wurde auf Position 3 gezeigt
Block 3 wurde auf Position 4 gezeigt
Block 4 wurde auf Position 2 gezeigt

Daher die Daten in Ihrem Datensatz.

Aber ich dachte eigentlich, dass in IV40 ff. die Abfolgen innerhalb der Blöcke gespeichert würden bzw. die Frage-Kennungen (und zwar nur dann wenn die positive Auswahl mit Code 1 gewähl wurde):

    $saveID3 = id('IV', $blockNum + 39, $pos + 1);
    if (value($frage) > 0) {
      put($saveID3, $frage);
    }

Und in IV13 dachte ich, dass die Reihenfolge der Blöcke liegt. Sie sehen, ich mache mir gerade Sorgen, dass Sie Ihre Variablen überschreiben und am Ende ein großes Chaos in den Daten bekommen.
by s137634 (700 points)
Ja, das könnte vielleicht passieren. Da ich viele Berechnungen zur Auswertung bereits in Sosci Survey durchführe gibt es eine ganze Reihe an Variablen und Code. Wie kann ich das Problem denn umgehen?

Sollte neben IV13 eine weitere variable angelegt werden, die die Reihenfolge speichert, so wie ich sie in IV40 ff. brauche? in IV40 ff. soll nämlich die Reihenfolge und nicht die Rangfolge gespeichert werden. Wobei wenn es dadurch sehr aufwändig wird könnte ich mit meinem Auswertungsprogramm da vermutlich auch eine Lösung finden.
by SoSci Survey (302k points)
> Wie kann ich das Problem denn umgehen?

Vielleicht wäre es eine gute Idee, die internen Variablen-Fragen für unterschiedliche Einsatzbereiche in unterschiedliche (neue) Rubriken zu verschieben. Dann kann man ziemlich sicher ausschließen, dass eine Variable doppelt verwendet wird.

> Sollte neben IV13 eine weitere variable angelegt werden, die die Reihenfolge speichert, so wie ich sie in IV40 ff. brauche?

Das kann man schon machen. Das würde ich dann aber an derselben Stelle erledigen, wo auch IV13 beschrieben wird. Auwfändiger wird es nicht - man muss halt nur wissen, was man in der Auswertung benötigt.
by s137634 (700 points)
Guten Tag,

da ich für eine weitere Auswertung doch auch die Reihenfolge brauche, habe ich noch einmal eine Antwort zu dieser Frage gepostet, weil es bei der Etablierung noch Probleme gibt. Wenn das Skript dort funktioniert würde ich in dem bisher erarbeiteten Skript einfach die Variable IV13 gegen IV52 austauschen, dann müsste das Programm auf die dort vorliegende Reihenfolge zugreifen, oder?
0 votes
by s137634 (700 points)

Nach längerem Herumprobieren ist es doch am einfachsten, die Reihenfolge zu speichern. In der internen Variable 13 wird bisher die Position gespeichert, welche ich an anderer Stelle brauche. deswegen wollte ich die Reihenfolge in die zusätzliche Variable IV52 speichern. Dort, wo die Positionen im Code geshuffelt werden habe ich den Code zur Speicherung für Reihenfolgen ergänzt. Allerdings hat das Programm damit Probleme. Es wird folgende Fehlermeldung ausgegeben:

In der Funktion setPageOrder() wurde ein ungültiger Parameter vom Typ NULL angegeben. Als Parameter sind entweder Strings (Texte) erlaubt oder Arrays, die ausschließlich Strings enthalten.
Fehler im Fragebogen (Seite 12)
Im PHP-Code trat ein Fehler auf.
Fehler im Fragebogen: Undefined offset: 4
Zeile: 684

PHP-Code

681
682 put($id, $i + 1);
683
684 $Seq_GUMix[$i] = $Seq_GU_order[$indicesA[$i]];
685 }
686
687 setPageOrder($Seq_GUMix[0], 'S2', $Seq_GUMix[1], 'S3', $Seq_GUMix[2], 'S4', $Seq_GUMix[3], 'GK' );
Fehler im Fragebogen: Undefined index:
Zeile: 684

PHP-Code

681
682 put($id, $i + 1);
683
684 $Seq_GUMix[$i] = $Seq_GU_order[$indicesA[$i]];
685 }
686
687 setPageOrder($Seq_GUMix[0], 'S2', $Seq_GUMix[1], 'S3', $Seq_GUMix[2], 'S4', $Seq_GUMix[3], 'GK' );
Fehler im Fragebogen: Undefined offset: 0
Zeile: 687

PHP-Code

684 $Seq_GUMix[$i] = $Seq_GU_order[$indicesA[$i]];
685 }
686
687 setPageOrder($Seq_GUMix[0], 'S2', $Seq_GUMix[1], 'S3', $Seq_GUMix[2], 'S4', $Seq_GUMix[3], 'GK' );
688 }
689
690
Fehler im Fragebogen: Undefined offset: 1
Zeile: 687

PHP-Code

684 $Seq_GUMix[$i] = $Seq_GU_order[$indicesA[$i]];
685 }
686
687 setPageOrder($Seq_GUMix[0], 'S2', $Seq_GUMix[1], 'S3', $Seq_GUMix[2], 'S4', $Seq_GUMix[3], 'GK' );
688 }
689
690
Fehler im Fragebogen: Undefined offset: 2
Zeile: 687

PHP-Code

684 $Seq_GUMix[$i] = $Seq_GU_order[$indicesA[$i]];
685 }
686
687 setPageOrder($Seq_GUMix[0], 'S2', $Seq_GUMix[1], 'S3', $Seq_GUMix[2], 'S4', $Seq_GUMix[3], 'GK' );
688 }
689
690
Fehler im Fragebogen: Undefined offset: 3
Zeile: 687

PHP-Code

684 $Seq_GUMix[$i] = $Seq_GU_order[$indicesA[$i]];
685 }
686
687 setPageOrder($Seq_GUMix[0], 'S2', $Seq_GUMix[1], 'S3', $Seq_GUMix[2], 'S4', $Seq_GUMix[3], 'GK' );
688 }
689
690

Und der Code sieht nun wie folgt aus:
(Der von mir ergänzte Teil ist fast ganz unten über dem Debug-Block zu finden. Ohne ihn funktionierte mein Code, aber anscheinend interferiert er mit dem bisherigen?)

// Erst einmal die Seitenkennungen als Arrays speichern
$Seq_GU = array (
'Seq_GU11' => array('s1GU1', 's2GU1', 's3GU1', 
                 's4GU1', 's5GU1', 's7GU1'),

'Seq_GU21' => array('s1GU2', 's2GU2', 's3GU2', 
                 's4GU2', 's5GU2', 's7GU2'),

'Seq_GU31' => array('s1GU3', 's2GU3', 's3GU3', 
                 's4GU3', 's5GU3', 's6GU3'),

'Seq_GU41' => array('s1GU4', 's2GU4', 's3GU4', 
                 's4GU4', 's5GU4', 's6GU4')
//GU1 = blau, GU2 = orange, GU3 = grün, GU4 = violett (Dummy-Bilder)
//s1 - s5 stehen für die Distraktoren, s6 für Target 1 und s7 für Target 2
);


// Den ersten Block aus dem Array $Seq_GU herausnehmen, etc.
$Seq_GU1 = array_shift($Seq_GU);
$Seq_GU2 = array_shift($Seq_GU);
$Seq_GU3 = array_shift($Seq_GU);
$Seq_GU4 = array_shift($Seq_GU);


//Speichern der Reihenfolge von Targets und Distraktoren in einer internen Variable

$indices1 = array_keys($Seq_GU1);
shuffle($indices1);
//Reihenfolge speichern (neben Position)
for ($i=0; $i<count($indices1); $i++) {
  // Kennung der internen Variable aus Frage-Kennung plus Index erstellen
  $id = id('IV28', $i + 1);
  // Hier den Wert aus dem Array speichern
  put($id, $indices1[$i]);
}
registerVariable('indices1');
// Nun die Ränge speichern - und die neue Abfolge der Seiten in $Seq_GU_order speichern
$Seq_GU_order1 = array();
for ($i=0; $i<count($indices1); $i++) {
  // Rang speichern wie oben
  $id = id('IV01', $indices1[$i] + 1);
  put($id, $i + 1);
  // Seite in der Abfolge speichern
  $Seq_GU_order1[$i] = $Seq_GU1[$indices1[$i]];
}

$indices2 = array_keys($Seq_GU2);
shuffle($indices2);
for ($i=0; $i<count($indices2); $i++) {
  // Kennung der internen Variable aus Frage-Kennung plus Index erstellen
  $id = id('IV29', $i + 1);
  // Hier den Wert aus dem Array speichern
  put($id, $indices2[$i]);
}
registerVariable('indices2');
// Nun die Ränge speichern - und die neue Abfolge der Seiten in $Seq_GU_order speichern
$Seq_GU_order2 = array();
for ($i=0; $i<count($indices2); $i++) {
  // Rang speichern wie oben
  $id = id('IV03', $indices2[$i] + 1);
  put($id, $i + 1);
  // Seite in der Abfolge speichern
  $Seq_GU_order2[$i] = $Seq_GU2[$indices2[$i]];
}

$indices3 = array_keys($Seq_GU3);
shuffle($indices3);
for ($i=0; $i<count($indices3); $i++) {
  // Kennung der internen Variable aus Frage-Kennung plus Index erstellen
  $id = id('IV30', $i + 1);
  // Hier den Wert aus dem Array speichern
  put($id, $indices3[$i]);
}
registerVariable('indices3');
// Nun die Ränge speichern - und die neue Abfolge der Seiten in $Seq_GU_order speichern
$Seq_GU_order3 = array();
for ($i=0; $i<count($indices3); $i++) {
  // Rang speichern wie oben
  $id = id('IV04', $indices3[$i] + 1);
  put($id, $i + 1);
  // Seite in der Abfolge speichern
  $Seq_GU_order3[$i] = $Seq_GU3[$indices3[$i]];
}

$indices4 = array_keys($Seq_GU4);
shuffle($indices4);
for ($i=0; $i<count($indices4); $i++) {
  // Kennung der internen Variable aus Frage-Kennung plus Index erstellen
  $id = id('IV31', $i + 1);
  // Hier den Wert aus dem Array speichern
  put($id, $indices4[$i]);
}
registerVariable('indices4');
// Nun die Ränge speichern - und die neue Abfolge der Seiten in $Seq_GU_order speichern
$Seq_GU_order4 = array();
for ($i=0; $i<count($indices4); $i++) {
  // Rang speichern wie oben
  $id = id('IV05', $indices4[$i] + 1);
  put($id, $i + 1);
  // Seite in der Abfolge speichern
  $Seq_GU_order4[$i] = $Seq_GU4[$indices4[$i]];
}

$Seq_GUNeu = [
  1 => $Seq_GU_order1,
  2 => $Seq_GU_order2,
  3 => $Seq_GU_order3,
  4 => $Seq_GU_order4
];
registerVariable('Seq_GUNeu');

$Seq_GU_order = array (
 $Seq_GU_order1,
 $Seq_GU_order2,
 $Seq_GU_order3,
 $Seq_GU_order4
);
// Die Schlüssel mischen, nicht das Array selbst
$indicesA = array_keys($Seq_GU_order);
shuffle($indicesA);

// Jetzt wieder Positionen (der Gegenüberstellungen)
//speichern und ein gemischtes Array erzeugen
$Seq_GUMix = [];
for ($i=0; $i<count($indicesA); $i++) {
  // Rang speichern
  $id = id('IV13', $indicesA[$i] + 1);

registerVariable('Seq_GUMix');

//Reihenfolge der Gegenüberstellungen speichern
for ($i=0; $i<count($indicesA); $i++) {
  // Kennung der internen Variable aus Frage-Kennung plus Index erstellen
  $id = id('IV52', $i + 1);
  // Hier den Wert aus dem Array speichern
  put($id, $indicesA[$i]);
}

debug($i);
debug($indicesA);
debug($id);
debug($indicesA[$i]);

  put($id, $i + 1);
  // Teil-Array speichern
  $Seq_GUMix[$i] = $Seq_GU_order[$indicesA[$i]];
}

setPageOrder($Seq_GUMix[0], 'S2', $Seq_GUMix[1], 'S3', $Seq_GUMix[2], 'S4', $Seq_GUMix[3], 'GK' );
}
by SoSci Survey (302k points)
> In der Funktion setPageOrder() wurde ein ungültiger Parameter vom Typ NULL angegeben. Als Parameter sind entweder Strings (Texte) erlaubt oder Arrays, die ausschließlich Strings enthalten.

Das bedeutet, dass eine der Variablen im Array $Seq_GUMix nicht korrekt mit einem Wert belegt ist.

Finden Sie mittels debug() erst einmal heraus, welcher Eintrag im Array Ärger macht:

debug($Seq_GUMix);

Und es wäre für die Übersicht wirklich sinnvoll, das in einer neuen Frage (z.B. über den Knopf "related question" oben) unterzubringen. Sonst sehe ich bestenfalls per Zufall, wenn Sie hier etwas Neues schreiben :)
by s137634 (700 points)
Vielen Dank für Ihre schnelle Antwort!

Tatsächlich lerne ich jedes Mal mehr über dieses Support-Forum :D ^^" Ich wusste gar nicht, dass so etwas möglich ist. deswegen habe ich bisher immer auf einen alten Beitrag geantwortet, wenn ich eine neue Antwort erstellt habe. In Zukunft werde ich es dann aber sinnvoller nutzen.

Ich habe den Debug-Befehl an zwei Stellen im Code gesetzt (weil ich nicht wusste welche die richtige ist):

// Jetzt wieder Positionen (der Gegenüberstellungen)
//speichern und ein gemischtes Array erzeugen
$Seq_GUMix = [];
debug($Seq_GUMix);
for ($i=0; $i<count($indicesA); $i++) {
  // Rang speichern
  $id = id('IV13', $indicesA[$i] + 1);

registerVariable('Seq_GUMix');
debug($Seq_GUMix);


Und folgendes wurde mir ausgegeben:

Hinweis (Seite 12)
Debug-Information für $Seq_GUMix:
Array (ohne Elemente)
Hinweis (Seite 12)
Debug-Information für $Seq_GUMix:
Array (ohne Elemente)
by SoSci Survey (302k points)
In beiden Fällen ist ds Ergebnis eher ernüchternd: Die Variable ist leer ;)

Ich denke, dass in Ihrem PHP-Code einfach eine Klammer fehlt:

$Seq_GUMix = [];
for ($i=0; $i<count($indicesA); $i++) {
  // Rang speichern
  $id = id('IV13', $indicesA[$i] + 1);
}   /// ******* Hier müsste m.E. eine Klammer gesetzt werden, um die Schleife zu beenden ******* ///
registerVariable('Seq_GUMix');
// ***** Hier passt das debug() gut ****** //
debug($Seq_GUMix);

//Reihenfolge der Gegenüberstellungen speichern
for ($i=0; $i<count($indicesA); $i++) {
  // Kennung der internen Variable aus Frage-Kennung plus Index erstellen
  $id = id('IV52', $i + 1);
  // Hier den Wert aus dem Array speichern
  put($id, $indicesA[$i]);
}
by s137634 (700 points)
Ich habe die Klammer ergänzt... allerdings gibt es dann unten am Php-Feld den Hinweis, dass es nur 25 geöffnete, aber 26 geschlossene geschweifte Klammern gibt. Folgende Fehlermeldung dürfte daher nicht verwunderlich sein:

Fehler im Fragebogen (Seite 12)
Im PHP-Code trat ein Fehler auf.
Fehler im Fragebogen: Befehl oder String (Text) nicht abgeschlossen

Hinter einem Befehl wie z.B. question() steht kein Strichpunkt oder
ein String (Text in Anführungszeichen) ist nicht abgeschlossen oder
im String selbst kommt ein Anführungszeichen vor, z.B. html('Mach's besser!'); – in diesem Fall stellen Sie dem Anführungszeichen einen Backslash (\) voran.
Möglicherweise stimmen die öffnenenden und schließenden geschweiften Klammern für Anweisungsblöcke auch nicht überein.
PHP-Code

209 }
210
211 setPageOrder($Seq_GUMix[0], 'S2', $Seq_GUMix[1], 'S3', $Seq_GUMix[2], 'S4', $Seq_GUMix[3], 'GK' );
212 }
213
214
215
216
217 elseif (
218 (value ('RA02') == 2)) {
219
220
by SoSci Survey (302k points)
Die Klammern ganz am Ende nach dem setPageOrder() scheint mir überflüssig. Es ist in solchen Fällen hilfreich, den Code sauber einzurücken - dann sieht man, was in Blöcken zusammengehört.
by s137634 (700 points)
Diese Klammer gehört zu einer if-Schleife. Der Code an sich ist deutlich länger (und der Abschnitt, um den es hier geht kommt auch insgesamt 6 Mal vor - in jeder der if-Schleifen ein mal). Aber ich werde ihn durchgehen, ob nicht irgendwo anders eine Klammer zu viel ist.
by s137634 (700 points)
Ich habe vermutlich gefunden, wo das Problem mit der Klammer war:

// Jetzt wieder Positionen (der Gegenüberstellungen)
//speichern und ein gemischtes Array erzeugen
$Seq_GUMix = [];
for ($i=0; $i<count($indicesA); $i++) {
  // Rang speichern
  $id = id('IV13', $indicesA[$i] + 1);
}
registerVariable('Seq_GUMix');
debug($Seq_GUMix);

for ($i=0; $i<count($indicesA); $i++) {
  // Kennung der internen Variable aus Frage-Kennung plus Index erstellen
  $id = id('IV52', $i + 1);
  // Hier den Wert aus dem Array speichern
  put($id, $indicesA[$i]);
}

  put($id, $i + 1);
  // Teil-Array speichern
  $Seq_GUMix[$i] = $Seq_GU_order[$indicesA[$i]];

} // <- Diese Klammer habe ich gelöscht, nun gibt es keine Fehlermeldung mehr

setPageOrder($Seq_GUMix[0], 'S2', $Seq_GUMix[1], 'S3', $Seq_GUMix[2], 'S4', $Seq_GUMix[3], 'GK' );
}

Nun wird mir allerdings folgendes angezeigt:

Hinweis (Seite 12)
Debug-Information für $Seq_GUMix:
Array (ohne Elemente)
Fehler im Fragebogen (Seite 12)
In der Funktion setPageOrder() wurde ein ungültiger Parameter vom Typ NULL angegeben. Als Parameter sind entweder Strings (Texte) erlaubt oder Arrays, die ausschließlich Strings enthalten.
Fehler im Fragebogen (Seite 12)
Im PHP-Code trat ein Fehler auf.
Fehler im Fragebogen: Undefined offset: 4
Zeile: 359

PHP-Code

356
357   put($id, $i + 1);
358   
359   $Seq_GUMix[$i] = $Seq_GU_order[$indicesA[$i]];
360
361
362 setPageOrder($Seq_GUMix[0], 'S2', $Seq_GUMix[1], 'S3', $Seq_GUMix[2], 'S4', $Seq_GUMix[3], 'GK' );
Fehler im Fragebogen: Undefined index:
Zeile: 359

PHP-Code

356
357   put($id, $i + 1);
358   
359   $Seq_GUMix[$i] = $Seq_GU_order[$indicesA[$i]];
360
361
362 setPageOrder($Seq_GUMix[0], 'S2', $Seq_GUMix[1], 'S3', $Seq_GUMix[2], 'S4', $Seq_GUMix[3], 'GK' );
Fehler im Fragebogen: Undefined offset: 0
Zeile: 362

PHP-Code

359   $Seq_GUMix[$i] = $Seq_GU_order[$indicesA[$i]];
360
361
362 setPageOrder($Seq_GUMix[0], 'S2', $Seq_GUMix[1], 'S3', $Seq_GUMix[2], 'S4', $Seq_GUMix[3], 'GK' );
363 }
364
365
Fehler im Fragebogen: Undefined offset: 1
Zeile: 362

PHP-Code

359   $Seq_GUMix[$i] = $Seq_GU_order[$indicesA[$i]];
360
361
362 setPageOrder($Seq_GUMix[0], 'S2', $Seq_GUMix[1], 'S3', $Seq_GUMix[2], 'S4', $Seq_GUMix[3], 'GK' );
363 }
364
365
Fehler im Fragebogen: Undefined offset: 2
Zeile: 362

PHP-Code

359   $Seq_GUMix[$i] = $Seq_GU_order[$indicesA[$i]];
360
361
362 setPageOrder($Seq_GUMix[0], 'S2', $Seq_GUMix[1], 'S3', $Seq_GUMix[2], 'S4', $Seq_GUMix[3], 'GK' );
363 }
364
365
Fehler im Fragebogen: Undefined offset: 3
Zeile: 362

PHP-Code

359   $Seq_GUMix[$i] = $Seq_GU_order[$indicesA[$i]];
360
361
362 setPageOrder($Seq_GUMix[0], 'S2', $Seq_GUMix[1], 'S3', $Seq_GUMix[2], 'S4', $Seq_GUMix[3], 'GK' );
363 }
364
365
by SoSci Survey (302k points)
Sie können den Code hier mal richtig einrücken lassen, dann sollte es übersichtlicher werden: http://beautifytools.com/php-beautifier.php
by SoSci Survey (302k points)
> Diese Klammer habe ich gelöscht, nun gibt es keine Fehlermeldung mehr

Das war m.E. die falsche - es macht nicht viel Sinn, setPageOrder() in einer Schleife mehrfach aufzurufen. Diese Funktion sollte definitiv nur einmal aufgerufen werden. Und dann natürlich mit den richtigen Werten, sonst kommt eine Fehlermeldung wie die beschriebene ;)
by s137634 (700 points)
Vielen Dank für den Link!
Ich habe den Code nun so abgeändert, dass es nur noch ein einziges setPageOrder() am Ende außerhalb der Schleifen gibt. Ich habe die vorherige Klammer zudem wieder ergänzt. Das ganze sieht nun so aus:

else {

if (
(value ('RA02') == 1)) {

// Erst einmal die Seitenkennungen als Arrays speichern
$Seq_GU = array (
'Seq_GU11' => array('s1GU1', 's2GU1', 's3GU1',
                 's4GU1', 's5GU1', 's7GU1'),

'Seq_GU21' => array('s1GU2', 's2GU2', 's3GU2',
                 's4GU2', 's5GU2', 's7GU2'),

'Seq_GU31' => array('s1GU3', 's2GU3', 's3GU3',
                 's4GU3', 's5GU3', 's6GU3'),

'Seq_GU41' => array('s1GU4', 's2GU4', 's3GU4',
                 's4GU4', 's5GU4', 's6GU4')
//GU1 = blau, GU2 = orange, GU3 = grün, GU4 = violett (Dummy-Bilder)
//s1 - s5 stehen für die Distraktoren, s6 für Target 1 und s7 für Target 2
);


// Den ersten Block aus dem Array $Seq_GU herausnehmen, etc.
$Seq_GU1 = array_shift($Seq_GU);
$Seq_GU2 = array_shift($Seq_GU);
$Seq_GU3 = array_shift($Seq_GU);
$Seq_GU4 = array_shift($Seq_GU);


//Speichern der Reihenfolge von Targets und Distraktoren in einer internen Variable

$indices1 = array_keys($Seq_GU1);
shuffle($indices1);
//Reihenfolge speichern (neben Position)
for ($i=0; $i<count($indices1); $i++) {
  // Kennung der internen Variable aus Frage-Kennung plus Index erstellen
  $id = id('IV28', $i + 1);
  // Hier den Wert aus dem Array speichern
  put($id, $indices1[$i]);
}
registerVariable('indices1');
// Nun die Ränge speichern - und die neue Abfolge der Seiten in $Seq_GU_order speichern
$Seq_GU_order1 = array();
for ($i=0; $i<count($indices1); $i++) {
  // Rang speichern wie oben
  $id = id('IV01', $indices1[$i] + 1);
  put($id, $i + 1);
  // Seite in der Abfolge speichern
  $Seq_GU_order1[$i] = $Seq_GU1[$indices1[$i]];
}

$indices2 = array_keys($Seq_GU2);
shuffle($indices2);
for ($i=0; $i<count($indices2); $i++) {
  // Kennung der internen Variable aus Frage-Kennung plus Index erstellen
  $id = id('IV29', $i + 1);
  // Hier den Wert aus dem Array speichern
  put($id, $indices2[$i]);
}
registerVariable('indices2');
// Nun die Ränge speichern - und die neue Abfolge der Seiten in $Seq_GU_order speichern
$Seq_GU_order2 = array();
for ($i=0; $i<count($indices2); $i++) {
  // Rang speichern wie oben
  $id = id('IV03', $indices2[$i] + 1);
  put($id, $i + 1);
  // Seite in der Abfolge speichern
  $Seq_GU_order2[$i] = $Seq_GU2[$indices2[$i]];
}

$indices3 = array_keys($Seq_GU3);
shuffle($indices3);
for ($i=0; $i<count($indices3); $i++) {
  // Kennung der internen Variable aus Frage-Kennung plus Index erstellen
  $id = id('IV30', $i + 1);
  // Hier den Wert aus dem Array speichern
  put($id, $indices3[$i]);
}
registerVariable('indices3');
// Nun die Ränge speichern - und die neue Abfolge der Seiten in $Seq_GU_order speichern
$Seq_GU_order3 = array();
for ($i=0; $i<count($indices3); $i++) {
  // Rang speichern wie oben
  $id = id('IV04', $indices3[$i] + 1);
  put($id, $i + 1);
  // Seite in der Abfolge speichern
  $Seq_GU_order3[$i] = $Seq_GU3[$indices3[$i]];
}

$indices4 = array_keys($Seq_GU4);
shuffle($indices4);
for ($i=0; $i<count($indices4); $i++) {
  // Kennung der internen Variable aus Frage-Kennung plus Index erstellen
  $id = id('IV31', $i + 1);
  // Hier den Wert aus dem Array speichern
  put($id, $indices4[$i]);
}
registerVariable('indices4');
// Nun die Ränge speichern - und die neue Abfolge der Seiten in $Seq_GU_order speichern
$Seq_GU_order4 = array();
for ($i=0; $i<count($indices4); $i++) {
  // Rang speichern wie oben
  $id = id('IV05', $indices4[$i] + 1);
  put($id, $i + 1);
  // Seite in der Abfolge speichern
  $Seq_GU_order4[$i] = $Seq_GU4[$indices4[$i]];
}

$Seq_GUNeu = [
  1 => $Seq_GU_order1,
  2 => $Seq_GU_order2,
  3 => $Seq_GU_order3,
  4 => $Seq_GU_order4
];
registerVariable('Seq_GUNeu');

$Seq_GU_order = array (
 $Seq_GU_order1,
 $Seq_GU_order2,
 $Seq_GU_order3,
 $Seq_GU_order4
);
// Die Schlüssel mischen, nicht das Array selbst
$indicesA = array_keys($Seq_GU_order);
shuffle($indicesA);

// Jetzt wieder Positionen (der Gegenüberstellungen)
//speichern und ein gemischtes Array erzeugen
$Seq_GUMix = [];
for ($i=0; $i<count($indicesA); $i++) {
  // Rang speichern
  $id = id('IV13', $indicesA[$i] + 1);
}
registerVariable('Seq_GUMix');
debug($Seq_GUMix);

//Reihenfolge der Gegenüberstellungen speichern
for ($i=0; $i<count($indicesA); $i++) {
  // Kennung der internen Variable aus Frage-Kennung plus Index erstellen
  $id = id('IV52', $i + 1);
  // Hier den Wert aus dem Array speichern
  put($id, $indicesA[$i]);
}

  put($id, $i + 1);
  // Teil-Array speichern
  $Seq_GUMix[$i] = $Seq_GU_order[$indicesA[$i]];
}

(hier folgen dann fünf weitere, sehr ähnliche Blöcke)

setPageOrder($Seq_GUMix[0], 'S2', $Seq_GUMix[1], 'S3', $Seq_GUMix[2], 'S4', $Seq_GUMix[3], 'GK' );

;}


Allerdings ist auch das problematisch:

Hinweis (Seite 12)
Debug-Information für $Seq_GUMix:
Array (ohne Elemente)
Fehler im Fragebogen (Seite 12)
In der Funktion setPageOrder() wurde ein ungültiger Parameter vom Typ NULL angegeben. Als Parameter sind entweder Strings (Texte) erlaubt oder Arrays, die ausschließlich Strings enthalten.
Fehler im Fragebogen (Seite 12)
Im PHP-Code trat ein Fehler auf.
Fehler im Fragebogen: Undefined offset: 4
Zeile: 820

PHP-Code

817
818   put($id, $i + 1);
819   
820   $Seq_GUMix[$i] = $Seq_GU_order[$indicesA[$i]];
821
822 }
823
Fehler im Fragebogen: Undefined index:
Zeile: 820

PHP-Code

817
818   put($id, $i + 1);
819   
820   $Seq_GUMix[$i] = $Seq_GU_order[$indicesA[$i]];
821
822 }
823
Fehler im Fragebogen: Undefined offset: 0
Zeile: 975

PHP-Code

972   $Seq_GUMix[$i] = $Seq_GU_order[$indicesA[$i]];
973 }
974
975 setPageOrder($Seq_GUMix[0], 'S2', $Seq_GUMix[1], 'S3', $Seq_GUMix[2], 'S4', $Seq_GUMix[3], 'GK' );
976
977 ;}
978 return 'ok';
Fehler im Fragebogen: Undefined offset: 1
Zeile: 975

PHP-Code

972   $Seq_GUMix[$i] = $Seq_GU_order[$indicesA[$i]];
973 }
974
975 setPageOrder($Seq_GUMix[0], 'S2', $Seq_GUMix[1], 'S3', $Seq_GUMix[2], 'S4', $Seq_GUMix[3], 'GK' );
976
977 ;}
978 return 'ok';
Fehler im Fragebogen: Undefined offset: 2
Zeile: 975

PHP-Code

972   $Seq_GUMix[$i] = $Seq_GU_order[$indicesA[$i]];
973 }
974
975 setPageOrder($Seq_GUMix[0], 'S2', $Seq_GUMix[1], 'S3', $Seq_GUMix[2], 'S4', $Seq_GUMix[3], 'GK' );
976
977 ;}
978 return 'ok';
Fehler im Fragebogen: Undefined offset: 3
Zeile: 975

PHP-Code

972   $Seq_GUMix[$i] = $Seq_GU_order[$indicesA[$i]];
973 }
974
975 setPageOrder($Seq_GUMix[0], 'S2', $Seq_GUMix[1], 'S3', $Seq_GUMix[2], 'S4', $Seq_GUMix[3], 'GK' );
976
977 ;}
978 return 'ok';


Generell hat das Programm ja so lange funktioniert, bis ich den Block

//Reihenfolge der Gegenüberstellungen speichern
for ($i=0; $i<count($indicesA); $i++) {
  // Kennung der internen Variable aus Frage-Kennung plus Index erstellen
  $id = id('IV52', $i + 1);
  // Hier den Wert aus dem Array speichern
  put($id, $indicesA[$i]);
}

ergänzt habe. Interferiert dieser auf irgendeine Weise mit dem anderen Skript?
asked Nov 4, 2020 in SoSci Survey (dt.) by s137634 (700 points)
closed Nov 4, 2020 by SoSci Survey
Reihenfolge und Position einer Frage speichern

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

...