php+js实现二级联动下拉菜单(结合mysql数据库)_php和javascript实现二级联动下拉菜单...

本文介绍了如何使用PHP从MySQL数据库获取省份和城市数据,并结合JavaScript实现二级联动下拉菜单。通过PHP获取所有省份和城市信息,存储在数组中,然后在JS中创建一个二维数组用于保存市的信息,利用onChange事件动态生成对应省份的城市选项。
摘要由CSDN通过智能技术生成

数据库test

保存省的数据表province:id,p_name;

保存市的数据表city:id,p_id(对应的省的名字),c_name;

===============================分割线=====================

程序原理:

首先用php语句,把省份的信息都取出来放到一个数组$forum_data[]中,然后把市的信息放到另外一个数组$forum_data2[]中。

因为市的详细信息需要在js中调用,所以在js中写一个二维数组subcat2用来保存所有的市的信息(包括id以及对应的省的id还有对市的名字)。然后在js中定义一个函数 changelocation,在省的那个select中定义一个事件onChange="changelocation(document.myform.bigClass.options[document.myform.bigClass.selectedIndex].value)",把选中的省的id传到函数changelocation中,然后函数根据省的id与二维数组subcat2中的p_id对照,然后生成对应的城市的option。

=================================分割线===================

代码如下:

全动态二级联动下拉列表

//连接数据库

$link = mysql_connect("localhost", "root", "")

or die("Could not connect : " . mysql_error());

mysql_select_db("test") or die("Could not select database");

mysql_query("SET NAMES GBK");

//获取所有的省份的信息

$sqlSel = "select * from province order by id ";

$result = mysql_query($sqlSel) or die("Query failed : " . mysql_error());

$forum_data = array();

while( ($row = mysql_fetch_array($result))!=false )

{

$forum_data[] = $row;

}

mysql_free_result($result);

//获取所有的市的信息

$sqlSel2 = "select * from city order by p_id desc";

if( !($result2 = mysql_query($sqlSel2)) )

{

die ( 'Could not query t_city list' );

}

$forum_data2 = array();

while( ($row2 = mysql_fetch_array($result2))!=false )

{

$forum_data2[] = $row2;

}

mysql_free_result($result2);

?>

var onecount2;

subcat2 = new Array();

$num2 = count($forum_data2);

?>

onecount2=<?php echo $num2;?>;

for($j=0;$j

{

?>

//用subcat2保存所有的市的信息

subcat2[ echo $j;?>] = new Array(" echo $forum_data2[$j]['id'];?>"," echo $forum_data2[$j]['p_id'];?>"," echo $forum_data2[$j]['c_name'];?>");

}

?>

//获取省份的id然后进而生成对应的市的下拉框

function changelocation(id)

{

document.myform.city.length = 0;

var id=id;

var j;

document.myform.city.options[0] = new Option('==选择城市==','');

for (j=0;j < onecount2; j++)

{

if (subcat2[j][1] == id)

{

document.myform.city.options[document.myform.city.length] = new Option(subcat2[j][2], subcat2[j][0]);

}

}

}

地址:

请选择省份

$num = count($forum_data);

for($i=0;$i

{

?>

}

?>

==选择城市==

6598163780727104009.png

6597829529192478273.png

6597983460820365597.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值