DropDown Menü (Javascript) mit PHP. GROSSES FRAGEZEICHEN

disear

Erfahrenes Mitglied
Hallo zusammen,
naja ich bins mal wieder... mit nem Problem das mich jetzt schon einige Zeit beschäftigt.
Ich habe ein DropDown Menü (in Javascript). Ohne mein PHP-Application löift das Menü wunderbar. Nun muss die ganze Seite dynamisch laufen, d.h. alles von der Datenbank. Tjaa und seither spuckt es. Nun mal zum Code:

Hier werden die Menüpunkte in Variablen geladen:
Code:
$menu1=mysql_query("select * from $homepage WHERE page = 1 ORDER by site ASC");
$menu2=mysql_query("select * from $homepage WHERE page = 2 ORDER by site ASC");
$menu3=mysql_query("select * from $homepage WHERE page = 3 ORDER by site ASC");
$menu4=mysql_query("select * from $homepage WHERE page = 4 ORDER by site ASC");
?>

<script type="text/javascript">

var menu2=new Array()
<?
//datenbank anwaehlen und ausgabe der Menueeintraege (1)!
$zahl="0";
while ($seite1 = mysql_fetch_array( $menu2 )) 
{
	$titel=$seite1[titel];
	print "menu$seite1[page][$zahl]='<a href=page.php?lang=$lang&page=$seite1[page]&site=$seite1[site]>$seite1[titel]</a>'
";
	$zahl=$zahl+1;
	}
	?>


var menu3=new Array()
<?
//datenbank anwaehlen und ausgabe der Menueeintraege (2)!
$zahl1="0";
while ($seite2 = mysql_fetch_array( $menu3 )) 
{
	if ($site=="0") {
	}
	else
	{
	$titel=$seite2[titel];
	print "menu$seite2[page][$zahl1]='<a href=page.php?lang=$lang&page=$seite2[page]&site=$seite2[site]>$seite2[titel]</a>'
";
	$zahl1=$zahl1+1;
	}
}
	?>

var menu4=new Array()
<?
//datenbank anwaehlen und ausgabe der Menueeintraege (3)!
$zahl3="0";
while ($seite3 = mysql_fetch_array( $menu4 )) 
{
	$titel=$seite3[titel];
	print "menu$seite3[page][$zahl3]='<a href=page.php?lang=$lang&page=$seite3[page]&site=$seite3[site]>$seite3[titel]</a>'
";
	$zahl3=$zahl3+1;
	}
	?>
hier das Javascript:
Code:
var menuwidth='160px' 
var menubgcolor='#ffffff'
var disappeardelay="250"  
var hidemenu_onclick="no"

//ab hier, keine Veraenderungen mehr!

var ie4=document.all
var ns6=document.getElementById&&!document.all

if (ie4||ns6)
document.write('<div id="dropmenudiv" style="visibility:hidden;width:'+menuwidth+';background-color:'+menubgcolor+'" onMouseover="clearhidemenu()" onMouseout="dynamichide(event)"></div>')

function getposOffset(what, offsettype){
var totaloffset=(offsettype=="left")? what.offsetLeft : what.offsetTop;
var parentEl=what.offsetParent;
while (parentEl!=null){
totaloffset=(offsettype=="left")? totaloffset+parentEl.offsetLeft : totaloffset+parentEl.offsetTop;
parentEl=parentEl.offsetParent;
}
return totaloffset;
}


function showhide(obj, e, visible, hidden, menuwidth){
if (ie4||ns6)
dropmenuobj.style.left=dropmenuobj.style.top=-500
if (menuwidth!=""){
dropmenuobj.widthobj=dropmenuobj.style
dropmenuobj.widthobj.width=menuwidth
}
if (e.type=="click" && obj.visibility==hidden || e.type=="mouseover")
obj.visibility=visible
else if (e.type=="click")
obj.visibility=hidden
}

function iecompattest(){
return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body
}

function clearbrowseredge(obj, whichedge){
var edgeoffset=0
if (whichedge=="rightedge"){
var windowedge=ie4 && !window.opera? iecompattest().scrollLeft+iecompattest().clientWidth-15 : window.pageXOffset+window.innerWidth-15
dropmenuobj.contentmeasure=dropmenuobj.offsetWidth
if (windowedge-dropmenuobj.x < dropmenuobj.contentmeasure)
edgeoffset=dropmenuobj.contentmeasure-obj.offsetWidth
}
else{
var windowedge=ie4 && !window.opera? iecompattest().scrollTop+iecompattest().clientHeight-15 : window.pageYOffset+window.innerHeight-18
dropmenuobj.contentmeasure=dropmenuobj.offsetHeight
if (windowedge-dropmenuobj.y < dropmenuobj.contentmeasure)
edgeoffset=dropmenuobj.contentmeasure+obj.offsetHeight
}
return edgeoffset
}

