0 votes
in SoSci Survey (dt.) by s240585 (140 points)

Hi!

Ich möchte eine Datenbank-Variable in Javascript-Code nutzen. Wenn ich es richtig verstanden habe, kann ich einen Wert aus der "Datenbank für Inhalte" nur mit php-Code auslesen. Diesen kann ich als interne Variable speichern.
Wenn ich die interne Variable im Javascript-Code nutzen möchte, erhalte ich aber die Fehlermeldung, dass die interne Variable mehrfach verwendet wurde ("Items of the following question have been used repeatedly on this page.")

php-Code:

$key = 'MR01'; 
$item = dbGet($key);
put('MR01_03', $item[0]);

Javascript-Code-Ausschnitt aus HTML-Text-Frage:

<script>
const itemCode = document.getElementById("MR01_03")
</script>

Der Aufbau der Seite ist:

  1. MR01 (interne Variable)
  2. php-Code
  3. HTML/Text-Frage (inkl. Javascript)

Vielen Dank!

by SoSci Survey (327k points)
> Wenn ich es richtig verstanden habe, kann ich einen Wert aus der "Datenbank für Inhalte" nur mit php-Code auslesen.

Wofür möchten sie den Wert denn nutzen?

In Ihrem PHP-Code nutzen Sie den Wert ja bereits ... insofern bin ich nicht ganz sicher, was Ihr Ziel ist und ob ich die Frage korrekt verstehe.
by s240585 (140 points)
Der Wert ist ein String, der im Javascript-Code zur Generierung eines Items dient. D.h. ich brauche ihn als Javascript-Variable (bzw. const), die ich idealerweise aus einer Tabelle/Datenbank hole. Im php-Code kann ich Javascript meines Wissens nicht verwenden, oder?

1 Answer

+1 vote
by SoSci Survey (327k points)
selected by s240585
 
Best answer

D.h. ich brauche ihn als Javascript-Variable

Verstehe. Die interne Variable wäre eine Option - aber Sie müssten dann den value des Objekts verwenden.

const itemCode = document.getElementById("MR01_03").value;

Alterantiv können Sie einfach bequem mit einem Platzhalter arbeiten:

$key = 'MR01'; 
$item = dbGet($key);
replace('%text%', json_encode($item), 'html');

Und entsprechend:

const itemCode = %text%;

Das json_encode() kümmert sich um die Anführungszeichen.

by s240585 (140 points)
Super, vielen Dank! Der Platzhalter funktioniert.

Die Verwendung von ".value" hat nicht funktioniert - ich hatte beides zuvor ausprobiert und nur eine Variante genannt.
by SoSci Survey (327k points)
> Die Verwendung von ".value" hat nicht funktioniert

Womöglich haben Sie die Frage MR01 nicht auf die Seite gezogen? Das ist notwendig, damit das versteckte Eingabefeld für die interne Variable überhaupt im HTML-Code (und somit für JavaScript verfügbar) eingebunden wird. Und auch die Reihenfolge ist wichtig: Die Frage muss unter dem put() und über dem JavaScript Code stehen.
by s240585 (140 points)
Danke, dass Sie sich weiter um das Problem gekümmert haben! Die Reihenfolge war tatsächlich falsch.

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

...