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

Guten Tag,

ich kann nun die Datenbanken für Inhalte nutzen, jedoch wird mir die Frage für die getrennte Datenerhebung für die Gutscheinverlosung nicht angezeigt. Ich habe es nun schon mehrfach mit meiner eigenen E-Mail-Adresse probiert, aber die Frage GK01 wird mir nicht angezeigt.

Anbei meine Syntax:

$key = 'base'.caseSerial();
$current = dbGet($key);

if (!$current) {
  $current = [];
}
$current[0] = 1;

dbSet($key, $current);

if (array_sum($current) == 12) {
  question('GK01');
}

Außerdem ergab sich mir noch die Frage, wo ich die Email-Adressen von der GK_01 (getrennte Datenerhebung)) dann finden kann? Auch in der Datenbank für Inhalte?
Über eine kurze Rückmeldung würde ich mich freuen.

Vielen Dank schon im Voraus für die Unterstützung!

in SoSci Survey (dt.) by s121366 (140 points)

1 Answer

0 votes

Bitte ergänzen Sie einmal ein debug(), um den Inhalt von $current anzuzeigen:

$current[0] = 1;
debug($current);

Wenn Sie nur diesen Fragebogen hier ausfüllen, wird dort immer [1] stehen. Wenn Sie den zweiten Fragebogen ausfüllen mit einer 1 im Index...

$current[1] = 1;
debug($current);

... dann sollte [1,1] als Ergebnis erscheinen. Entsprechend würde array_sum() nun 2 liefern. Wichtig: Wenn Sie nur denselben Fragebogen mehrfach ausfüllen, dann ändert sich der Wert nicht!

Falls Sie durchgängig denselben Fragebogen verwenden möchten, könnten Sie den aktuellen Tag als Index verwenden. Wenn Sie z.B. am 01.03.2020 starten, könnte das so aussehen:

$day = floor((time() - strtotime('2020-03-01 00:00:00')) / 86400);
$current[$day] = 1;
debug($current);
by SoSci Survey (102k points)
Vielen Dank für die schnelle Rückmeldung.

Die Befragten werden 14mal den selben Fragebogen ausfüllen. Ich kann die Erhebung nur leider nicht so organisieren, dass alle Teilnehmer zu den gleichen Zeitpunkten beginnen, sondern 3-4 Erhebungswellen geplant sind. Daher wäre die Anpassung des Tages als Index mit sehr viel Aufwand verbunden. Gibt es hier noch eine weitere Möglichkeit?
> Ich kann die Erhebung nur leider nicht so organisieren, dass alle Teilnehmer zu den gleichen Zeitpunkten beginnen, sondern 3-4 Erhebungswellen geplant sind.

Das sollte kein Problem sein. Testen Sie es doch bitte einfach mal mit '2020-01-01 00:00:00'. Sie sollten dann viele 0er in der Debug-Information sehen, dahinter aber eine oder mehrere 1er. Wenn (!) es damit funktioniert, setzen Sie einfach das Start-Datum für die erste Welle ein und die späteren funktionieren dann ebenfalls.
Ich habe nun alles entsprechend Ihrer Anmerkungen ergänzt und das heutige Datum eingegeben und mir die Debug-Informationen angeschaut. Hier bin ich jedoch unsicher, was Sie genau mit viele 0er und dahinter mehrere 1er meinen und nach wie vor bin ich mir nicht sicher, ob das jetzt auch alles so funktioniert. Gibt es hier eine Möglichkeit, wie man dies testen kann?

