<?php /******************************************* **********功能:php二級聯動菜單************* **********做者:小光************************* **********Email:somethingok@126.com************** **********日期:2007/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."],["; $i=0; } } } $sMenu.="]"; $sMenu=str_replace("\",]","\"]",$sMenu); $sMenu=str_replace(",[]","]",$sMenu); if((substr($sMenu,0,2))=="[\""){ $sMenu="[".$sMenu; }else{ $sMenu=preg_replace("/\[{3,}/is","[[\\1",$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."],["; $j=0; } } } $sValue.="]"; $sValue=str_replace("\",]","\"]",$sValue); $sValue=str_replace(",[]","]",$sValue); if((substr($sValue,0,2))=="[\""){ $sValue="[".$sValue; }else{ $sValue=preg_replace("/\[{3,}/is","[[\\1",$sValue);//匹配 } ?> <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=""; }