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

一个用数据库的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="";

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下拉框二级联动数据库的实现需要前端和后端的配合,前端需要通过JavaScript监听第一个下拉框的变化事件,然后向后端发送Ajax请求获取第二个下拉框的数据。后端需要提供两个接口,一个用于获取第一个下拉框的数据,另一个用于根据第一个下拉框的选择获取第二个下拉框的数据。 以下是一个简单的实现思路: 1.前端代码: ```html <!-- 第一个下拉框 --> <select id="building"> <option value="">请选择公寓</option> <!-- 动态添加选项 --> </select> <!-- 第二个下拉框 --> <select id="dormitory"> <option value="">请选择宿舍</option> <!-- 动态添加选项 --> </select> <script> // 监听第一个下拉框的变化事件 document.getElementById('building').addEventListener('change', function() { // 获取选择的 var buildingId = this.value; // 发送Ajax请求获取第二个下拉框的数据 var xhr = new XMLHttpRequest(); xhr.open('GET', '/findAllDormitory?buildingId=' + buildingId); xhr.onreadystatechange = function() { if (xhr.readyState === 4 && xhr.status === 200) { // 解析返回的数据 var dormitories = JSON.parse(xhr.responseText); // 清空第二个下拉框的选项 var dormitorySelect = document.getElementById('dormitory'); dormitorySelect.innerHTML = '<option value="">请选择宿舍</option>'; // 动态添加选项 dormitories.forEach(function(dormitory) { var option = document.createElement('option'); option.value = dormitory.dormitoryId; option.textContent = dormitory.dormitoryName; dormitorySelect.appendChild(option); }); } }; xhr.send(); }); </script> ``` 2.后端代码: ```python # 定义两个接口 @app.route('/findAllBuilding') def find_all_building(): # 查询公寓表获取数据 buildings = Building.query.all() # 将数据转换为字典列表 building_list = [{'buildingId': building.buildingId, 'buildingName': building.buildingName} for building in buildings] # 返回数据 return jsonify(building_list) @app.route('/findAllDormitory') def find_all_dormitory(): # 获取一级下拉框的选择 building_id = request.args.get('buildingId') # 根据选择查询宿舍表获取数据 dormitories = Dormitory.query.filter_by(buildingId=building_id).all() # 将数据转换为字典列表 dormitory_list = [{'dormitoryId': dormitory.dormitoryId, 'dormitoryName': dormitory.dormitoryName} for dormitory in dormitories] # 返回数据 return jsonify(dormitory_list) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值