0 votes
in SoSci Survey (dt.) by s128412 (165 points)

Ich habe nun die zweite Frage als kombinierte Mehrfachauswahl angelegt

1 Answer

+1 vote
by SoSci Survey (328k points)
selected by s128412
 
Best answer

Also ... Ich bisheriger Code war:

$frage = 'ZA01';
$items = array();
for ($i=1; $i<=05; $i++) {
  $itemID = id($frage, $i);
  $antwort = value($itemID);
  if (trim($antwort) != '') {
    replace('%text'.$i.'%', $antwort);
    $items[] = $i;
  }
}
if (count($items) > 0) {
  question('GK01', $items);
}

Ziel ist es aber nicht, die Items in GK01 zu steuern, sondern die Spalten einer kombinierten Frage, bestehend aus GK01 bis GK05.

Dafür müssen wir den Code ein wenig anpassen - und zwar müssen wir die $items noch in Frage-Kennungen umkodieren. Dafür verwenden wir ein Array mit den Kennungen (hier ausfürhlich, das könnte man auch kompakter bauen):

$spalten = array(
  1 => 'GK01',
  2 => 'GK02',
  3 => 'GK03',
  4 => 'GK04',
  5 => 'GK05'
);

Dann wird umkodiert:

$fragen = [];
foreach ($items as $item) {
  $fragen[] = $spalten[$item];
}

Und zuletzt wird die kombinierte Frage angezeigt:

show($fragen);

Nochmal im Gesamten:

$frage = 'ZA01';
$items = array();
for ($i=1; $i<=05; $i++) {
  $itemID = id($frage, $i);
  $antwort = value($itemID);
  if (trim($antwort) != '') {
    replace('%text'.$i.'%', $antwort);
    $items[] = $i;
  }
}

$spalten = array(
  1 => 'GK01',
  2 => 'GK02',
  3 => 'GK03',
  4 => 'GK04',
  5 => 'GK05'
);

$fragen = [];
foreach ($items as $item) {
  $fragen[] = $spalten[$item];
}

question($fragen);

Ich bin ehrlich gesagt nicht sicher, oder question($fragen) ebenfalls funktioniert. Dies können Sie gerne einmal ausprobieren, bevor Sie die Funktion show() verwenden, die sich noch im Teststadium befindet.

by s128412 (165 points)
Super, vielen Dank! Wurden in Frage ZK01 nur 3 von 5 Antworten genannt, werden in der kombinierten Frage auch nur 3 Antwortspalten angezeigt. Allerdings fehlt nun die Spaltenbeschriftung (mit den gegeben Antworten in Frage ZK01)
by SoSci Survey (328k points)
> Allerdings fehlt nun die Spaltenbeschriftung (mit den gegeben Antworten in Frage ZK01)

Wie sie diese in den 5 Fragen eintragen (als "Text über den Items"), ist in der Anleitung beschrieben: https://www.soscisurvey.de/help/doku.php/de:create:combine
by s128412 (165 points)
Also die Spaltenüberschrift habe ich mit %text1%, %text2%, etc. definiert. Da ich mit "show" arbeite (question hat nicht funktioniert), bin ich mir nicht sicher wie ich die Beschriftung anzeigen lassen kann. Entschuldigen Sie, dass ich so viel nachfragen muss.
by SoSci Survey (328k points)
Eigentlich sollten die Platzhalter auch dann korrekt ersetzt werden, wenn man show() verwendet. Sie können *testweise* mit genau diesem Dummy-Text einmal folgendes eingeben und prüfen, ob die Platzhalter dann ersetzt werden:


show($fragen, [
  '%text1%' => 'Inhalt A',
  '%text2%' => 'Inhalt B',
  '%text3%' => 'Inhalt C',
  '%text4%' => 'Inhalt D',
  '%text5%' => 'Inhalt E'
]);

Wenn nicht, dann handelt es sich um einen Programmfehler, den wir zeitnah lösen. Wenn schon, dann müssen wir die Funktion oben ein wenig anpassen.
by s128412 (165 points)
>Wenn nicht, dann handelt es sich um einen Programmfehler, den wir zeitnah lösen. Wenn schon, dann müssen wir die Funktion oben ein wenig anpassen.

Leider werden die Platzhalter noch nicht angezeigt. Bis wann wäre denn eine Lösung des Programmfehlers möglich?
by SoSci Survey (328k points)
Ich hoffe, dass das bis morgen behoben ist - wenn der Fehler dort liegt, wo ich ihn vermute. Ansonsten kann es sein, dass wir nochmal in Ihr Projekt schauen müssen. Nur zur Sicherheit: Es erscheint keine (!) Warnung, dass die Platzhalter noch nicht vorbereitet seien und Sie haben die Platzhalter als "Text über den Items" in die 5 Mehrfachauswahl-Fragen eingetragen, korrekt?
by s128412 (165 points)
Vielen Dank! Korrekt, es erscheint keine Warnung und die Platzhalter habe ich unter "Auswahloptionen"--> "Text über den Optionen" in den Mehrfachauswahlfragen eingetragen.
by SoSci Survey (328k points)
So ... nach einigen Test habe ich zwei Punkte gefunden: (1) Das Problem scheint nicht darin zu liegen, dass mit show() die Platzhalter nicht ersetzt werden, sondern dass die Texte über den Items komplett fehlen und (2) mit question() funktioniert es bei mir auch problemlos!

Könnten Sie bitte nochmal question($fragen) statt dem show($fragen) verwenden und kurz mitteilen, welches Ergebnis Sie bekommen? Danke.
by s128412 (165 points)
Es funktioniert! Vielen herzlichen Dank für Ihre Hilfe- das war echt spitze!
by SoSci Survey (328k points)
Klasse, wenn es nun funktioniert :) Ich habe mir erlaubt, den PHP-Code oben in meiner Anwort noch zu korrigieren.

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

...