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

Hallo,

ich möchte gerne eine Frage (A004) erstellen, bei der die auf Rangplatz 1 vergebenen Variablen aus zwei vorherigen Rangordnungs-Fragen (A002 und A003) in zwei Platzhaltern als neue Variable angezeigt werden.

Die Platzhalter funktionieren, jedoch wird im unten aufgeführten Code nur ein numerischer Value und nicht der "Itemtext" der jeweils höchstplatzierten Variablen übertragen.

Dazu habe ich folgendes php Element erstellt:

$auswahl = value('A002');
'A002' $titel = getItemtext('A002', $auswahl); replace('%title%',
$titel);

$auswahl2 = value('A003');
'A003' $titel2 = getItemtext('A003', $auswahl2); replace('%platz%',
$titel2);

question('A004');

Scheinbar ist der Wert aus der "value" Funktion davon abhängig, wie viele Variablen in A002 und A003 überhaupt geordnet wurden. Ich möchte aber den Text derjenigen Variablen haben, welche auf Platz 1 vergeben wurden.

Hat hierzu jemand einen Vorschlag?

Viele Grüße

ago in SoSci Survey (dt.) by s227216 (135 points)

2 Answers

+1 vote

Bei einer Rangordnung haben Sie neben der Frage-Variable A002 noch für jedes Item eine Variable mit dem Rangplatz. Und die brauchen Sie. Beziehungsweise müssen Sie erstmal mit getItems() herausfinden, welche Option auf Platz 1 ist.

$eins = getItems('A002', 'is', 1);
if (!empty($eins)) {
  $auswahl = $eins[0];
  $titel = getItemtext('A002', $auswahl);
  replace('%title%', $titel);
}

Was sagt denn die Debug-Information zu diesem Code?

ago by SoSci Survey (266k points)
Der Code funktioniert nun einwandfrei.

Ich habe den"getItems"-Parameter 'is' zuvor nicht gefunden, nun klappt es wie gewünscht.

Herzlichen Dank!
0 votes

Ich habe leider noch eine Anschlussfrage bezüglich zusätzlicher Filter.

Ich möchte zusätzlich noch so filtern, dass...

1.) ...bei der finalen Frage A004 nur dann Item 1, 2 und 3 angezeigt werden, wenn die Befragten auch für die vorherigen Rangordnungsfragen die entsprechenden Plätze 1, 2 und 3 auch belegt haben.

und

2.) ...dass bestimmte Itemkombinationen aus A002 und A003 dafür sorgen, dass die Items 1,2 oder 3 bei Frage A004 nicht angezeigt wird.

Dabei habe ich das Problem, dass ich nicht genau verstehe wie ich die Reihenfolge der Filterbedingungen formulieren muss, um das Ziel zu erreichen.

Hier mal mein Beispielscode:
//Falls alle 3 Rangplätze bei A002 und A003 besetzt wurden

if ((value('A415') == '3') && (value('A416') == '3')
&& ((value('A415_01') == '1') && (value('A416_24') == '1')||
(value('A415_02') == '1') && (value('A416_25') == '1')||
(value('A415_03') == '1') && (value('A416_26') == '1')||
(value('A415_04') == '1') && (value('A416_27') == '1')))
{
question('A414', '2-3');
}

elseif ((value('A415') == '3') && (value('A416') == '3')
&& ((value('A415_01') == '2') && (value('A416_24') == '2')||
(value('A415_02') == '2') && (value('A416_25') == '2')||
(value('A415_03') == '2') && (value('A416_26') == '2')||
(value('A415_04') == '2') && (value('A416_27') == '2')))
{
question('A414', '1,3');
}

elseif ((value('A415') == '3') && (value('A416') == '3')
&& ((value('A415_01') == '3') && (value('A416_24') == '3')||
(value('A415_02') == '3') && (value('A416_25') == '3')||
(value('A415_03') == '3') && (value('A416_26') == '3')||
(value('A415_04') == '3') && (value('A416_27') == '3')))
{
question('A414', '1-2');
}

//Falls nur jeweils 2 Rangplätze besetzt wurden

if ((value('A415') == '2') && (value('A416') == '2')
&& ((value('A415_01') == '1') && (value('A416_24') == '1')||
(value('A415_02') == '1') && (value('A416_25') == '1')||
(value('A415_03') == '1') && (value('A416_26') == '1')||
(value('A415_04') == '1') && (value('A416_27') == '1')))
{
question('A414', '2-3');
}

elseif ((value('A415') == '2') && (value('A416') == '2')
&& ((value('A415_01') == '2') && (value('A416_24') == '2')||
(value('A415_02') == '2') && (value('A416_25') == '2')||
(value('A415_03') == '2') && (value('A416_26') == '2')||
(value('A415_04') == '2') && (value('A416_27') == '2')))
{
question('A414', '1,3');
}

elseif ((value('A415') == '2') && (value('A416') == '2')
&& ((value('A415_01') == '3') && (value('A416_24') == '3')||
(value('A415_02') == '3') && (value('A416_25') == '3')||
(value('A415_03') == '3') && (value('A416_26') == '3')||
(value('A415_04') == '3') && (value('A416_27') == '3')))
{
question('A414', '1-3');
}

if ((value('A415') == '1') && (value('A416') == '1')
&& ((value('A415_01') == '1') && (value('A416_24') == '1')||
(value('A415_02') == '1') && (value('A416_25') == '1')||
(value('A415_03') == '1') && (value('A416_26') == '1')||
(value('A415_04') == '1') && (value('A416_27') == '1')))
{
question('A414', '2-3');
}

elseif ((value('A415') == '1') && (value('A416') == '1')
&& ((value('A415_01') == '2') && (value('A416_24') == '2')||
(value('A415_02') == '2') && (value('A416_25') == '2')||
(value('A415_03') == '2') && (value('A416_26') == '2')||
(value('A415_04') == '2') && (value('A416_27') == '2')))
{
question('A414', '1,3');
}

elseif ((value('A415') == '1') && (value('A416') == '1')
&& ((value('A415_01') == '3') && (value('A416_24') == '3')||
(value('A415_02') == '3') && (value('A416_25') == '3')||
(value('A415_03') == '3') && (value('A416_26') == '3')||
(value('A415_04') == '3') && (value('A416_27') == '3')))
{
question('A414', '1-3');
}

Ich weiß da gerade nicht wirklich weiter, ich hoffe ich konnte das komplexe Filterchaos einigermaßen klarstellen.

Grüße

ago by s227216 (135 points)
> 1.) ...bei der finalen Frage A004 nur dann Item 1, 2 und 3 angezeigt werden, wenn die Befragten auch für die vorherigen Rangordnungsfragen die entsprechenden Plätze 1, 2 und 3 auch belegt haben.

Das machen Sie am besten mit getItems(..., '>', 0) - damit haben sie erstmal ein Array, welche Items Sie zeigen möchten.

Und auf Basis der bestimmten Kombinationen und mit array_diff() können Sie dann immer noch Items entfernen aus dieser Liste. Ich denke, damit sind Sie deutlich kompakter als wenn Sie alle Möglichkeiten abbildern.
...