Javascript+PHP == Menü, aber wie?

  • Themenstarter Themenstarter ByeBye 8492
  • Beginndatum Beginndatum
B

ByeBye 8492

Moinsen,

ich hab ne Datenbank, aus der sollen die Menüpunkte ausgelesen werden, die Anzeige wäre in etwa so:

Das Team | Der Standort

Nun gibt es zu diesen Menüpunkten unterpunkte. Diese sollen mittels Mausklick oder Mouseover ausgefahren werden.

Das Problem dabei ist, das die Ganze Sache dynamisch ist ( also das man mittels ACP Menüpunkte hinzufügen kann etc.))

Wie könnte dies gehen?
 
1) JavaScript ist NICHT Java. Ich habe diesbezüglich den Threadtitel geändert.

2) Überlege dir wie der Code aussehen würde, wenn du das Menü statisch programmieren würdest. Es wird in dem Code wohl eine gewisse Wiederholungsstruktur zu finden sein, für die einzelnen Menüpunkte.
Diese generierst du dann über entsprechende Schleifen-Konstruktionen.
 
Stimmt, Java != Java Script :ugly:

Das ist ja das Problem mit der Wiederholungsstruktur.

Manchmal gibt es 6 Menüpunkte, manchmal auch nur 4.
Manchmal gibt es keine Menüunterpunkte und manchmal halt 6 etc.

Ausserdem bin ich nen ziemlicher in Sachen Java Script.
 
PHP:
<?php

	require "inhalt.php";
	$cat	= 	$_GET["cat"];
?>
<html>
<head>
<script type="text/javascript">
<!--

function show(divid) {
document.getElementById("cat1").style.display="none";
document.getElementById("cat2").style.display="none";
document.getElementById("cat3").style.display="none";
document.getElementById("cat4").style.display="none";
document.getElementById("cat5").style.display="none";
document.getElementById("cat6").style.display="none";



document.getElementById(divid).style.display="inline";

}
//-->
</script>

</head>
<body>
<?php
	
	$sql 		= "select id, name, parent_ID as Kategorie from menue where parent_id = ".$cat ."";
	$result		= mysql_query($sql);
	echo "<table border='0' align='right' cellspacing='0'cellpadding='0'><tr><td>";
	while($data = mysql_fetch_assoc($result))
	{
		echo 		"<td class='menue_top'><tr><a class='menue' href='#' onclick=/'show('cat". $data["bid"]."')/'> ".$data["name"]."</a></tr></td> ";
		$beitrag	= "select bid,name, text from beitraege where menue_id = ". $data["id"] ."";
		$ergebniss	= mysql_query($beitrag);
		
		for($i=0; mysql_num_row > $i; $i++)
		{
			$data2 = mysql_fetch_assoc($ergebniss);
				echo "<tr><td><div id='cat $i'><a class='menue' href='index.php?cat=". $data2["bid"]."'> ".$data2["name"]."</a></div></tr>";
		} 
		
	
	}
	echo "</td></tr></table>";
?>

</body>
</html>

Ich habe mir jetzt das DHTML Menü Tutorial zugrunde gelegt und wollte dies umschreiben, leider klappt es auch nicht, müsste aber doch eigentlich, oder?

So habe es mal editiert, wie mache ich " in PHP, ist mir leider entfallen :rolleyes:, denn ich glaube daran hapert es in der Tabelle.

Aber warum klappt er nicht mal auf?
 
Zuletzt bearbeitet von einem Moderator:
PHP:
echo         "<td class='menue_top'><tr><a class='menue' href='#' onclick=/'show('cat". $data["bid"]."')/'> ".$data["name"]."</a></tr></td> ";

Diese Zeile ist sowieso eher unschön... und außerdem escaped man mit \ und nicht mit / ... ;)

ergo:

PHP:
echo "<td class=\"menue_top\"><tr><a class=\"menue\" href='#' onclick=\"show('cat". $data["bid"]."')\"> ".$data["name"]."</a></tr></td>";
 
So ok, hab es mal geändert.

