首页 > 新闻动态 > 建站知识 > 内容

php+mysql+ajax 省市县三级联动菜单

发布时间:2015-05-29 16:38:01    来源:郑州网站建设 贝斯特网络    作者:贝斯特网络    浏览量:   

在网站开发时,经常会用到省市县的联动菜单。营业的场景有用户注册时用户的地址,以及用户详细资料页面。有的时候,把某个地区作为查询或者筛选条件时也会用到联动菜单。

作为网站开发人家,省市县联动菜单是必须掌握的本领。

问题1:全国34个省,几百个地级市,几千个县级单位如果全部枚举的话,很累,代码也很多,开发起来也比较慢。理想的做法,也是大家都采用的做法就是 把这些数据存到数据库里面,然后调取数据库中的数据,这样开发和维护起来都比较方便。

问题2: 怎么样让联动起来,比如查询河南省,下级菜单只显示河南省的,而不是所有省的地级市。县级也一样。这就需要  ajax 技术来实现了。


代码如下:

1、 index.php
 

    $conn=mysql_connect("localhost","root","111");//链接数据库
    mysql_select_db("novel");//选择数据库
    mysql_query("set names 'utf8'");//设定字符集    
?>
 
 
 
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/js.js" ></script>
 
 
       
     
     
 
 


2、 data.php 用于接受和处理 下列菜单的动态数据 

    $conn=mysql_connect("localhost","root","111");//链接数据库
    mysql_select_db("novel");//选择数据库
    mysql_query("set names 'utf8'");//设定字符集    
 
//获取级联
$a=isset($_GET['a']) ? $_GET['a'] : "";
if($a == 'getarea')
{
 
//初始化参数
$datagroup = isset($_GET['datagroup']) ? $_GET['datagroup']   : '';
$level     = isset($_GET['level'])     ? intval($_GET['level']) : '';
$v         = isset($_GET['areaval'])   ? $_GET['areaval']       : '0';
 
 
 
$str = '
';
$sql = "SELECT * FROM `web_cascadedata` WHERE `level`=$level And ";
 
if($v == 0)
$sql .= "datagroup='$datagroup'";
else if($v % 500 == 0)
$sql .= "`datagroup`='$datagroup' AND `datavalue`>'$v' AND `datavalue`<'".($v + 500)."'";
else
$sql .= "`datavalue` LIKE '$v.%%%' AND `datagroup`='$datagroup'";
 
$sql .= " ORDER BY orderid ASC, datavalue ASC";
 
$res=mysql_query($sql);
while($row=mysql_fetch_array($res))
{
$str .= '
';
}
 
if($str == '') $str .= '
'; 
echo $str;
exit();
}
 
?>


3、  js.js  用脚本技术post ajax请求到 data,并获取返回值



/*
 * 级联获取城市
 *
 * @access   public
 * @val      string  选择的省枚举值
 * @input    string  返回的select
 * @return   string  返回的option
 */
 
function SelProv(val,input)
{
$("#"+input+"_country").html("
");
 
$.ajax({
url : "data.php?a=getarea&datagroup=area&level=1&areaval="+val,
type:'get',
dataType:'html',
success:function(data){
$("#"+input+"_city").html(data);
}
});
}
 
 
/*
 * 级联选择区县
 *
 * @access   public
 * @val      string  选择的市枚举值
 * @input    string  返回的select
 * @return   string  返回的option
 */
 
function SelCity(val,input)
{
$.ajax({
url : "data.php?a=getarea&datagroup=area&level=2&areaval="+val,
type:'get',
dataType:'html',
success:function(data){
$("#"+input+"_country").html(data);
}
});
}



附件 :php+mysql+jquery+ajax 省市县三级联动菜单 附数据库下载
内附sql文件 : 
本站关键词:省市 菜单
延展阅读

在线客服

  • 我们竭诚为您服务!
  • 我们竭诚为您服务!
  • 我们竭诚为您服务!
  • 电话:400-8631-789

售后服务

  • 我们竭诚为您服务!
  • 电话:400-8631-789