![]() |
|
首页 │ Apache │ Linux│ Java│ MySQL│ 注册│帮助 | |||
有村子兄弟要的那种 下拉式 导航菜单,与 MySQL 结合使用的:
请诸位有能者改之,优化之,或者另给出一段好的代码。
如果,我的师傅 tmyu 兄 看到的话,就请你指导一下:
下面是 Menu.php 代码:
[PHP]
<?PHP
include("./includes/TEMPLATE.INC");
include("./includes/adodb/adodb.inc.php");
include("./includes/functions.php");
$db = NewADOConnection('mysql'); // A new connection
$db->Connect("localhost", "root", "password", "website");
$tpl = new template("./templates/");
$tpl -> set_file("main","Menu_body.html");
$tpl -> set_block("main","data_roll","dr"); //注意这里的 block书写顺序
$strSQL = "SELECT max(MenuMain) FROM Menu_config";
$result = query_now($strSQL);
$max_main = $result -> fields['0'];
$tpl -> set_var("Total_Menu",$max_main);
for($i=1; $i<= $max_main; $i++){
// the Max_main
$strSQL = "SELECT max(MenuChild) FROM Menu_config WHERE MenuMain=$i";
$resul = query_now($strSQL);
$max_child = $resul -> fields['0'];
// for the Level 1
$strSQL = "SELECT * FROM Menu_config WHERE MenuMain=$i";
$res = query_now($strSQL);
if(($res -> fields['MenuChild'] == NULL)&&($res -> fields['MenuGrand'] == NULL)){
$str = "Menu" . $res -> fields['MenuMain'];
$max_child = check_set_max($max_child);
set_tpl_vars($str, $res -> fields['MenuName'], $res -> fields['MenuHref'], $max_child);
}
for($j=1; $j<= $max_child; $j++){
//for the max_Grand
$strSQL = "SELECT max(MenuGrand) FROM Menu_config WHERE MenuMain=$i AND MenuChild=$j";
$r_max = query_now($strSQL);
$max_Grand = $r_max -> fields['0'];
$strSQL = "SELECT * FROM Menu_config WHERE MenuMain=$i AND MenuChild=$j";
$re = query_now($strSQL);
if(($re -> fields['MenuGrand']) == NULL){
$str = "Menu" . $re -> fields['MenuMain'] . '_' . $re -> fields['MenuChild'];
$max_Grand = check_set_max($max_Grand);
set_tpl_vars($str, check_set_name($re -> fields['MenuName'],$max_Grand), $re -> fields['MenuHref'], $max_Grand);
}
for($k=1; $k<= $max_Grand; $k++){
$strSQL = "SELECT * FROM Menu_config WHERE MenuMain=$i AND MenuChild=$j AND MenuGrand=$k";
$r = query_now($strSQL);
$str = "Menu" . $r -> fields['MenuMain'] . '_' . $r -> fields['MenuChild'] . '_' . $r -> fields['MenuGrand'];
set_tpl_vars($str, $r -> fields['MenuName'], $r -> fields['MenuHref'], 0);
}
}
}
$tpl->parse('Output', 'main');
// $tpl->p('Output');
// 以下是由修改 PHPlib template.inc 所得的函数,可以实现完全静态输出
$tpl->savetofile("Menu.html","Output");
//置空
$tpl->renew();//至关重要
?>
[/PHP]
下面是 ./includes/functions.php 的代码:
[PHP]
<?php
function query_now($str){
global $db;
$result = $db -> Execute($str);
// $db->SetFetchMode(ADODB_FETCH_ASSOC); // Return associative array
if($result === false) die("Error!Query Error!");
return $result;
}
function set_tpl_vars($str,$MenuName,$MenuHref,$maxCount="0"){
global $tpl;
$tpl -> set_var("stringMenu",$str);
$tpl -> set_var("MenuName",$MenuName);
$tpl -> set_var("MenuHref",$MenuHref);
$tpl -> set_var("MaxCount",$maxCount);
$tpl -> set_var("Break","\n");
$tpl -> parse("dr","data_roll",true);
}
function check_set_max($var){
if($var==''){
$var = "0";
}
return $var;
}
function check_set_name($var,$var2){
if($var2 <> 0){
$var = $var . "◆";
}
return $var;
}
?>
[/PHP]
下面是 ./templates/Menu_body.html 的代码:
CODE: <!-- Start Menu_body.html --> <table width=700 align=center valign=top cellpadding=0 cellspace=0 border=0> <tr> <td height="30"> <script type='text/javascript'> function Go(){return} </script> <script type='text/javascript'> var NoOffFirstLineMenus={[}Total_Menu{]}; // 这是网页中导航条栏目的个数,也就是下面的Menu个数 var LowBgColor='white'; var LowSubBgColor='white'; var HighBgColor='black'; var HighSubBgColor='black'; var FontLowColor='black'; var FontSubLowColor='black'; var FontHighColor='white'; var FontSubHighColor='white'; var BorderColor='#676767'; var BorderSubColor='black'; var BorderWidth=1; var BorderBtwnElmnts=1; var FontFamily="arial,comic sans ms,technical"; var FontSize=9; var FontBold=1; var FontItalic=0; var MenuTextCentered='center'; var MenuCentered='center'; var MenuVerticalCentered='top'; var ChildOverlap=0; var ChildVerticalOverlap=0; var StartTop=40; var StartLeft=1; var VerCorrect=0; var HorCorrect=0; var LeftPaddng=3; var TopPaddng=2; var FirstLineHorizontal=1; var MenuFramesVertical=1; var DissapearDelay=1000; var TakeOverBgColor=1; var FirstLineFrame='navig'; var SecLineFrame='space'; var DocTargetFrame='space'; var TargetLoc=''; var HideTop=0; var MenuWrap=1; var RightToLeft=0; var UnfoldsOnClick=0; var WebMasterCheck=0; var ShowArrow=1; var KeepHilite=1; var Arrws=['tri.gif',5,10,'tridown.gif',10,5,'trileft.gif',5,10]; function BeforeStart(){return} function AfterBuild(){return} function BeforeFirstOpen(){return} function AfterCloseAll(){return} // 数组之间前后不要有空格 <!-- BEGIN data_roll --> {[}stringMenu{]}=new Array("{[}MenuName{]}","{[}MenuHref{]}","",{[}MaxCount{]},20,110);{[}Break{]} <!-- END data_roll --> </script> <script type='text/javascript' src='./templates/menu.js'></script> <noscript>Your browser does not support script</noscript> </td> </tr> </table> <!-- Over Menu_body.html --> |
我会陆续传上来我的测试文件
(包括
1. 修改过的 PHPlib 模板系统
2. 数据库文件 Menu_config.sql
3. Menu.js 文件
)
下面是测试效果图:

