PDA

Vollstndige Version anzeigen : PHP<->Javascript CodeProblem


pflegeonline
26-05-2004, 20:51
Hallo an alle!
Ich will fr meine Seite ein Men erstellen, bei welchem durch MouseOver ber dem Hauptmenpunkt das zugehrige Submen in einem bis dato unsichtbaren Layer angezeigt wird. Das Problem ist jetzt, dass wenn ich die Menpunkte aus der MySQL-DB hole, werden, wenn ich nacheinander mit der Maus ber die Hauptmenpunkte fahre, alle Submenlayer angezeigt. Zum leichteren verstndnis: http://www.pflegenetzwerk.org

Der Code fr die Mens und die Layer:


<script language="JavaScript" type="text/JavaScript">
<!--
function MM_findObj(n, d) { //v4.01
var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
if(!x && d.getElementById) x=d.getElementById(n); return x;
}
//-->
</script>
<script language="JavaScript" type="text/JavaScript">
<!--

<!--
function MM_reloadPage(init) { //reloads the window if Nav4 resized
if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}

function MM_showHideLayers() { //v6.0
var i,p,v,obj,args=MM_showHideLayers.arguments;
for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v=='hide')?'hidden':v; }
obj.visibility=v; }
}
//-->
</script>
<?php // Custom MainMenu extension...
$database->setQuery("SELECT * FROM #__menu WHERE menutype = 'mainmenu' AND published ='1' AND parent = '0' ORDER BY ordering");
$mymenu_rows = $database->loadObjectList();
$mymenu_content = "";
foreach($mymenu_rows as $mymenu_row) {
// print_r($mymenu_rows);
$mymenulink = $mymenu_row->link;
if ($mymenu_row->type != "url") {
$mymenulink .= "&Itemid=$mymenu_row->id";
}
if ($mymenu_row->type != "separator") {
$mymenu_content .= "<a href="".sefRelToAbs($mymenulink)."" class="mainmenu" onMouseOver="MM_showHideLayers('Layer$mymenu_row->id','','show')">$mymenu_row->name</a> ";
}
}

$database->setQuery("SELECT * FROM #__menu WHERE menutype = 'mainmenu' AND published ='1' AND parent = '3' ORDER BY ordering");
$submenu1_rows = $database->loadObjectList();
$submenu1_content = "";
foreach($submenu1_rows as $submenu1_row) {
// print_r($submenu1_rows);
$submenu1link = $submenu1_row->link;
if ($submenu1_row->type != "url") {
$submenu1link .= "&Itemid=$submenu1_row->id";
}
if ($submenu1_row->type != "separator") {
$submenu1_content .= "<a href="".sefRelToAbs($submenu1link)."" class="mainmenu">$submenu1_row->name</a> ";
}
}

$database->setQuery("SELECT * FROM #__menu WHERE menutype = 'mainmenu' AND published ='1' AND parent = '54' ORDER BY ordering");
$submenu2_rows = $database->loadObjectList();
$submenu2_content = "";
foreach($submenu2_rows as $submenu2_row) {
// print_r($submenu2_rows);
$submenu2link = $submenu2_row->link;
if ($submenu2_row->type != "url") {
$submenu2link .= "&Itemid=$submenu2_row->id";
}
if ($submenu2_row->type != "separator") {
$submenu2_content .= "<a href="".sefRelToAbs($submenu2link)."" class="mainmenu">$submenu2_row->name</a> | ";
}
}

$database->setQuery("SELECT * FROM #__menu WHERE menutype = 'mainmenu' AND published ='1' AND parent = '26' ORDER BY ordering");
$submenu3_rows = $database->loadObjectList();
$submenu3_content = "";
foreach($submenu3_rows as $submenu3_row) {
// print_r($submenu3_rows);
$submenu3link = $submenu3_row->link;
if ($submenu3_row->type != "url") {
$submenu3link .= "&Itemid=$submenu3_row->id";
}
if ($submenu3_row->type != "separator") {
$submenu3_content .= "<a href="".sefRelToAbs($submenu3link)."" class="mainmenu">$submenu3_row->name</a> | ";
}
}
?>

Und hier der Layer-Code:

<div id="mainlayer" style="position: absolute; top:40px; width:700px;">&nbsp;&nbsp;
<div id="Layer3" style="position: absolute; z-index:1; visibility: hidden;">
<font color="#808080"><?php print $submenu1_content; ?></font></div>
<Adiv id="Layer54" style="position: absolute; z-index:1; visibility: hidden;">
<font color="#808080"><?php print $submenu2_content; ?></font></div>

<div id="Layer26" style="position: absolute; z-index:1; visibility: hidden;">
<font color="#808080"><?php print $submenu3_content; ?></font></div>

</div>

Vielleicht hat irgendjemand eine Idee wie man das lsen kann, dass die anderen Layer ausgeblendet werden, wenn einer Aktiv ist!

greetz
Stefan

Marilu
01-06-2004, 13:19
Wenn Du den Code etwas dokumentierst, kann Dir vielleicht geholfen werden. So blickt da ja keiner durch, ohne _sehr_ viel Zeit aufzuwenden.