0 votes
in SoSci Survey (dt.) by s082232 (355 points)
edited by SoSci Survey

Ich möchte anhand einer Filterfrage sowohl die nächsten Items als auch die nächsten Fragen herausfiltern und in eine kombinierte Frage zusammenfassen. Es geht darum, verschiedene Meditationstechniken direkt miteinander zu vergleichen. Bisher habe ich das mit kombinierten Fragen und $techniken = getItems('ER01', 'min', 2); gut geschafft. Aber nun möchten wir die Liste der Techniken reduzieren, sodass die Teilnehmer nur zu den Techniken Aussagen geben, die sie kennen, und nur die dazugehörigen Fragen gestellt bekommen.

Ich habe es mit folgendem php-Code versucht:

$itemliste= getItems('ER01', 'min', 2);
$fragen = array(
  1 => 'MA01',
  2 => 'MA02',
  3 => 'MA03',
  4 => 'MA04',
  5 => 'MA05',
);
$frageliste = array();
for ($i=0; $i<count($itemliste); $i++) {
  $item_kenn = $itemliste[$i]; // Einer der genutzten Dienste (1 bis 6)
  $frage_kenn = $fragen[$item_kenn];  // Die entspr. Frage
  $frageliste[] = $frage_kenn;
}
question($frageliste, 'gap=20');

Nur leider bekomme ich folgende Fehlermeldung:

Im PHP-Code trat ein Fehler auf.

Fehler im Fragebogen: Undefined offset: 6
Zeile: 14

PHP-Code

011 $frageliste = array();
012 for ($i=0; $i<$anzahl; $i++) {
013   $item_kenn = $itemliste[$i]; 
014   $frage_kenn = $fragen[$item_kenn];  
015   $frageliste[] = $frage_kenn;
016 }
017 question($frageliste, 'gap=20');

Und es werden wieder alle 20 Items angezeigt, obwohl ich nur 10 ausgewählt hatte.

Können Sie mir bitte weiterhelfen? Vielen lieben Dank!

1 Answer

+1 vote
by SoSci Survey (302k points)

In der Fehlermeldung erscheint ein anderer PHP-Code (einer mit $anzahl) als jener, den Sie oben gepostet haben?!

Was auf jeden Fall fehlt ist das $itemliste in question():

question($frageliste, $itemliste, 'gap=20');

... sonst weiß SoSci Survey nicht, dass Sie nur bestimmte Items anzeigen möchten.

by s082232 (355 points)
Vielen Dank! Jetzt stimmt die Anzeige, nur leider kommt immer noch die Fehlermeldung:

Im PHP-Code trat ein Fehler auf.

Fehler im Fragebogen: Undefined offset: 6
Zeile: 12

PHP-Code

009 $frageliste = array();
010 for ($i=0; $i<count($itemliste); $i++) {
011   $item_kenn = $itemliste[$i];
012   $frage_kenn = $fragen[$item_kenn];  
013   $frageliste[] = $frage_kenn;
014 }
015 question($frageliste, $itemliste, 'gap=20');

Was kann ich da tun? Nochmal danke für Ihre Antwort!
by SoSci Survey (302k points)
Sie schreiben in Ihrem Code:

$item_kenn = $itemliste[$i]; // Einer der genutzten Dienste (1 bis 6)

Gleichzeitig kennt Ihre Liste $fragen aber nur 5 (statt 6) Fragen. Daher die Fehlermeldung, nämlich immer, wenn das Item mit der Kennung 6 ausgewählt wurde. Dann kann keine passende Fragekennung ermittelt werden.
by s082232 (355 points)
Das scheint leider nicht die Lösung zu sein. Ich habe es geändert, bekomme aber immer noch dieselbe Fehlermeldung. Als fehlerhaft ist vor allem dieser Ausdruck markiert:

012   $frage_kenn = $fragen[$item_kenn];

Und weiter oben auf der Seite steht auch:
"Die Frage mit der Kennung gibt es im Projekt nicht."
by SoSci Survey (302k points)
Bitte schreiben Sie vor diese Zeile einmal folgendes und posten Sie dann die Debug-Information, die Sie im Debug-Modus erhalten:

