0 votes
in SoSci Survey (dt.) by s227216 (150 points)

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

2 Answers

+1 vote
by SoSci Survey (304k points)
selected by s227216
 
Best answer

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?

by s227216 (150 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
by s227216 (150 points)

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

by SoSci Survey (304k points)
> Es können also mehr als drei pro Frage sein, manchmal aber auch weniger.

Das ist das, was angezeigt wird. Aber in den Fragen sind generell mehr als 3 Optionen angelegt, korrekt? Und ... sind das in beiden Fragen dieselben Optionen, oder unterschiedliche Optionen, die angelegt sind?

Steht der Code 1 also in beiden Fragen für dieselbe Option oder für unterschiedliche Optionen (Items)?
by s227216 (150 points)
Ja, hinterlegt sind dieselben Items, mit denselben Bezeichnungen.

Also die Items A415_01 und A416_01 haben denselben Inhalt, sie können aber nicht beide gleichzeitig in beiden Fragen angezeigt werden.
by SoSci Survey (304k points)
> Ja, hinterlegt sind dieselben Items, mit denselben Bezeichnungen.

Gut, das macht die Sache deutlich einfacher.

Wir brauchen also "nur" die Items, die in  A415 und A416 irgendwo platziert wurden, also einen Code >0 haben:

$itemsA = getItems('A415', 'answered');
$itemsB = getItems('A416', 'answered');
$items = array_merge($itemsA, $itemsB);
// Eventuell noch sortieren
sort($items);

question('A414', $items);
by s227216 (150 points)
So werden mir jetzt bei der letzten Frage alle Items einzeln importiert und nicht jeweils Rang 1 A415 zusammen mit Rang 1 A416 in einem neuen Item zusammen angezeigt.

Das hat vorher mit den Platzhaltern eigentlich gut funktioniert, es scheiterte lediglich daran, dass ich dann die ungewünschten Kombinationen nicht vorher festlegen und das entsprechende item mit der ungewünschten Kombination nicht ausblenden konnte.

Das neue Item soll quasi so aussehen:

Die Person hat "A415_01" und "A416_26". (beide wurden jeweils auf Platz 1 gewählt)

Die Frage soll aber ausgeblendet werden, falls
"Die Person hat "A415_01" und "A416_24"" entstehen würde.
Also wenn gewisse Variablen in A415 und A416 beide eine 1, beide eine 2 oder beide eine 3 bekommen, soll das dazu führen ,dass das entsprechende Item in A414 ausgeblendet wird.
by SoSci Survey (304k points)
> nicht jeweils Rang 1 A415 zusammen mit Rang 1 A416 in einem neuen Item zusammen angezeigt.

Okay, das hatte ich so noch nicht verstanden. Dann eben ...

$items = array_merge(
  getItems('A415', 'is', 1),
  getItems('A415', 'is', 2)
);
if (count($items) > 1) {
  question('A414', $items);
}

> Also wenn gewisse Variablen

Kombinationen können Sie wie folgt "ausblenden".

$items = array_merge(
  getItems('A415', 'is', 1),
  getItems('A415', 'is', 2)
);
sort($items);
if ((count($items) > 1) && ($items != [1,26])) {
  question('A414', $items);
}

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

...