麻辣堂|资源主站|开发论坛|在线手册
首页 Apache Linux Java MySQL 注册帮助 
PHP项目开发组是PHP开发资源网于2007组年建成立的项目开发团队,目前核心开发成员有27人, 项目协作成员8名.下设7个开发组,主要承接大/中型网站项目开发任务。

    由于开发任务较多,人员比较紧张,现面向社会招聘全职或者兼职开发人员,不管你是在校大学生,还是全职开发人员,以及SOHO都可以联系本站,我们可以长期合作,并为您带来丰厚的报酬。
  您现在的位置:PHP开发资源网 > 麻辣堂 > 详细资料
待解决
村中有兄弟要的那种 下拉式 导航菜单
悬赏分:20 - 2007年06月07日

有村子兄弟要的那种 下拉式 导航菜单,与 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 文件


下面是测试效果图:

提问者:redblade   06-07 06:06
答复
路过。。。顺便帮顶:)
回答者:玉米づ冰冻可乐 - 瓦岗村民 8-22 09:10
我也来回答:
不管你有没有帮助我们,瓦岗寨8万村民将感谢你。。。。。

为防止灌水,您需要计算一道数学题: 答案:
46 + 57 = ? 请将计算结果填在上面

 
[]
©2007 PhpRes.COM