当前位置:Gxlcms > PHP教程 > 省市区三级联动功能实现的示例(php+MySql+Ajax+jQuery)

省市区三级联动功能实现的示例(php+MySql+Ajax+jQuery)

时间:2021-07-01 10:21:17 帮助过:8人阅读

下面小编就为大家带来一篇使用PHP+MySql+Ajax+jQuery实现省市区三级联动功能示例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

使用PHP+MySql+Ajax+jQuery实现省市区三级联动功能

要求:写一个省市区(或者年月日)的三级联动,实现地区或时间的下拉选择。

实现技术:php ajax

实现:省级下拉变化时市下拉区下拉跟着变化,市级下拉变化时区下拉跟着变化。

使用chinastates表查询

Ajax加载数据

1.这是chinastates表

2.做一个简单php:Ajax_eg.php


  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title></title>
  6. <script src="bootstrap/js/jquery-1.11.2.min.js"></script>
  7. </head>
  8. <style>
  9. .sanji{
  10. margin-left: 550px;
  11. margin-top: 150px;
  12. }
  13. </style>
  14. <body>
  15. <p class="sanji"> </p>
  16. </body>
  17. </html>

3.根据前一个页面做jquery:Ajax_ssq.js


  1. // JavaScript Document
  2. //当页面内容都加载完才执行
  3. $(document).ready(function(e) {
  4. //加载三个下拉列表
  5. $("#sanji").html("<select id='sheng'></select><select id='shi'></select><select id='qu'></select>");
  6. //加载显示数据
  7. //1.加载省份
  8. LoadSheng();
  9. //2.加载市
  10. LoadShi();
  11. //3.加载区
  12. LoadQu();
  13. //当省份选中变化,重新加载市和区
  14. $("#sheng").change(function(){ //当元素的值发生改变时,会发生 change 事件,该事件仅适用于文本域(text field),以及 textarea 和 select 元素。
  15. //加载市
  16. LoadShi();
  17. //加载区
  18. LoadQu();
  19. })
  20. //当市选中变化,重新加载区
  21. $("#shi").change(function(){
  22. //加载区
  23. LoadQu();
  24. })
  25. });
  26. //加载省份信息
  27. function LoadSheng()
  28. {
  29. //取父级代号
  30. var pcode ="0001";
  31. //根据父级代号查数据
  32. $.ajax({
  33. //取消异步,也就是必须完成上面才能走下面
  34. async:false,
  35. url:"load.php",
  36. data:{pcode:pcode},
  37. type:"POST",
  38. dataType:"JSON",
  39. success: function(data){
  40. var str="";
  41. //遍历数组,把它放入sj
  42. for(var k in data){
  43. str=str+"<option value='"+data[k].[0]+"'>"+data[k].[1]+"</option>";
  44. }
  45. $("#sheng").html(str);
  46. }
  47. });
  48. }
  49. //加载市信息
  50. function LoadShi()
  51. {
  52. //取父级代号
  53. var pcode =$("#sheng").val();
  54. //根据父级代号查数据
  55. $.ajax({
  56. //取消异步,也就是必须完成上面才能走下面
  57. async:false,
  58. url:"load.php",
  59. data:{pcode:pcode},
  60. type:"POST",
  61. dataType:"JSON",
  62. success: function(data){
  63. var str="";
  64. //遍历数组,把它放入sj
  65. for(var k in data){
  66. str=str+"<option value='"+data[k].[0]+"'>"+data[k].[0]+"</option>";
  67. }
  68. $("#shi").html(str);
  69. }
  70. });
  71. }
  72. //加载区信息
  73. function LoadQu()
  74. {
  75. //取父级代号
  76. var pcode =$("#shi").val();
  77. //根据父级代号查数据
  78. $.ajax({
  79. //不需要取消异步
  80. url:"load.php",
  81. data:{pcode:pcode},
  82. type:"POST",
  83. dataType:"JSON",
  84. success: function(data){
  85. var str="";
  86. //遍历数组,把它放入sj
  87. for(var k in data){
  88. str=str+"<option value='"+data[k].[0]+"'>"+data[k].[1]+"</option>";
  89. }
  90. $("#qu").html(str);
  91. }
  92. });
  93. }

4.再把数据库连接起来 :load.php,把DBDA重新加载一个方法:JsonQuery


  1. <?php
  2. $pcode = $_POST["pcode"];
  3. require_once "./DBDA.class.php";
  4. $db = new DBDA();
  5. $sql = "select * from chinastates where parentareacode='{$pcode}'";
  6. echo $db->JsonQuery($sql,0);

封装类


  1. <?php
  2. class DBDA{
  3. public $host="localhost";
  4. public $uid="root";
  5. public $pwd="";
  6. public $dbname="0710_info";
  7. /*
  8. query方法:执行用户给的sql语句,并返回相应的结果
  9. $sql:用户需要执行的sql语句
  10. $type:用户需要执行的sql语句的类型
  11. return:如果是增删语句改返回true或false,如果是查询语句返回二维数组
  12. */
  13. public function query($sql,$type=1){//默认true为增删改
  14. $db = new MySQLi($this->host,$this->uid,$this->pwd,$this->dbname);
  15. if(mysqli_connect_error()){
  16. return "连接失败!";
  17. }
  18. $result = $db->query($sql);
  19. if($type==1){
  20. return $result;//增删改语句返回true或false
  21. }else{
  22. return $result->fetch_all();//查询语句返回二维数组
  23. }
  24. }
  25. //此方法用于ajax中用于对取出的数据(二维数组)进行拼接字符串处理
  26. public function StrQuery($sql,$type=1){
  27. $db = new MySQLi($this->host,$this->uid,$this->pwd,$this->dbname);
  28. if(mysqli_connect_error()){
  29. return "连接失败!";
  30. }
  31. $result = $db->query($sql);
  32. if($type==1){
  33. return $result;//增删改语句返回true或false
  34. }else{
  35. $arr = $result->fetch_all();//查询语句返回二维数组
  36. $str = "";
  37. foreach($arr as $v){
  38. $str = $str.implode("^", $v)."|";
  39. }
  40. $str = substr($str, 0,strlen($str)-1);
  41. return $str;
  42. }
  43. }
  44. //此方法用于ajax中用于返回为json数据类型时使用
  45. public function JsonQuery($sql,$type=1){
  46. $db = new MySQLi($this->host,$this->uid,$this->pwd,$this->dbname);
  47. if(mysqli_connect_error()){
  48. return "连接失败!";
  49. }
  50. $result = $db->query($sql);
  51. if($type==1){
  52. return $result;//增删改语句返回true或false
  53. }else{
  54. $arr = $result->fetch_all();//查询语句返回二维(关联)数组
  55. return json_encode($arr);//将数组转换成json
  56. }
  57. }
  58. }

实现效果:

以上就是省市区三级联动功能实现的示例(php+MySql+Ajax+jQuery)的详细内容,更多请关注Gxl网其它相关文章!

人气教程排行