0 votes
in SoSci Survey (dt.) by s094803 (160 points)

Ich habe in einem Array drei Nummern für potenzielle Arbeitgeber vorliegen, die aus maximal 25 ausgewählt wurden. In dem Fragebogen sind für alle 25 Arbeitgeber Frageblöcke angelegt.
Nun möchte ich die Nummern der Arbeitgeber in maximal drei Variablen auslesen.

AG01=$neue_liste[0];
AG02=$neue_liste[1];
AG03=$neue_liste[2];

Dieser Befehl funktioniert nicht.

Wie kann ich den ersten Wert des Array $neue_liste in die Variable $AG1, den zweiten Wert in $AG2 und den dritten in $AG3 auslesen? Was passiert, wenn der Array nur einen oder zwei Werte enthält?

Wenn die Werte für $AG1 bis $AG3 vorligen, möchte ich die insgesamt 25 Arbeitgeber wie folgt ansteuern:

Vor dem Block für den ersten Arbeitgeber wird eine Seiten mit der Kennung AG01 eingefügt.

Dazu benötige ich eine Schleife, die von 1 bis 3 die Durchläufe macht und dafür sorgt, dass der jeweilige Arbeitgeber angesprungen wird.

for ($i=1; $i<=3; $i++) // Durchzählen von 1 bis 3

//Hier fehlt noch etwas??

//Der erste Arbeitgeber
if (value('AG01') == 1) {goToPage('LH1');}
// Der zweite Arbeitgeber
if (value('AG01') == 2) {goToPage('PG1');}
// usw. bis Code 25

Jeweils nach dem Block eines Arbeitgebers wird die folgende Abfrage gemacht.
if value ('$i' < 3 {goToPage('AG01');
else goToPage 'PRIV'};

Wenn kein Arbeitgeber angegeben wird, findet ein Sprung an das Ende des Fragebogens statt.

Kann das so funktionieren?

Vielen Dank!

1 Answer

0 votes
by SoSci Survey (328k points)

Wenn ich Sie korrekt verstehe, möchten Sie die Array-Elemente nicht nur in PHP-Variablen auslesen, sondern als Datensatz-Variablen in den Datensatz speichern? Hier für benötigen Sie put() in Verbindung mit internen Variablen.

Was passiert, wenn der Array nur einen oder zwei Werte enthält?

Für diesen Fall müssen Sie das Array entweder mit fehlenden Werten auffüllen (z.B. -1) oder mittels Filter auf utnerschiedliche Array-Längen reagieren. Wenn die $neue_liste sequenziell befüllt wird, dann könnte das etwa so aussehen:

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

Nun zum Anzeigen der Arbeitgeber

//Der erste Arbeitgeber
if (value('AG01') == 1) {goToPage('LH1');}
// Der zweite Arbeitgeber
if (value('AG01') == 2) {goToPage('PG1');}
// usw. bis Code 25 

Die Funktion goToPage() ist nur dafür geeignet, um Seiten zu überspringen. Nicht, um zu einer anderen Seite zu springen und dann zurückzukehren. Versuchen Sie es einmal mit setPageOrder()

$pages = array();
//Der erste Arbeitgeber
if (value('AG01') == 1) { $pages[] = 'LH1'; }
// Der zweite Arbeitgeber
if (value('AG01') == 2) { $pages[] = 'PG1'; }
// usw. bis Code 25 
setPageOrder($pages);

Mit einer Schleife und einem Array, welche AG-Variable zu welcher Seite gehört, ließe es sich auch nochmal deutlich kompakter schreiben.

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

...