分享
 
 
 

一个用数据库的php二级联动

王朝php·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

<?php

/*******************************************

**********功能:php二级联动菜单*************

**********作者:冲星*************************

**********Email:njj@nuc.edu.cn**************

**********日期: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."],[";

$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="";

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有