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

Liebes Team,

ich versuche gerade umzusetzen, dass die Antworten auf eine Frage in Messzeitpunkt 1 (CP01_01), in eine Frage übernommen werden, welche zum Messzeitpunkt 2 gefragt wird.
Als Key würde ich den Code zur Identifizierung der Person vewenden. Die Codebestandteile frage ich wie empfohlen in mehreren Fragen ab und speichere Ihn zusammengefügt als interne Variable. Der Key wäre demnach, soweit ich das richtig verstehe, die interne Variable mit dem Gesamtcode. (IV01_01) Der PHP Code zur Bildung der IV01_01 befinden sich weiter vorne im Fragebogen, sowohl in MZP 1 als auch 2.

Nun habe ich folgendes mittels PHP eingefügt, leider funktioniert es noch nicht. Das scheint vllt an der internen Variable zu liegen. Können Sie mir weiterhelfen?

Messzeitpunkt 1:

$key = IV01_01;
$data = array(
  value('CP01_01')
);
dbSet($key, $data);

Fehleranzeige im Debug:

Im PHP-Code trat ein Fehler auf.
Fehler im Fragebogen: Use of undefined constant IV01_01 - assumed 'IV01_01' (this will throw an Error in a future version of PHP)
Zeile: 3
PHP-Code
001 namespace s2survey\questionnaire\environment;
002 
**003 $key = IV01_01;**
004 $data = array(
005   value('CP01_01')
006 );

Messzeitpunkt 2:

Fehleranzeige im Debug:
Im PHP-Code trat ein Fehler auf.

Fehler im Fragebogen: Use of undefined constant IV01_01 - assumed 'IV01_01' (this will throw an Error in a future version of PHP)
Zeile: 3

PHP-Code

001 namespace s2survey\questionnaire\environment;
002 
003 $key = IV01_01;
004 $data = dbGet($key);
005 replace('%Initiative%', $data[0]);
006 return 'ok';

In der Frage:
Denken Sie bitte an die von Ihnen beschriebene Veränderung.

<div style="color:#899DB8; font-style: italic;">%Initiative%</div>

Welche unternehmerischen Ziele könnte diese verfolgen/ verfolgt haben?

Vielen Dank im Voraus!

by s055756 (160 points)
Nachtrag:
Derzeitig wird bei Messzeitpunkt 2 im Platzhalter immer die Antwort übernommen, die der letzte TN in T1 hinterlassen hat, unabhängig vom Code.

1 Answer

0 votes
by SoSci Survey (306k points)

Fangen wir mal mit dieser Zeile PHP-Code an:

$key = IV01_01;

Fehler im Fragebogen: Use of undefined constant IV01_01 - assumed 'IV01_01' (this will throw an Error in a future version of PHP)

Da sind gleich zwei Probleme. Erstens haben Sie die Kennung "IV01_01" ohne Anführungszeichen angegeben. Deshalb mein PHP, dass Sie da eine vordefinierte Konstante verwenden möchten - die es aber nicht gibt. Daher die Warnung.

Der zweite Fehler besteht darin, dass Sie ja nicht für alle Befragten denselben Schlüssel verwenden möchten, sondern einen anderne für jede Person. Wenn IV01_01 also einen eindeutigen Personencode enthält, dann schreiben Sie:

$key = value('IV01_01');

Wenn Sie hingegen die Personenkennung SERIAL aus einem personalisierten Serienmail-Link verwenden wollten, schreiben Sie

$key = caseSerial();

Im zweiten Fragebogen ändern SIe es dann bitte äquivalent.

by s055756 (160 points)
Dankeschön so hat es funktioniert.

Gibt es eine Möglichkeit, dass den Teilnehmenden, die versehentlich eine Fehlerstelle in ihrem Code eingehen, also deren Code im zweiten Messzweitpunkt nicht erkannt wird, keine Fehleranzeige gezeigt wird?

Derzeitig sieht das wie folgt aus:
Hinweis (Seite 4)
Für den Schlüssel 45ttvvvvvv44 liegen in der Datenbank keine Daten vor.
Fehler im Fragebogen (Seite 4)
Für die Funktion replace() wurden nicht ausreichend Argumente angegeben, 2 Argumente sind zwingend erforderlich. Weitere Details finden Sie in der Anleitung zur Funktion.
Fehler im Fragebogen (Seite 4)
Im PHP-Code trat ein Fehler auf.
Fehler im Fragebogen: Trying to access array offset on value of type bool
Zeile: 5

PHP-Code

002
003 $key = value('IV01_01');
004 $data = dbGet($key);
005 replace('%Initiative%', $data[0]);
006 return 'ok';

Die Teilnehmenden kann ich vermutlich dennoch ihrem Anfangscode zuordnen, solange sich nur geringe Fehler einschleichen. Dass die übernommen Antwort nicht angezeigt werden kann ist klar, würde es gehen, dass bei den Teilnehmenden wo der Fragebogen keinen passenden 1.Code findet, das ganze ohne Fehleranzeige durchgeht und einfach die übernehmende Antwort weggelassen wird? Diese dient nur als Erinnerung und ist kein zwingendes Muss.

Danke für Ihre Ideen !
by SoSci Survey (306k points)
> Hinweis (Seite 4)
> Für den Schlüssel 45ttvvvvvv44 liegen in der Datenbank keine Daten vor.

Hinweise (orange) sehen ohnehin nur Sie als Projektleiter:in, Befragte sehen nur Fehler (rot).

Aber im PHP-Code sollten Sie das natürlich trotzdem abfangen:

$key = value('IV01_01');
$data = dbGet($key);
if ($data) {
  replace('%Initiative%', $data[0]);
} else {
  // z.B. repeatPage() verwenden oder text() zum Anzeigen einer Meldung
}
by s055756 (160 points)
Vielen Dank, das sieht schon viel besser aus.
Bei den Teilnehmenden die nun keinem Code aus MZP 1 zugeordnet werden konnten, wird der Platzhalter:
%Initiative%
angezeigt. Gibt es eine Möglichkeit, mit der bei diesen Teilnehmenden der Platzhalter weggelassen wird?

Vielen Dank !
by SoSci Survey (306k points)
Sie können den Platzhalter natürlich einfach mit einem leeren String belegen:

if ($data) {
  replace('%Initiative%', $data[0]);
} else {
  replace('%Initiative%', '');
}

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

...