function populatemenu(what){
if (ie4||ns6)
dropmenuobj.innerHTML=what.join("")
}


function dropdownmenu(obj, e, menucontents, menuwidth){
if (window.event) event.cancelBubble=true
else if (e.stopPropagation) e.stopPropagation()
clearhidemenu()
dropmenuobj=document.getElementById? document.getElementById("dropmenudiv") : dropmenudiv
populatemenu(menucontents)

if (ie4||ns6){
showhide(dropmenuobj.style, e, "visible", "hidden", menuwidth)
dropmenuobj.x=getposOffset(obj, "left")
dropmenuobj.y=getposOffset(obj, "top")
dropmenuobj.style.left=dropmenuobj.x-clearbrowseredge(obj, "rightedge")+"px"
dropmenuobj.style.top=dropmenuobj.y-clearbrowseredge(obj, "bottomedge")+obj.offsetHeight+"px"
}

return clickreturnvalue()
}

function clickreturnvalue(){
if (ie4||ns6) return false
else return true
}

function contains_ns6(a, b) {
while (b.parentNode)
if ((b = b.parentNode) == a)
return true;
return false;
}

function dynamichide(e){
if (ie4&&!dropmenuobj.contains(e.toElement))
delayhidemenu()
else if (ns6&&e.currentTarget!= e.relatedTarget&& !contains_ns6(e.currentTarget, e.relatedTarget))
delayhidemenu()
}

function hidemenu(e){
if (typeof dropmenuobj!="undefined"){
if (ie4||ns6)
dropmenuobj.style.visibility="hidden"
}
}

function delayhidemenu(){
if (ie4||ns6)
delayhide=setTimeout("hidemenu()",disappeardelay)
}

function clearhidemenu(){
if (typeof delayhide!="undefined")
clearTimeout(delayhide)
}

if (hidemenu_onclick=="no")
document.onclick=hidemenu
Die Auswahl erfolgt dann hier:
Code:
$auswertung_menu=mysql_query("select * from $homepage WHERE site='0' ORDER BY page ASC ");
			while ($zeile_menu = mysql_fetch_array($auswertung_menu))
			{
				echo
									"<td><table class=menu2 margin=0px><tr><td><a href=page.php?lang=$lang&site=$zeile_menu[site]&page=$zeile_menu[page] onClick='return clickreturnvalue()' onMouseover='dropdownmenu(this, event, menu2, '180px')' onMouseout='delayhidemenu()'>";
									 if ($page=="$zeile_menu[page]"){ echo "<center><b>$zeile_menu[titel]</b></center>
									 ";} else { echo "<center><b>$zeile_menu[titel]</b></center>
									 ";} echo "</a></td></tr></table></td>
									 ";
			}

Ich hoffe ihr findet irgendwo den Fehler... Bin langsam am Verzweifeln und habe schon X-Varianten ausprobiert!!

Besten Dank

Disear
 
Hallo,

Es wäre besser, wenn du die HTML-Ausgabe des PHP-Skriptes postest, denn die ist für JS-Fehler verantwortlich.

Ohne diese kann man unmöglich etwas sagen, da man nicht weiss, was genau da aus der DB kommt.
 
Okay: hier nun die Ausgabe des gesamten Scriptes:

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

var menu2=new Array()
menu2[0]='<a href=page.php?lang=d&page=2&site=0>KELAG AG</a>'
menu2[1]='<a href=page.php?lang=d&page=2&site=1>Credo</a>'
menu2[2]='<a href=page.php?lang=d&page=2&site=2>QM-Zulassungen</a>'
menu2[3]='<a href=page.php?lang=d&page=2&site=3>Ansprechspartner</a>'
menu2[4]='<a href=page.php?lang=d&page=2&site=4>Lieferanteninfo</a>'

Das Javascript ist daselbe!

und unten für die Menüeinträge gibt es folgendes aus:

Code:
<td><table class=menu2 margin=0px><tr><td><a href=page.php?lang=d&site=0&page=2 onClick='return clickreturnvalue()' onMouseover='dropdownmenu(this, event, menu2, '180px')' onMouseout='delayhidemenu()'><center><b>KELAG AG</b></center>

Das Ganze ist nur ein Auszug aus allem

Gruss und danke
Disear
 
Problem gelöst. Ich habe einen kleinen Fehler im Skript gehabt und habe diesen immer wieder übersehen!!

Grüsse
Disear
 
Zurück