Geht leider immer noch nicht.

PHP:
<?php

	require "inhalt.php";
	$cat	= 	$_GET["cat"];
?>
<html>
<head>
<script type="text/javascript">
<!--

function show(divid) {
document.getElementById("cat1").style.display="none";
document.getElementById("cat2").style.display="none";
document.getElementById("cat3").style.display="none";
document.getElementById("cat4").style.display="none";
document.getElementById("cat5").style.display="none";
document.getElementById("cat6").style.display="none";

document.getElementById(divid).style.display="inline";

}
//-->
</script>

</head>
<body>
<?php
	
	$sql 		= "select id, name, parent_ID as Kategorie from menue where parent_id = ".$cat ." order by name desc";
	$result		= mysql_query($sql);

	while($data = mysql_fetch_assoc($result))
	{
		echo 		"<table border='0' align='right' cellspacing='0' cellpadding='0'><tr><td class='menue_top'><a class='menue' href='#' onclick=\"show('cat". $data["id"]."')\">".$data["name"]."</a>";
		$beitrag	= "select bid,name, text from beitraege where menue_id = ". $data["id"] ."";
		$ergebniss	= mysql_query($beitrag);
		$num		= mysql_num_rows($ergebniss);
		
		while($data2 = mysql_fetch_assoc($ergebniss))
		{
				
				echo "<div id=\"cat". $data["id"] ."\" style=\"display:none\"><a class='menue' href='index.php?bid=". $data2["bid"]."'> ".$data2["bid"]."</a></div>";
		} 
		
	echo "</td></tr></table>";
	}
	
?>

</body>
</html>

Also eigentlich müsste es gehen :(.
 
So ich habs nochmal überarbeitet, nun müsste eigentlich stimme,
er schliesst die Tabellenzelle auch schon, aber sobald man loslässt geht sie wieder auf :confused:

PHP:
<?php

	require "inhalt.php";
	$cat	= 	$_GET["cat"];
?>
<html>
<head>
<script type="text/javascript">
<!--

function show(divid) {
document.getElementById("cat1").style.display="none";
document.getElementById("cat2").style.display="none";
document.getElementById("cat3").style.display="none";
document.getElementById("cat4").style.display="none";
document.getElementById("cat5").style.display="none";
document.getElementById("cat6").style.display="none";

document.getElementById(divid).style.display="inline";

}
//-->
</script>

</head>
<body>
<?php
	
	$sql 		= "select id, name, parent_ID as Kategorie from menue where parent_id = ".$cat ." order by name desc";
	$result		= mysql_query($sql);

	while($data = mysql_fetch_assoc($result))
	{
		echo 		"<table border='0' align='right' cellspacing='0' cellpadding='0'><tr><td class='menue_top'><a class='menue'  href='index.php?menue=". $data["id"]."&cat=". $data["Kategorie"] ."' onclick=\"show('cat1')\">".$data["name"]."</a><br>";
		$beitrag	= "select bid,name, text from beitraege where menue_id = ". $data["id"] ."";
		$ergebniss	= mysql_query($beitrag);
		$num		= mysql_num_rows($ergebniss);
                 
		echo "<div id=\"1\" style=\"display:none\">";
		while($data2 = mysql_fetch_assoc($ergebniss))
		{
				
				echo "<a class='menue' href='index.php?bid=". $data2["bid"]."&cat=". $data["Kategorie"] ."'> ".$data2["name"]."</a><br>";

		} 
		echo "</div>";

	echo "</td></tr></table>";
	}
	
?>

</body>
</html>

So hier die Fehlermeldung aus Firebird:

Fehler: document.getElementById("cat1") has no properties
Quelldatei: http://localhost/firma2/index.php?cat=2&status=aktiv
Zeile: 36

Und ne Info:

Deprecated method document.getSelection() called. Please use window.getSelection() instead.
 
Zuletzt bearbeitet von einem Moderator:
Wenn es hier keiner weiß, wo gibt es Leute die wissen wie mein Problem zu lösen geht?
 

Neue Beiträge

Zurück