Leider habe ich nach wie vor das Problem, dass die getrennte Kontaktdatenabfrage nicht angezeigt wird. Ich wäre Ihnen hier sehr dankbar, wenn Sie mir diesbezüglich helfen könnten.Um dies zu testen, habe ich den Befehl:  if (array_sum($current) == 2) {
  question('GK01');
eingestellt. Jedoch wird mir trotz zweifachem Zusenden und Ausfüllen des Fragebogens keine Frage GK01 angezeigt.
Was zeigt denn die Debug-Information, wenn Sie debug($current) in Ihrem Code ergänzen.

Damit Sie etwas sehen, müssen Sie bei der Test-Adresse (wenn Sie über Serienmails gehen) bitte das Häkchen setzen, damit der Fragebogen für diese Adresse im Debug-Modus startet.
Anbei die Debug-Information der ersten Fragbogenseite:

Debug information for $current:
01, 11

[Information]    Interview number 232 is to be continued
[Information]    Questionnaire base from project test172517 will be used
[Information]    Retention period on page 2 has been 10 seconds
[Processing]    Reading answers from page 2
[Information]    Answer missing for TA01
[Information]    Answer missing for TA01_07
[Information]    Answer missing for AN01
[Information]    Condition in filter AN01/1 is not met.
[Information]    Condition in filter AN01/2 is not met.
[Information]    0% of the questions have been answered so far
[Processing]    Create page 1 in questionnaire base
[Content]    Create question AN20
debug()    Content: 01, 11
[Content]    Create question GK01
Mit einer 1 auf Index 0 und 1 sollte array_sum() den Wert 2 liefern. Wenn Sie es prüfen möchten:

debug($current);
debug(array_sum($current));

Aber das sollte nicht notwendig sein, denn...

> Create question GK01

Offenbar wird die Frage zur Abfrage der Kontaktdaten schon angezeigt?!
Momentan funktioniert manchmal die getrennte Abfrage der Kontaktdaten und manchmal nicht. Ich weiß nicht genau woran es liegt. Kann es vielleicht daran liegen, dass die Befragung aufgrund einer Filterführung mal auf Seite und 7 und mal auf Seite 8 endet? Ich habe zu Beginn zwei Fragen, die immer durchlaufen werden. Kann man die Zählung im Befehl vielleicht an dem Beantworten einer dieser Frage festmachen?
Über eine schnelle Rückmeldung würde ich mich freuen, da ich eigentlich so schnell wie möglich mit meiner Haupterhebung beginnen möchte, aber genau wegen diesem Problem nicht starten kann.

U.s. noch einmal mein Befehl. Diesen habe ich aktuell hinter der zweiten Frage (die immer durchlaufen wird) eingefügt.

$key = 'base'.caseSerial();
$current = dbGet($key);

if (!$current) {
  $current = [];
}
$day = floor((time() - strtotime('2020-02-17 00:00:00')) / 86400);
$current[$day] = 1;
debug ($current);

dbSet($key, $current);

if (array_sum($current) == 12) {
  question('GK01');
}
> Kann es vielleicht daran liegen, dass die Befragung aufgrund einer Filterführung mal auf Seite und 7 und mal auf Seite 8 endet?

Wichtig ist, dass der Code, welche die Teilnahme zählt (also der obige Code) immer aufgerufen wird. Dadurch erfolgt die Zählung.

Sie können (auch) unter "Spezialfunktionen" -> "Datenbank für Inhalte" nachsehen, was gezählt wird und was fehlt. Bitte beachten Sie, dass der obige Code nur eine Teilnahme pro Tag zählt. Und um ehrlich zu sein: Ich bin nicht 100% sicher, ob der Tag nach GMT oder nach CET gezählt wird.
Die einmalige Zählung am Tag könnte natürlich erklären, warum es bislang nicht funktioniert hat. Ich hatte es meistens mit mehreren Fragebögen an einem Tag probiert. Meine Datenbank für Inhalte besteht aktuell aus 4 Spalten (Key, Language, Timestamp, DO). Bei DO stehen jeweils 1en.
>  Bei DO stehen jeweils 1en.

Ein Einser für jeden Tag, an dem teilgenommen wurde. An welcher Stelle der Einser steht, ergibt sich aus dieser Zeile:

$day = floor((time() - strtotime('2020-03-01 00:00:00')) / 86400);

Zum Verständnis: time() liefert die aktuelle Zeit in Sekunden seit dem 01.01.1970. das strototime() liefert denselben Zeitstempel für das angegeben Datum. Und 86400 Sekunden hat ein Tag. Diese Zeile ergibt am 1.3. also den Wert 0 (erste Stelle in der Liste), am 2.3. den Wert 1 und am 4.3. den Wert 3.
...