Board-Archiv (archivierte Boards zum Lesen, kein Support mehr) > Fragen zu PHP, SQL, Datenbanken
Variable aus Datenbank in Code zwischen den head-Tags einfließen lassen
nettesekel:
Ich habe nach diesem Tutorial https://www.nof-community.de/php-und-mysql-tutorials-und-kurzanleitungen/php-und-mysql-gt-erstellung-von-dynamischen-inhalten/ eine Seite mit FAQ erstellt. Diese FAQ verhalten sich genauso, wie die hier im Forum. Heißt, sie klappen auf klick auf/zu.
Um diese Funktion nutzen zu können bekommt jede Frage eine ID, welche durch die Datenbank generiert wird und bei der Ausgabe an der entsprechenden Stelle platziert ist.
Neben dem html-Code im body-Bereich, müssen diese IDs aber auch in einem Script zwischen den Head-Tags der Seite auftauchen. Das siehst dann so aus:
--- Code: Javascript --- <script type="text/javascript"> animatedcollapse.addDiv('box1', 'fade=0,speed=400,group=boxes,persist=1,hide=1') animatedcollapse.addDiv('box2', 'fade=0,speed=400,group=boxes,persist=1,hide=1') animatedcollapse.addDiv('box3', 'fade=0,speed=400,group=boxes,persist=1,hide=1') animatedcollapse.addDiv('box4', 'fade=0,speed=400,group=boxes,persist=1,hide=1') animatedcollapse.addDiv('box5', 'fade=0,speed=400,group=boxes,persist=1,hide=1') animatedcollapse.addDiv('box6', 'fade=0,speed=400,group=boxes,persist=1,hide=1') animatedcollapse.addDiv('box7', 'fade=0,speed=400,group=boxes,persist=1,hide=1') animatedcollapse.addDiv('box8', 'fade=0,speed=400,group=boxes,persist=1,hide=1') animatedcollapse.addDiv('box9', 'fade=0,speed=400,group=boxes,persist=1,hide=1').........
Auch hier müsste fortlaufend für jede neue Frage/ID eine neue Zeile eingefügt werden. Ich habe mir zunächst so geholfen, dass ich die Zeilen bis ID 30 "auf Vorrat" zwischen die Head-Tags geschrieben habe.
Wenn ich die FAQ jedoch mittels Formular befülle, wäre es ja nicht unpraktisch, wenn mit jeder neuen ID auch ein neuer Eintrag zwischen den Head-Tags generiert würde.
Ist das mit einfachen Mitteln machbar, oder sollte ich da bei meiner Handarbeit bleiben?
Hans K.:
Ja klar ist das machbar, genau für solche Fälle gibt es ja PHP und eine Datenbank. ;-)
Zunächst liest Du aus der Datenbank die Fragen aus. Du musst diese nicht wirklich verarbeiten, es geht nur um die IDs.
--- Code: PHP ---<?php echo "<script type=\"text/javascript\">";$sql = "SELECT ID FROM FAQ"; $result = mysql_query($sql);while ($row = mysql_fetch_array($result)) { echo "animatedcollapse.addDiv('box". $row["ID"] . "', 'fade=0,speed=400,group=boxes,persist=1,hide=1')"; }echo "</script>";?>
Das war es. Wird jetzt eine neue Frage eingetragen, wird automatisch auch eine neue Zeile generiert.
nettesekel:
Ich hatte es schon so ähnlich probiert, aber es hat nicht geklappt...
Das Script geht aber nach diesen Zeilen noch weiter
--- Code: Javascript --- <script type="text/javascript"> animatedcollapse.addDiv('box1', 'fade=0,speed=400,group=boxes,persist=1,hide=1') animatedcollapse.ontoggle=function($, divobj, state){ //fires each time a DIV is expanded/contracted //$: Access to jQuery //divobj: DOM reference to DIV being expanded/ collapsed. Use "divobj.id" to get its ID //state: "block" or "none", depending on state } animatedcollapse.init() </script>
Also müsste ich den Rest des Scripts dann auch mit in diesen Code einbinden? Weil du hast das Script in deinem Beispiel ja schon geschlossen...
Hans K.:
Die Antwort ist eigentlich ganz simpel:
--- Code: PHP ---}echo "</script>";?>Alles was an Code in jeder Zeile mit wiederholt werden muss, kommt vor die geschweifte Klammer. Alles was nur einmal ausgeführt werden darf, muss an die Stelle, wo ich das Script geschlossen habe.
nettesekel:
Ich schreibs nachher mal fertig und wenns wieder nicht geht, poste ich den Code mal. (fubar)
Danke!
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln