Deutschsprachiges NOF - Forum

Support und Tutorials rund um das Thema NetObjects Fusion

collapse

* Alles hat ein Ende...

April 2017

Eine Weisheit der Dakota-Indianer sagt:
"Wenn Du entdeckst, dass Du ein totes Pferd reitest, steig ab!"

Vor fast fünf Jahren habe ich die NOF-Community gegründet und nachdem just zu diesem Zeitpunkt das „alte NOF-Forum“ quasi über Nacht vom Betreiber geschlossen wurde, war mein Forum für viele Nutzer von NetObjects Fusion eine willkommene Alternative.

Inzwischen sind weit über 5000 NetObjects-Nutzer in der NOF-Community registriert und täglich kommen weitere hinzu. An interessierten Mitgliedern fehlt es also nicht. Was aber fehlt, sind Mitglieder, die Lust haben, anderen Nutzern bei der Lösung ihrer vielfältigen Probleme in der Anwendung von NetObjects Fusion zu helfen. Vielleicht, weil viele von ihnen - ebenso wie ich - das Interesse an NOF verloren haben und zwischenzeitlich mit anderen Programmen arbeiten.

Aktuell ist es so, dass der Support wie die Kosten für den Betrieb der NOF-Community fast ausschließlich von mir übernommen werden. Dies, und die Tatsache, dass ich die Arbeit mit NetObjects Fusion nicht mehr für zeitgemäß halte, veranlasst mich, den aktiven Forenbetrieb zu beenden. Die Beiträge, Tipps und Anleitungen aus den letzten Jahren stehen ab heute nur noch als Nachschlagewerk zur Verfügung.

Ich bedanke mich an dieser Stelle ganz herzlich bei allen, die mich und die NOF-Community in den vergangenen Jahren unterstützt haben.

Beste Grüße nettesekel

Die letzten Beiträge

Absturz bei FTP Publizierung
von nettesekel
16. April 2017, 12:51:56

E-Masil Adresse herausfinden
von nettesekel
11. April 2017, 16:16:20

Keine Neuinstallation möglich
von nettesekel
10. April 2017, 16:00:27

Publizieren geht nicht
von musikavokale
09. April 2017, 23:15:50

NOF 15
von nettesekel
04. April 2017, 23:55:26

Feststehender Seitenbereich
von nettesekel
01. April 2017, 17:37:12

Aufklappbare Navigation
von nettesekel
31. März 2017, 12:50:30

Nov 12 zum hare ausreisen
von Jim Panse
26. März 2017, 11:48:03

Lytebox Dateiablage
von fahrzeugseiten
21. März 2017, 23:23:23

* Schatznasen Feed

* Aquablogger Feed

* Strickzeugs Feed

* Links für Katzenfreunde

* ...

Fachanwalt für Internet-Recht C.Schmietenknop

* Friendship

DER Katzenblog – mit tollen Tipps und Ideen für deine Katze(n) <3

Autor Thema: Variable aus Datenbank in Code zwischen den head-Tags einfließen lassen  (Gelesen 1147 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

Offline nettesekel

  • Administrator
  • *****
  • Beiträge: 8181
    • Aquablogger der Aquaristikblog
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
  1.     <script type="text/javascript">
  2.     animatedcollapse.addDiv('box1', 'fade=0,speed=400,group=boxes,persist=1,hide=1')
  3.     animatedcollapse.addDiv('box2', 'fade=0,speed=400,group=boxes,persist=1,hide=1')
  4.     animatedcollapse.addDiv('box3', 'fade=0,speed=400,group=boxes,persist=1,hide=1')
  5.     animatedcollapse.addDiv('box4', 'fade=0,speed=400,group=boxes,persist=1,hide=1')
  6.     animatedcollapse.addDiv('box5', 'fade=0,speed=400,group=boxes,persist=1,hide=1')
  7.     animatedcollapse.addDiv('box6', 'fade=0,speed=400,group=boxes,persist=1,hide=1')
  8.     animatedcollapse.addDiv('box7', 'fade=0,speed=400,group=boxes,persist=1,hide=1')
  9.     animatedcollapse.addDiv('box8', 'fade=0,speed=400,group=boxes,persist=1,hide=1')
  10.     animatedcollapse.addDiv('box9', 'fade=0,speed=400,group=boxes,persist=1,hide=1')
  11. ...
  12. ...
  13. ...

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.

  • Gast
Re: Variable aus Datenbank in Code zwischen den head-Tags einfließen lassen
« Antwort #1 am: 14. November 2014, 20:42:55 »
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
  1. <?php
  2.  
  3. echo "<script type=\"text/javascript\">";
  4. $sql = "SELECT ID FROM FAQ";
  5.  
  6. $result = mysql_query($sql);
  7. while ($row = mysql_fetch_array($result)) {
  8.  
  9. echo "animatedcollapse.addDiv('box". $row["ID"] . "', 'fade=0,speed=400,group=boxes,persist=1,hide=1')";    
  10. }
  11. echo "</script>";
  12. ?>

Das war es. Wird jetzt eine neue Frage eingetragen, wird automatisch auch eine neue Zeile generiert.

Offline nettesekel

  • Administrator
  • *****
  • Beiträge: 8181
    • Aquablogger der Aquaristikblog
Re: Variable aus Datenbank in Code zwischen den head-Tags einfließen lassen
« Antwort #2 am: 14. November 2014, 20:52:56 »
Ich hatte es schon so ähnlich probiert, aber es hat nicht geklappt...

Das Script geht aber nach diesen Zeilen noch weiter

Code: Javascript
  1.     <script type="text/javascript">
  2.     animatedcollapse.addDiv('box1', 'fade=0,speed=400,group=boxes,persist=1,hide=1')
  3.      
  4.     animatedcollapse.ontoggle=function($, divobj, state){ //fires each time a DIV is expanded/contracted
  5.             //$: Access to jQuery
  6.             //divobj: DOM reference to DIV being expanded/ collapsed. Use "divobj.id" to get its ID
  7.             //state: "block" or "none", depending on state
  8.     }
  9.      
  10.     animatedcollapse.init()
  11.     </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.

  • Gast
Re: Variable aus Datenbank in Code zwischen den head-Tags einfließen lassen
« Antwort #3 am: 14. November 2014, 21:16:41 »
Die Antwort ist eigentlich ganz simpel:

Code: PHP
  1. }
  2. echo "</script>";
  3. ?>
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.

Offline nettesekel

  • Administrator
  • *****
  • Beiträge: 8181
    • Aquablogger der Aquaristikblog
Re: Variable aus Datenbank in Code zwischen den head-Tags einfließen lassen
« Antwort #4 am: 14. November 2014, 21:24:19 »
Ich schreibs nachher mal fertig und wenns wieder nicht geht, poste ich den Code mal.  (fubar)
Danke!

Hans K.

  • Gast
Re: Variable aus Datenbank in Code zwischen den head-Tags einfließen lassen
« Antwort #5 am: 14. November 2014, 21:27:11 »
Mach das.  (fubar)

Offline nettesekel

  • Administrator
  • *****
  • Beiträge: 8181
    • Aquablogger der Aquaristikblog
Re: Variable aus Datenbank in Code zwischen den head-Tags einfließen lassen
« Antwort #6 am: 14. November 2014, 23:08:44 »
OK... also ich habe den Code zunächst wie folgt fertiggestellt und zwischen den Head-Tags der Seite an Stelle des eigentlichen Scripts platziert:

Code: PHP
  1. <?php
  2.      
  3.     echo "<script type=\"text/javascript\">";
  4.     $sql = "SELECT ID FROM FAQ";
  5.      
  6.     $result = mysql_query($sql);
  7.     while ($row = mysql_fetch_array($result)) {
  8.      
  9.     echo "animatedcollapse.addDiv('box". $row["ID"] . "', 'fade=0,speed=400,group=boxes,persist=1,hide=1')";    
  10.     }
  11.  
  12.     echo "animatedcollapse.ontoggle=function($, divobj, state){ //fires each time a DIV is expanded/contracted";
  13.     echo "//$: Access to jQuery";
  14.     echo "//divobj: DOM reference to DIV being expanded/ collapsed. Use "divobj.id" to get its ID";
  15.     echo "//state: "block" or "none", depending on state";
  16.     echo "}";
  17.          
  18.     echo "animatedcollapse.init()";
  19.     echo "</script>";
  20.     ?>

(die hier scheinbar fehlenden Maskierungen der " sind vorhanden und werden vom Code-Container nur nicht angezeigt... sehr merkwürdig, im anderen Container sind sie da)


Hierbei taten sich zwei Probleme auf. Nach Publizierung der Seite waren meine Toggle-Menüs plötzlich alle augeklappt. Ein Zeichen dafür, dass das Script nicht mehr korrekt arbeitet.

Ich sah in den Quältext und stellte fest, dass das Script als eine lange Textwurst zwischen den head-tags eingefügt wurde. Also eingefügt wirds schonmal, aber Fehlersuche war bei dieser "Formatierung" echt ne Plage.

Also habe ich mal Tante Goo gefragt, wie ich in PHP einen Zeilenumbruch realisiere. Als ich las wie das geht, erinnerte ich mich, das schon gewußt zu haben, aber man ist ja auch keine 20 mehr, da darf man auch mal was vergessen.  ;-)

Also habe ich den Code durch Zeilenumbrüche ergänzt...

Code: PHP
  1. <?php
  2.      
  3.     echo "<script type="text/javascript">n";
  4.     $sql = "SELECT ID FROM FAQ";
  5.      
  6.     $result = mysql_query($sql);
  7.     while ($row = mysql_fetch_array($result)) {
  8.      
  9.     echo "animatedcollapse.addDiv('box". $row["ID"] . "', 'fade=0,speed=400,group=boxes,persist=1,hide=1')\n";    
  10.     }
  11.  
  12.     echo "\n\n";
  13.     echo "animatedcollapse.ontoggle=function($, divobj, state){ //fires each time a DIV is expanded/contracted\n";
  14.     echo "//$: Access to jQuery\n";
  15.     echo "//divobj: DOM reference to DIV being expanded/ collapsed. Use \"divobj.id\" to get its ID\n";
  16.     echo "//state: \"block\" or \"none\", depending on state\n";
  17.     echo "}\n";
  18.          
  19.     echo "animatedcollapse.init()\n";
  20.     echo "</script>";
  21.     ?>

Das Script zwischen den Head-Tags sieht nun super aus und das Problem mit den offenen Toggle-Panels hat sich mit der Formatierung des Scripts auch erledigt.

Ich gehe mal davon aus, dass bei weiteren Fragen auch die korrekten IDs ins Script geschrieben werden, sind ja jetzt auch exakt die vorhandenen IDs integriert worden.  (clap)
« Letzte Änderung: 14. November 2014, 23:19:03 von nettesekel »

Hans K.

  • Gast
Re: Variable aus Datenbank in Code zwischen den head-Tags einfließen lassen
« Antwort #7 am: 14. November 2014, 23:50:01 »
Sehr gut.  (clap)
Dann hast Du eine Baustelle weniger.  (fubar)

Deutschsprachiges NOF - Forum

Support und Tutorials rund um das Thema NetObjects Fusion