Thread Verfasser: GUL-Sonic
Thread ID: 743
Thread Info
Es gibt 11 Beiträge zu diesem Thema, und es wurde 4424 Mal angesehen.  Ausserdem wurden Dateien angehängt.
 Thema drucken
Datenbankzeilen an Javascript als var übergeben
GUL-Sonic
Guten Morgen,
heute habe auch ich mal eine Frage und zwar geht es darum wie ich aus einer Datenbank mehrere Zeilen einer Spalte als Javascript variable übergeben kann.

Wenn ich jeden Wert einer Zeile per Hand in den Code schreiben würde sehe das so aus

Code 

var Buch = new Array ("Kinder", "Drama", "SciFi");



Wie kann ich es aber hinbekommen das var automatisch durch eine Datenbankabfrage gefüllt wird?

Für Hilfe wäre ich dankbar.
M.f.G.
GUL-Sonic

Merke:
Wirklichkeit ist niemals so konsistent wie ein solider Wahn!
Wink
 
Wemi
Mit PHP?

Dazu muss dann der javascript Code auch an entsprechender Stelle stehen, bzw. die Datenbankanfrage entsprechend früh gemacht werden. Je nach dem ob dein javascript im Header stehen muss, oder erst später im Code auftauchen kann.
 
SuNflOw
Hi,
ich habe dir mal einen kleinen Beispiel Code angefertigt:

Code 

$result = dbquery("SELECT user_name FROM ".DB_USERS." LIMIT 10");
if(dbrows($result) > 0) {
   $str = "";
   while($data = dbarray($result)) {
      if($str != "")
         $str .= ",";
      $str .= '"'.$data['user_name'].'"';
   }
   $script = "<script type='text/javascript'>\n";
   $script .= "var user = new array(".$str.");";
   $script .= "</script>\n";
   
   add_to_head($script); // wenn es in den header soll
   add_to_footer($script); // wenn es in den footer soll
}



Klar man kann das auch mit einer Funktion machen usw. aber so ist es erst mal am einfachsten zu verstehen.

LG,
SuN
________________________________________________
I got my swim trunks and my Flippie-Floppies *-*
 
GUL-Sonic
Hallo und Danke für die Antwort SuNflOw1991,
Deinen Codeschnipsel habe ich mal in abgewandelter Form eingebaut, scheinbar ließt er alle Daten aus nur füllt er die entsprechenden Felder nicht, ich denke aber das dies an einem Fehler im Code liegt, diesen Code habe ich aus einer html Datei genommen und versuche daraus für meine Kids einen php gestützten Vokabeltrainer zu machen.

Code 

$result = dbquery("SELECT * FROM ".DB_GSV_VOCABULARY."");
if(dbrows($result) > 0) {
   $eng = "";
   $ger = "";
   while($data = dbarray($result)) {
      if($eng != "")
         $eng .= ",";
     if($ger != "")
         $ger .= ",";
      $eng .= '"'.$data['english'].'"';
     $ger .= '"'.$data['german'].'"';
   }
}
   add_to_head("<script type='text/javascript'>\n
   var eng = new array(".$eng.");
   var ger = new array(".$ger.");
   var a;
   function voc(language){
         a = Math.floor(ger.length*Math.random())  ;
         if (language=='eng') {
         document.voc_trainer.textfeld1.value= eng[a] ;
         document.voc_trainer.textfeld2.value= '' ;
         document.voc_trainer.textfeld3.value= '' ;
         }
         else {
         document.voc_trainer.textfeld2.value= ger[a] ;
         document.voc_trainer.textfeld1.value= '' ;
         document.voc_trainer.textfeld3.value= '' ;
         }
         }

         function check()  {
         if ( document.voc_trainer.textfeld2.value == ger[a] && document.voc_trainer.textfeld1.value== eng[a] ) {
         document.voc_trainer.textfeld3.value = 'Richtig!'+ ' --\>' +' '+ ger[a] +' '+ 'heisst' +' ' +eng[a] ;
         }
         else { document.voc_trainer.textfeld3.value = 'Leider Falsch!'+ ' --\>' +' '+ ger[a] +' '+ 'heisst' +' ' +eng[a] ;
         }
         }
   </script>\n");

openside();

echo "
<form name='voc_trainer' action='".FUSION_SELF."'>

<input type='TEXT' name='textfeld1'/>
<input type='BUTTON' name='button1' value='lets start' onclick='voc('eng')'/>

<input type='TEXT' name='textfeld2'/>
<input type='BUTTON' name='button2' value='los gehts' onclick='voc('ger')'/>
</br>

<input type='BUTTON' name='button3' value='check' onclick='check()'/>
<input type='TEXT' name='textfeld3' size='50'/ > </form>";
closeside();



Ihr ahnt schon was jetzt kommt, der Klassiker:

Von Javascript habe ich nur wenig Ahnung...
daher finde ich den Fehler nicht.

Wenn Ihr mir hier bitte nochmals auf die Sprünge helfen könntet.
M.f.G.
GUL-Sonic

Merke:
Wirklichkeit ist niemals so konsistent wie ein solider Wahn!
Wink
 
SuNflOw
Hallo,
also ich würde anstelle von:

Code 

document.voc_trainer.textfeld2.value= ger[a] ;


über die IDs arbeiten:

Code 

document.getElementById("textfeld1").value = ger[a];



Natürlich musst du dann dein HTML entsprechend anpassen:

Code 

<input type='text' id='textfeld1' name='textfeld1' />



Ich hoffe dass deine Kids nun fleißig lernen können. :)

Lg,
SuN

P.S.: Für Programmierer ist die "Sprache" selten eine Hürde. Das ist meist nur Google benutzen.

Edit:
Wenn es unbedingt nach dem Namen gehen muss:
http://www.w3schools.com/jsref/met_do...byname.asp
________________________________________________
I got my swim trunks and my Flippie-Floppies *-*
 
GUL-Sonic
Nochmals hi,
das hatte ich bereits versucht

Code 

if (language=='eng') {
         document.getElementById('t1').value = eng[a];
         document.getElementById('t2').value = '';
         document.getElementById('t3').value = '';
         }


und unten im Formular dann

Code 

<input type='TEXT' id='t1' name='textfeld1'/>



das Problem bleibt das gleiche
M.f.G.
GUL-Sonic

Merke:
Wirklichkeit ist niemals so konsistent wie ein solider Wahn!
Wink
 
SuNflOw
Okay, warte kurz.

Edit:
Ich habe den Fehler ausgemacht. Das Problem liegt hier in dem falschen Wert bei onclick. Hier müssen die " escaped werden.

Code 

<input type='BUTTON' name='button1' value='lets start' onclick='voc(\"eng\")'/>



Hier mein kleiner Test:

Code 

<form name='voc_trainer'>
    <input type='text' id='t1'/>
    <input type='BUTTON' name='button1' value='lets start' onclick='voc("eng")'/>
</form>

<script type='text/javascript'>
    var eng = ['hello', 'test'];
    function voc(language){
        if (language=='eng') {
            document.getElementById("t1").value = eng[0] ;
        }
    }
</script>


Hier kein escapen weil ich pures HTML verwende. Das voc("eng") muss bei dir so sein: voc(\"eng\")
Bearbeitet von SuNflOw am 21.01.2016 um 13:39
________________________________________________
I got my swim trunks and my Flippie-Floppies *-*
 
GUL-Sonic
Ich traue es mich ja fast nicht zu sagen, aber das funktioniert auch nicht.
Habe daraufhin mal die funktion umgeschrieben:

Code 

function eng(){
         a = Math.floor(ger.length*Math.random());
         document.getElementById('t1').value = eng[a];
         document.getElementById('t2').value = '';
         document.getElementById('t3').value = '';
         }


und im Button dann:

Code 

<input type='BUTTON' name='button1' value='lets start' onclick='eng()'>


(Das selbe natürlich für das Textfeld2 mit der seutschen Ausgabe.)

Hier wird mir nun im Textfeld1 (oder Textfeld2) als Ausgabe undefinied angezeigt.

Edit:
Hänge mal die bisherige Infusion an zurückgeändert auf Deinen Editpost:
GUL-Sonic hat folgende Datei angehängt:
Du hast nicht die Berechtigung die Anhäge dieses Themas zu sehen.

Bearbeitet von GUL-Sonic am 21.01.2016 um 13:59
M.f.G.
GUL-Sonic

Merke:
Wirklichkeit ist niemals so konsistent wie ein solider Wahn!
Wink
 
SuNflOw
Hallo,
deinen Anhang zum Laufen zu bekommen war ein Krampf. Aber es geht jetzt.

Code 

   
   var eng = [".$eng."];
   var ger = [".$ger."];


"new array(" gibt es anscheinend nicht (mehr).
________________________________________________
I got my swim trunks and my Flippie-Floppies *-*
 
GUL-Sonic
:YAHOO:
1000 Dank SuNflOw1991,
jetzt kann ich das Gerüst drumherum aufbauen, damit es nicht mehr so ein "Krampf" wird (ggf. auch für andere) das alles zum Laufen zu bekommen.

Nochmals herzlichsten Dank für Deine Hilfe.
M.f.G.
GUL-Sonic

Merke:
Wirklichkeit ist niemals so konsistent wie ein solider Wahn!
Wink
 
SuNflOw
Gerne Smile

Viel Erfolg noch.
________________________________________________
I got my swim trunks and my Flippie-Floppies *-*
 
Springe ins Forum: