TreeView Menü aus MYSQL Datenbank

Hannibal

Erfahrenes Mitglied
Hallo

Ich habe nun nochmal lange im Internet nach eimen Tree View Script gesucht. Ich bin dann auf dTree gestossen, ich finde das sehr gut für meine Zwecke.

Link: http://www.destroydrop.com/javascripts/tree/

Also nun möchte ich dieses Menü aber aus meiner Datenbank abbilden. Soweit klingt dass noch ganz einfach.

Jetz war für mich klar, ich mache ein PHP File welches per Ausgabe das JavaScript mit meinen Menüpunkten zusammenfügt. Doch das geht aber nicht. Wenn ich dass mit Echo zusammenfüge, dann sieht der Quellcode zwar aus wie er soll, aber JavaScript fürt dieses nicht aus.

Wohl eil es Lücken im Quelltext hat. Wie füge ich sowas zusammen dass dies auch funktioniert?

Der Code welcher benötigt wird, ist folgender:

Code:
	<script type="text/javascript">
		<!--

		d = new dTree('d');

		d.add(0,-1,'My example tree');
		d.add(1,0,'Node 1','example01.html');
		d.add(2,0,'Node 2','example01.html');
		d.add(3,1,'Node 1.1','example01.html');
		d.add(4,0,'Node 3','example01.html');
		d.add(5,3,'Node 1.1.1','example01.html');
		d.add(6,5,'Node 1.1.1.1','example01.html');
		d.add(7,0,'Node 4','example01.html');
		d.add(8,1,'Node 1.2','example01.html');
		d.add(9,0,'My Pictures','example01.html','Pictures I\'ve taken over the years','','','img/imgfolder.gif');
		d.add(10,9,'The trip to Iceland','example01.html','Pictures of Gullfoss and Geysir');
		d.add(11,9,'Mom\'s birthday','example01.html');
		d.add(12,0,'Recycle Bin','example01.html','','','img/trash.gif');

		document.write(d);

		//-->
	</script>

Also habe ich versucht diesen Code mit Echo zusammenzufügen. Doch dieser Funktioniert nicht.

Dann habe ich nach langem Googeln einen Forumsbetrag gefunden, in welchem ein Beispiel Script gepostet wurde. Doch dieses Funktioniert ebenfalls nicht.

Hier wäre noch das PHP Beispiel:

PHP:
<?php

$db_host = "localhost";
$db_user = "root";
$db_pass = "";
$db_name = "";

$connection = mysql_connect($db_host, $db_user, $db_pass) or die ("Unable to connect to DB");
mysql_select_db($db_name, $connection);
$query = "SELECT * FROM auth_page ORDER BY pageorder";
$result = mysql_query($query, $connection);

?>
<div class="dtree">
<script type="text/javascript">
<!--
d = new dTree('d');
d.add(0,-1,'Example DB tree');
<?php
while ($row = mysql_fetch_array($result)) {

?>
d.add(<?echo $row[id];?>,<?echo $row[parent];?>,'<?echo $row[title];?>','<?echo $row[name];?>.html');
<?php
}
?>
d.draw();
//-->
</script>
</div>

Ich komme nicht weiter!

Gruss
 
Zuletzt bearbeitet:
Wenn das Script durchläuft wird eine leere Seite angezeigt und der Quelltext der Seite sieht so aus:

PHP:
<html>
<head>
	<title>Intranet Menue Test</title>

	<link rel="StyleSheet" href="dtree.css" type="text/css" />
	<script type="text/javascript" src="dtree.js"></script>

</head>

