首页 > 开发 > PHP > 正文

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

2024-05-04 22:57:33
字体:
来源:转载
供稿:网友
<?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."],[";
$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="";
}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表