0 votes
in SoSci Survey (dt.) by s260154 (120 points)

Ich erhalte bei dem Versuch, einen Timer einzubauen folgende Fehlermeldung:

Für den Platzhalter %timeLeft% wurde weder ein Eingabefeld mit prepare_input() vorbereitet, noch ein Inhalt mit replace() festgelegt.

Wie kann ich diesen Fehler beheben, sodass der Timer funktioniert?

Ich habe die Programmierung entsprechend der Anleitung zu Timer: Countdown über mehrere Seiten vorgenommen.

Für den Fall, dass weitere Informationen benötigt werden, gerne Bescheid geben.

Vielen Dank vorab!

1 Answer

0 votes
by SoSci Survey (305k points)

In der Anleitung (oder auch hier) gibt es unterschiedliche Codes für Timer. Sie haben einen ausgewählt, der auch eine PHP-Komponente braucht, welche den Platzhalter %timeLeft% füllt. Ergänzen Sie bitte den fehlenden PHP-Code, um den Fehler zu beheben.

by s260154 (120 points)
Vielen Dank für die Antwort.

Das Problem besteht leider weiterhin. Ich habe die "Anleitung" Countdown über mehrere Seiten übernommen, und die angegeben Codes, PHP Elemente etc. eingefügt.

Wo muss ggf. zusätzlich die Variable bzw. der Platzhalter %timeleft% wie definiert werden?
by SoSci Survey (305k points)
by s260154 (120 points)
Lediglich die folgenden Informationen werden in der Debug-Information angezeigt:

[Information]    Interview gestartet (neue Nummer 54)
[Information]    Der Fragebogen base im Projekt TestentwicklungWS2324 wird verwendet
[Verarbeitung]    Erstelle Seite 2 in Fragebogen base
[Inhalt]    Erstelle Frage MD08

Die Fehlerkonsole liefert folgende Fehler:

Uncaught SyntaxError: expected expression, got '%'

Uncaught SyntaxError: missing } after function body

note: { opened at line 482, column 28
by SoSci Survey (305k points)
Wie lautet denn der PHP-Code, den Sie zur Einbindung von MD08 verwendet haben?

> Uncaught SyntaxError: missing } after function body

Posten Sie gerne auch einen Pretest-Link direkt zur betroffenen Fragebogen-Seite.
by s260154 (120 points)
Der PHP Code ist der folgende, der auch auf der Seite der Anleitung angegeben ist:

// JavaScript zur Anzeige der verbleibenden Zeit
$timeLeft = $timeout - time();
// Statt JS01 muss hier die Kennung des Textes eingetragen werden
show('MD08', array(
  '%timeLeft%' => $timeLeft
));

_____

Link zum Pretest: https://www.soscisurvey.de/TestentwicklungWS2324/?act=whcWlGaNKEnGNZgPZBY1M7u2
by SoSci Survey (305k points)
Danke für den Pretest-Link. Soweit ich dort sehe, ist MD08 doppelt in die Seite eingebunden. Vermutlich einmal in die Seite "gezogen" und einmal per PHP-Code. Entfernen Sie das MD08 Element bitte von der Seite, sodass es nur noch per PHP-Code eingebunden wird.
by s260154 (120 points)
Dies hatte ich bereits in einer vorherigen Fehlersuche behoben, aktuell ist MD08 lediglich über den PHP Code eingebunden und der Fehler erscheint leider dennoch.
by SoSci Survey (305k points)
Nun, auf der rechten Seite wird eindeutig angezeigt, dass MD08 doppelt eingebunden ist. Und im Quellcode der HTML-Seite sehe ich, dass der Platzhalter bei der ersten Einbindung nicht ersetzt wird. Auf welche Weise dies erfolgt, kann ich Ihnen ohne Kenntnis der kompletten Seite (also, was neben dem PHP-Code dort noch steht) nicht sagen. Was sagt denn die Debug-Information dazu?
by s260154 (120 points)
Vielen Dank für die Hinweise! Nun wird der Timer angezeigt, auch die Weiterleitung zur letzten Seite bei Ablauf konnte ich realisieren.

Gibt es final noch eine Codezeile, die verhindert, dass der Timer neu beginnt und wieder bei der Startzeit angezeigt wird, wenn man die Seite im Browser aktualisiert/neu lädt?

Vielen Dank!
by SoSci Survey (305k points)
Dafür müssten Sie die Definition von $timeout im PHP-Code entsprechend anpassen, evtl unter Zuhilfenahme von isset() und registerVariable().

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

...