• Howdy! Welcome to our community of more than 130.000 members devoted to web hosting. This is a great place to get special offers from web hosts and post your own requests or ads. To start posting sign up here. Cheers! /Peo, FreeWebSpace.net
managed wordpress hosting

Some Javascript help (PHP generates)

Corazu

GO HABS GO
NLC
Ok, I'm not that great with javascript, but I've taken a script called TransMenus, and I'm trying to chop it up so that PHP can output it dynamically using details from the DB.

The script is basically a navbar, with dropdown menu's.

PHP:
function navbar($section) {
global $bbuserinfo, $db_site;
if($section == 'head') {
$navbar_script = '<link rel="stylesheet" type="text/css" href="data/css/transmenu.css" /><link rel="stylesheet" type="text/css" href="data/css/styles.css" /><script language="javascript" src="data/js/transmenuC.js" /></script><script language="javascript"> function init() { if (TransMenu.isSupported()) { TransMenu.initialize(); ';
$query = "SELECT * FROM p2h_navbar WHERE navbar_menu='1' AND navbar_parent='0'";
$query = $db_site->query($query);
while($navbara = $db_site->fetch_array($query)) {
if($navbara['navbar_menu'] == 1) {
$navbar_script .= 'menu'.$navbara['navbar_id'].'.onactivate = function() { document.getElementById("'.$navbara['navbar_id'].'").className = "hover"; }; menu'.$navbara['navbar_id'].'.ondeactivate = function() { document.getElementById("'.$navbara['navbar_id'].'").className = ""; }; ';
} else {
$navbar_script .= 'document.getElementById("'.$navbara['navbar_id'].'").onmouseover = function() { ms.hideCurrent(); this.className = "hover"; } document.getElementById("'.$navbara['navbar_id'].'").onmouseout = function() { this.className = ""; } ';
}
}
$navbar_script .= '} } </script>';
} elseif($section == 'body') {
$query = "SELECT * FROM p2h_navbar";
$query = $db_site->query($query);
$navbar_script = '<script language="javascript"> if (TransMenu.isSupported()) { var ms = new TransMenuSet(TransMenu.direction.down, 1, 0, TransMenu.reference.bottomLeft); ';
while($navbara = $db_site->fetch_array($query)) {
if($navbara['navbar_parent']==0) { $navbar_script.= 'var menu'.$navbara['navbar_id'].' = ms.addMenu(document.getElementById("'.$navbara['navbar_id'].'")); '; }
else { 
$query2 = "SELECT * FROM  p2h_navbar WHERE navbar_id='".$navbara['navbar_parent']."'";
$query2 = $db_site->query($query2);
$navbarb = $db_site->fetch_array($query2);
if($navbara['navbar_menu'] != 1) {
$navbar_script .= 'menu'.$navbara['navbar_parent'].'.addItem("'.$navbara['navbar_name'].'", "'.$navbara['navbar_link'].'"); ';
} elseif($navbara['navbar_menu'] == 1) {
$navbar_script .= 'var menu'.$navbara['navbar_id'].' = menu'.$navbara['navbar_parent'].'.addMenu(menu'.$navbara['navbar_parent'].'.items['.$navbarb['navbar_item'].']); ';
$navbar_script .= 'menu'.$navbara['navbar_id'].'.addItem("'.$navbara['navbar_name'].'", "'.$navbara['navbar_link'].'"); ';
}
}
}
$navbar_script .= 'TransMenu.renderAll(); } </script>';
} elseif($section == 'html') {
$query = "SELECT * FROM p2h_navbar WHERE navbar_parent='0'";
$query = $db_site->query($query);
$navbar_script = '<div id="menu">';
while($navbara = $db_site->fetch_array($query)) {
$navbar_script.='<a id="'.$navbara['navbar_id'].'" href="'.$navbara['navbar_link'].'">'.$navbara['navbar_name'].'</a>';
}
$navbar_script.= '</div>';
} else {
p2h_error();
}
return $navbar_script;
}

That is the PHP code I am using, completely from scratch. It output's everything as it should..but for some reason it just isn't working.

The site that offers transmenu's is here.

Examples are on that site.

Anyone who can look into it and help me would be appreciated, I've been working on this for a LONG while..

Regards,
 
I'll just say that the code is very messy. My guess is somewhere with all those quotes, a mistake was made. Like, some of the outputted javascript had mismatched quotes.

Oh, and it will be much easier to spot the error if you post the outputted javascript source.
 
Last edited:
Nope, all the code was fine actually. I figured it out the other day by chance, I missed sticking an onload="init" tag into the <body> tag. It works fine now :)

Regards,
 
Back
Top