<?php
/*******************************************
**********功能:php二級聯動菜單*************
**********作者:衝星*************************
**********Email:[email protected]**************
**********日期:2004/10/02******************
**********請轉載時保留版權信息**************
*******************************************/
require_once('db.inc.php');//數據庫連接
$db=new hq_online;
$db1=new hq_online;
$db->query("select * from news_bclass order by id desc");
$fMenu="";
$fValue="";
while($db->next_record()){
$fMenu.="/"".$db->Record["bname"]."/",";
$fValue.="/"".$db->Record["id"]."/",";
}
$fMenu=substr($fMenu,0,(strlen($fMenu)-1));
$fMenu="[".$fMenu."]";//*****************************得到var fMenu
$fValue=substr($fValue,0,(strlen($fValue)-1));
$fValue="[".$fValue."]";//*****************************得到var fValue
//得到*****************************var sMenu
$db->query("select * from news_bclass order by id desc");
while($db->next_record()){
$parentid=$db->Record["id"];
$db1->query("select * from news_sclass where parentid='$parentid' order by parentid desc");
while($db1->next_record()){
$num=$db1->num_rows();
$i++;
$sMenu.="/"".$db1->Record["sname"]."/",";
if($i==$num){
$sMenu="[".$sMenu."],[";
}
}
// $sMenu1=$sMenu."],[";
}
$sMenu.="]";
$sMenu=str_replace("/",]","/"]",$sMenu);
$sMenu="[".$sMenu."]";
//得到*****************************var sValue
$db->query("select * from news_bclass order by id desc");
while($db->next_record()){
$parentid=$db->Record["id"];
$db1->query("select * from news_sclass where parentid='$parentid' order by parentid desc");
while($db1->next_record()){
$nums=$db1->num_rows();
$j++;
$sValue.="/"".$db1->Record["id"]."/",";
if($j==$nums){
$sValue="[".$sValue."],[";
}
}
}
$sValue.="]";
$sValue=str_replace("/",]","/"]",$sValue);
$sValue="[".$sValue."]";
//echo $fMenu."<br>";
//echo $sMenu."<br>";
//echo $fValue."<br>";
//echo $sValue."<br>";exit;
?>
<div id="tar"></div>
<SCRIPT LANGUAGE="JavaScript" DEFER>
var fMenu = <?php echo $fMenu; ?>;
var fValue = <?php echo $fValue; ?>;
var sMenu = <?php echo $sMenu; ?>;
var sValue = <?php echo $sValue; ?>;
var oWhere = document.all.tar;
var ofMenu = document.createElement("<SELECT name='bigclass'>");
var osMenu = document.createElement("<SELECT name='smallclass'>");
with(oWhere)appendChild(ofMenu),appendChild(osMenu);
createMainOptions();
createSubOptions(0);
ofMenu.onchange = function() {createSubOptions(this.selectedIndex);};
function createMainOptions() {
for(var i=0;i<fMenu.length;i++)ofMenu.options[i] = new Option(fMenu[i],fValue[i]);
}
function createSubOptions(j) {
with(osMenu) {
length=0;
for(var i=0;i<sMenu[j].length;i++)osMenu.options[i] = new Option(sMenu[j][i],sValue[j][i]);
}
}
</SCRIPT>
<?php
/*
調用方法:
將此代碼保存爲文件ld2.php
例如要在write.php頁面放一個二級聯動,則在write.php頁面
要放置二級聯動的地方加一句require_once("ld2.php");
若write.php要向save.php頁面提交數據則在save.php中使用
$bigclass=$_POST["bigclass"];//取得大類的id值
$smallclass=$_POST["smallclass"];//取得小類的id值
接下來就知道該怎麼做了吧……
附表的結構:
可能有的表的結構和我有些不同,但基本點都一樣,修改程序
中對應字段和表名就ok
程序寫的有點亂,不過絕對可以放心的使用
歡迎與我交流探討!
---------------------------------------------------------
大類的表news_bclass結構
CREATE TABLE news_bclass (
id int(11) NOT NULL auto_increment,
bname varchar(10) NOT NULL default '',
PRIMARY KEY (id),
UNIQUE KEY id_2 (id),
KEY id (id)
) TYPE=MyISAM;
字段說明:bname爲大類中文名稱
------------------------------
小類的表news_sclass結構
CREATE TABLE news_sclass (
id int(11) NOT NULL auto_increment,
sname varchar(10) NOT NULL default '',
parentid int(10) NOT NULL default '0',
bname varchar(10) NOT NULL default '',
PRIMARY KEY (id),
UNIQUE KEY id_2 (id),
KEY id (id)
) TYPE=MyISAM;
字段說明:sname爲小類中文名稱
parendid爲大類中的id值
bname爲大類中文名稱
-----------------------------------------------------------
*/
?>
db.inc.php文件的內容
<?php
class hq_online extends db_sql{
var $Host="localhost";
var $Database="hq";
var $User="root";
var $password="";
}