<body>
<div class="dtree">
<script type="text/javascript">
<!--
d = new dTree('d');
d.add(0,-1,'Example DB tree');
d.add(<br />
<b>Notice</b>:  Use of undefined constant id - assumed 'id' in <b>D:\Daten\Websites\Intranet\dtree\draw_tree.php</b> on line <b>31</b><br />
1,<br />
<b>Notice</b>:  Use of undefined constant parentid - assumed 'parentid' in <b>D:\Daten\Websites\Intranet\dtree\draw_tree.php</b> on line <b>31</b><br />
0,'<br />
<b>Notice</b>:  Use of undefined constant name - assumed 'name' in <b>D:\Daten\Websites\Intranet\dtree\draw_tree.php</b> on line <b>31</b><br />
Home','<br />
<b>Notice</b>:  Use of undefined constant url - assumed 'url' in <b>D:\Daten\Websites\Intranet\dtree\draw_tree.php</b> on line <b>31</b><br />
none.html');
d.add(<br />
<b>Notice</b>:  Use of undefined constant id - assumed 'id' in <b>D:\Daten\Websites\Intranet\dtree\draw_tree.php</b> on line <b>31</b><br />
2,<br />
<b>Notice</b>:  Use of undefined constant parentid - assumed 'parentid' in <b>D:\Daten\Websites\Intranet\dtree\draw_tree.php</b> on line <b>31</b><br />
0,'<br />
<b>Notice</b>:  Use of undefined constant name - assumed 'name' in <b>D:\Daten\Websites\Intranet\dtree\draw_tree.php</b> on line <b>31</b><br />
News','<br />
<b>Notice</b>:  Use of undefined constant url - assumed 'url' in <b>D:\Daten\Websites\Intranet\dtree\draw_tree.php</b> on line <b>31</b><br />
news.php.html');
d.draw();
//-->
</script>
</div>
 
use of undefined constant sagt, dass du entweder Anführungsstriche oder ein $-Zeichen vergessen hast. In deinem Fall sinds die Anführungsstriche:

PHP:
d.add(<?echo $row[id];?>,<?echo $row[parent];?>,'<?echo $row[title];?>',

musst du so ändern:

PHP:
d.add(<?echo $row['id'];?>,<?echo $row['parent'];?>,'<?echo $row['title'];?>',

//edit:
Zur Erklärung:
Eine Konstante ist eigentlich das Gegenteil einer Variable, denn sie verändert sich nicht! Du kannst sie ebenfalls selber festlegen! Das geht wie bei einer Variable nur ohne dem Dollar-Zeichen davor. Sieht dann so aus:

PHP:
constant=value;

Wenn du nun im Script irgendwo

PHP:
echo constant;

schreibst bekommst du "value" als Ausgabe. Wenn du nun aber keine Konstante festgelegt hast und irgendwo, wo ein String sein soll, die Anführungsstriche vergisst, dann kommt die Fehlermeldung, da das Script versucht eine Konstante aufzurufen die es nicht gibt. Auch wenn du eine Variable einsetzt und das $-Zeichen vergisst passiert das. ;) Verstanden? (Sollte ich hier etwas Falsches gesagt haben, bitte ich um Korrektur).
 
Zuletzt bearbeitet:
Mensch und ich such da im zeugs rum :( peinlich.. vielen Dank

jetz sieht der Quelltext der Datei folgendermassen aus. Aber ein Menü wird mir nicht angezeigt. :eek:

PHP:
<html>
<head>
	<title>Intranet Menue Test</title>

	<link rel="StyleSheet" href="dtree.css" type="text/css" />
	<script type="text/javascript" src="dtree.js"></script>

</head>

<body>
<div class="dtree">
<script type="text/javascript">
<!--
d = new dTree('d');
d.add(0,-1,'Example DB tree');
d.add(1,0,'Home','none.html');
d.add(2,0,'News','news.php.html');
d.draw();
//-->
</script>
</div>
 
Naja, dann muss das ein Fehler im JavaScript sein. Nimm mal den Internet Explorer (wenn verfügbar) (ich weiß, sch*** browser, aber hier findet man einfach den Scriptfehler schneller, wenn man kein Debugger zur Hand hat).

Wenn du dann links unten in der Statusleiste ein gelbes Dreieck mit Rufzeichen siehst, musst du doppelklicken, dann siehst du (wenn du dir die Details anzeigen lässt), in welcher Zeile welcher Fehler ist. Besser wäre allerdings ein Debugger. Wäre nicht so umständlich.
 
Zurück