debug($fragen);
debug($item_kenn);
by s082232 (355 points)
Hinweis (Seite 4)
Debug-Information für ???:
1MA01, 2MA02, 3MA03, 4MA04, 5MA05
Hinweis (Seite 4)
Debug-Information für ???:
??? = 1 (integer)
Hinweis (Seite 4)
Debug-Information für ???:
1MA01, 2MA02, 3MA03, 4MA04, 5MA05
Hinweis (Seite 4)
Debug-Information für ???:
??? = 2 (integer)
Hinweis (Seite 4)
Debug-Information für ???:
1MA01, 2MA02, 3MA03, 4MA04, 5MA05
Hinweis (Seite 4)
Debug-Information für ???:
??? = 3 (integer)
Hinweis (Seite 4)
Debug-Information für ???:
1MA01, 2MA02, 3MA03, 4MA04, 5MA05
Hinweis (Seite 4)
Debug-Information für ???:
??? = 6 (integer)
Hinweis (Seite 4)
Debug-Information für ???:
1MA01, 2MA02, 3MA03, 4MA04, 5MA05
Hinweis (Seite 4)
Debug-Information für ???:
??? = 7 (integer)
Hinweis (Seite 4)
Debug-Information für ???:
1MA01, 2MA02, 3MA03, 4MA04, 5MA05
Hinweis (Seite 4)
Debug-Information für ???:
??? = 8 (integer)
Hinweis (Seite 4)
Debug-Information für ???:
1MA01, 2MA02, 3MA03, 4MA04, 5MA05
Hinweis (Seite 4)
Debug-Information für ???:
??? = 9 (integer)
Hinweis (Seite 4)
Debug-Information für ???:
1MA01, 2MA02, 3MA03, 4MA04, 5MA05
Hinweis (Seite 4)
Debug-Information für ???:
??? = 10 (integer)
Hinweis (Seite 4)
Debug-Information für ???:
1MA01, 2MA02, 3MA03, 4MA04, 5MA05
Hinweis (Seite 4)
Debug-Information für ???:
??? = 19 (integer)
Hinweis (Seite 4)
Debug-Information für ???:
1MA01, 2MA02, 3MA03, 4MA04, 5MA05
Hinweis (Seite 4)
Debug-Information für ???:
??? = 20 (integer)
by SoSci Survey (302k points)
In der Liste stehen (nach wie vor) nur 5 Frage-Kennungen. Die Indizes sind laut Ihrem Code oben 1, 2, 3, 4, 5.

In den eckigen Klammern darf also auch kein Wert > 5 stehen. Aber laut der Debug-Information versuchen Sie es auch mit den Indizes 6, 7, .... Mir ist ohnehin nicht so ganz klar, warum Sie die Items mit den Fragen in Verbindung bringen. Möchten Sie da überhaupt eine Abhängigkeit? Oder sollen einfach diese 5 Fragen immer als 5 Spalten angezeigt werden? In dem Fall würden Sie die komplette FOR-Schleife unten weglassen und einfach question($fragen, $itemliste) schreiben.
by s082232 (355 points)
Die Items sollen tatsächlich mit den Fragen korrespondieren, da es sich um eine Kreuz-Vergleichsmatrix handelt und nur die Items verglichen werden sollen, die den Teilnehmern bekannt sind. Es sollen also nicht immer alle fünf Spalten angezeigt werden. Wie kann ich denn die Information in den eckigen Klammern anpassen, damit es klappt? Danke für Ihre Hilfe!
Oder soll ich lieber gleich alle 20 Items in den Code mit reinschreiben? Allerdings, falls jemand viele Items kennt, würde es sehr unübersichtlich werden... Kann man das so programmieren, dass es automatisch auf mehrere Seiten gesplittet wird, so dass maximal 5 Spalten auf einer Seite stehen? Das wäre fantastisch!
by SoSci Survey (302k points)
Nun, wenn Sie bis zu 20 Items in der Frage haben, brauchen Sie auch bis zu 20 Fragen in der Variable $fragen (bisher nur 5). Bitte machen Sie sich aber rechtzeitig Gedanken darüber, wie Sie diese Datenmatrix in der Auswertung auch effizient verwerten können.
by SoSci Survey (302k points)
> Kann man das so programmieren, dass es automatisch auf mehrere Seiten gesplittet wird, so dass maximal 5 Spalten auf einer Seite stehen?

Programmieren kann man alles. In 5er-Blöcke aufteilen können Sie ein Array ggf. mittels array_chunk(). Und mittels loopPage() können Sie die Seite dann so oft wiederholen, wie viele Chunks Sie haben. Aber ich empfehle, diesen Schritt erstmal zu verschieben, bis die einfache Variante läuft.
by s082232 (355 points)
edited by s082232
Vielen Dank! Das hat geklappt! Die Datenmatrix wollen wir für eine Multidimensionale Skalierung benutzen, daher benötigen wir alle Vergleiche.

Das andere hat sich erledigt :-)

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

...