一个用数据库的php二级联动
作者:网络 来源:佚名 更新时间:2008-02-08 09:27:01
点击:0
/*******************************************
**********功能: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);//匹配
}
?>
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("");
var osmenu = document.createelement("");
with(owhere)appendchild(ofmenu),appendchild(osmenu);
createmainoptions();
createsuboptions(0);
ofmenu.onchange = function() {createsuboptions(this.selectedindex);};
function createmainoptions() {
for(var i=0;i
}
function createsuboptions(j) {
with(osmenu) {
length=0;
for(var i=0;i
}
}
/*
调用方法:
将此代码保存为文件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文件的内容
class hq_online extends db_sql{
var $host="localhost";
var $database="hq";
var $user="root";
var $password="";
}