php实现三级级联下拉框


Posted in PHP onApril 17, 2016

这是我在网上查找到的php实现三级级联下拉框的资料,共享个大家,大家一起进步,具体内容如下

index.php:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>Ajax联动菜单</title>
<script language="javascript" type="text/javascript" src="aa.js"></script>
</head>
<body>
<form>
<label>
<select name="sel" id="sel" onChange="showMenu(this.value);">
 <option>一级分类</option>
<?php
$conn = mysql_connect('localhost', 'root', '') or die('Could not connect: ' . mysql_error());
mysql_select_db('fitment', $conn) or die ('Can\'t use database : ' . mysql_error());
mysql_query("set names 'gb2312'");
$str = "SELECT * FROM `fitment_sort` where supid = '0' ORDER BY `id` ASC";
$result = mysql_query($str) or die("Invalid query: " . mysql_error());
if($result)   while ($arr = mysql_fetch_array($result)){
    echo <<<EOD
<option value={$arr["id"]}>{$arr["name"]}</option>
EOD; }
mysql_close($conn);
?>
</select>
</label>
<label>
<select name="sel2" id="sel2" onChange="showMenu2(this.value)">
 <option>二级分类</option>
 </select>
</label>
<label>
<select name="sel3" id="sel3">
 <option>三级分类</option>
</select>
</label>
</form>
<input type=button value="send value" onClick="alert(document.getElementByIdx_x_xx_x_xx('sel').options[document.getElementByIdx_x_xx_x_xx('sel').selectedIndex].text + '-' + document.getElementByIdx_x_xx_x_xx('sel2').options[document.getElementByIdx_x_xx_x_xx('sel2').selectedIndex].text + '-' + document.getElementByIdx_x_xx_x_xx('sel3').options[document.getElementByIdx_x_xx_x_xx('sel3').selectedIndex].text)">
</body>
</html>

aa.js

<!--
var xmlHttp
var xmlHttp2
//函数showMenu(str) - 功能函数1
function showMenu(str) xmlHttp=GetXmlHttpObject()    //调用GetXmlHttpObject()函数,创建XMLHttpRequest对象
if (xmlHttp==null)        //如果创建失败,则 alert ("Browser does not support HTTP Request")
 return 
var url="get2.php"        //定义url , 其主要读取数据库
url=url+"?q="+str
url=url+"&sid="+Math.random()  //Math对象的random方法,取随机数
xmlHttp.onreadystatechange=stateChanged //设置当XMLHttpRequest对象xmlHttp状态改变时调用的函数,注意函数名后不要添加小括号
xmlHttp.open("GET",url,true)  //使用XMLHttpRequest对象的open()方法 , 创建HTTP请求
xmlHttp.send(null)        //使用XMLHttpRequest对象的open()方法 , 发送HTTP请求
}
//函数showMenu(str) - 功能函数1
function showMenu2(str)
{
xmlHttp2=GetXmlHttpObject()    //调用GetXmlHttpObject()函数,创建XMLHttpRequest对象
if (xmlHttp2==null)        //如果创建失败,则 alert ("Browser does not support HTTP Request")
 return 
var url="get2.php"        //定义url , 其主要读取数据库
url=url+"?q2="+str
url=url+"&sid="+Math.random()  //Math对象的random方法,取随机数
xmlHttp2.onreadystatechange=stateChanged2 //设置当XMLHttpRequest对象xmlHttp状态改变时调用的函数,注意函数名后不要添加小括号
xmlHttp2.open("GET",url,true)  //使用XMLHttpRequest对象的open()方法 , 创建HTTP请求
xmlHttp2.send(null)        //使用XMLHttpRequest对象的open()方法 , 发送HTTP请求
}
//函数BuildSel() , 根据返回的的字串 , 重新构建新的下拉菜单控件Select - 功能函数2
function BuildSel(str,sel)   //先清空原来的数据.
  sel.options.length=0;   var arrstr = new Array();   arrstr = str.split(",");
  if(str.length>0)      //循环
    for(var i=0;i<arrstr.length;i++)       var subarrstr=new Array();       subarrstr=arrstr[i].split("|");
      sel.options.add(new Option(subarrstr[1],subarrstr[0]));     sel.options[0].selected=true; }
//函数stateChanged() - 响应HTTP请求状态变化
function stateChanged() //判断XMLHttpRequest对象的readyState属性值是否为4,如果为4表示异步调用完成(注意:异步调用完成 不代表 异步调用成功)
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") //如果异步调用成功 --> XMLHttpRequest对象的status属性值为200 , html文件在本地运行,则xmlHttp.status的返回值为0,故应该加上xmlHttp.status==0
 if(xmlHttp.status==200 || xmlHttp.status==0)     //调用文档对象模型DOM的getElementById()方法查找html文件中的标签txtHint ,
     //innerHTML为IE浏览器中的属性,可以用来更改标签间文本的内容 ,
     //xmlHttp.responseText , 通过XMLHttpRequest的responseText属性来获取数据 responseText,结果为字符串;responseXML,结果为XML形式
//     document.getElementByIdx_x_xx_x_xx("txtHint").innerHTML=xmlHttp.responseText
     BuildSel(xmlHttp.responseText,document.getElementsByTagName_r("*").sel2)
     showMenu2(document.getElementsByTagName_r("*").sel2.value); }
}
//函数stateChanged() - 响应HTTP请求状态变化
function stateChanged2() //判断XMLHttpRequest对象的readyState属性值是否为4,如果为4表示异步调用完成(注意:异步调用完成 不代表 异步调用成功)
if (xmlHttp2.readyState==4 || xmlHttp2.readyState=="complete") //如果异步调用成功 --> XMLHttpRequest对象的status属性值为200 , html文件在本地运行,则xmlHttp.status的返回值为0,故应该加上xmlHttp.status==0
 if(xmlHttp2.status==200 || xmlHttp2.status==0)     //调用文档对象模型DOM的getElementById()方法查找html文件中的标签txtHint ,
     //innerHTML为IE浏览器中的属性,可以用来更改标签间文本的内容 ,
     //xmlHttp.responseText , 通过XMLHttpRequest的responseText属性来获取数据 responseText,结果为字符串;responseXML,结果为XML形式
//     document.getElementByIdx_x_xx_x_xx("txtHint").innerHTML=xmlHttp.responseText
     BuildSel(xmlHttp2.responseText,document.getElementsByTagName_r("*").sel3) }
}
//函数GetXmlHttpObject() - 创建XMLHttpRequest对象,即创建一个异步调用对象
function GetXmlHttpObject() var xmlHttp=null;
try // Firefox, Opera 8.0+, Safari
 xmlHttp=new XMLHttpRequest(); catch (e) //Internet Explorer
 try  xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); catch (e)  xmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); }
return xmlHttp; -->

get2.php

<?php header('Content-Type:text/html;charset=GB2312'); $conn = mysql_connect('localhost', 'root', '') or die('Could not connect: ' . mysql_error());
mysql_select_db('fitment', $conn) or die ('Can\'t use database : ' . mysql_error());
mysql_query("set names 'gb2312'");
//如果传递过来q
if($_GET["q"]){
$strs = "SELECT * FROM fitment_sort WHERE supid=' ".$_GET["q"]."' ";
//echo $str;
$results = mysql_query($strs) or die("Invalid query: " . mysql_error());
if($results)   while ($arrs = mysql_fetch_array($results)){
    $strings .= $arrs["id"]."|".$arrs["name"].",";   }
  echo substr($strings,0,strlen($strings)-1); }
//如果传递过来q2
if($_GET["q2"]){
$str = "SELECT * FROM fitment_sort WHERE supid= '".$_GET["q2"]."'";
//echo $str;
$result = mysql_query($str) or die("Invalid query: " . mysql_error());
if($result)   while ($arr = mysql_fetch_array($result)){
    $string .= $arr["id"]."|".$arr["name"].",";   }   echo substr($string,0,strlen($string)-1); }
mysql_close($conn);
?>

以上就是php实现三级级联下拉框的相关代码,希望对大家学习php程序设计有所帮助。

PHP 相关文章推荐
一步一步学习PHP(3) php 函数
Feb 15 PHP
php设计模式 Observer(观察者模式)
Jun 26 PHP
10个实用的PHP代码片段
Sep 02 PHP
PHP与MongoDB简介|安全|M+PHP应用实例详解
Jun 17 PHP
PHP+FFMPEG实现将视频自动转码成H264标准Mp4文件
Sep 24 PHP
php+mysqli实现将数据库中一张表信息打印到表格里的方法
Jan 28 PHP
PHP单例模式详细介绍
Jul 01 PHP
使用PHP实现生成HTML静态页面
Nov 18 PHP
PHP判断手机是IOS还是Android
Dec 09 PHP
Yii2创建多界面主题(Theme)的方法
Oct 08 PHP
php从数据库读取数据,并以json格式返回数据的方法
Aug 21 PHP
PHP删除字符串中非字母数字字符方法总结
Jan 20 PHP
PHP加密3DES报错 Call to undefined function: mcrypt_module_open() 如何解决
Apr 17 #PHP
orm获取关联表里的属性值
Apr 17 #PHP
ThinkPHP框架搭建及常见问题(XAMPP安装失败、Apache/MySQL启动失败)
Apr 15 #PHP
php基于jquery的ajax技术传递json数据简单实例
Apr 15 #PHP
PHP6连接SQLServer2005的三部曲
Apr 15 #PHP
php使用pear_smtp发送邮件
Apr 15 #PHP
PHP使用pear实现mail发送功能 windows环境下配置pear
Apr 15 #PHP
You might like
全国FM电台频率大全 - 28 甘肃省
2020/03/11 无线电
php下安装配置fckeditor编辑器的方法
2011/03/02 PHP
PHP中使用Session配合Javascript实现文件上传进度条功能
2014/10/15 PHP
PHP答题类应用接口实例
2015/02/09 PHP
Ubuntu下安装PHP的mongodb扩展操作命令
2015/07/04 PHP
laravel获取不到session的三种解决办法【推荐】
2018/09/16 PHP
PHP sdk文档处理常用代码示例解析
2020/12/09 PHP
JavaScript 自动分号插入(JavaScript synat:auto semicolon insertion)
2009/11/04 Javascript
javascript 词法作用域和闭包分析说明
2010/08/12 Javascript
jQuery EasyUI API 中文文档 - ProgressBar 进度条
2011/09/29 Javascript
JavaScript函数节流的两种写法
2017/04/07 Javascript
JavaScript基础之this详解
2017/06/04 Javascript
vue.js数据绑定的方法(单向、双向和一次性绑定)
2017/07/13 Javascript
从对象列表中获取一个对象的方法,依据关键字和值
2017/09/20 Javascript
webpack4.0打包优化策略整理小结
2018/03/30 Javascript
jQuery模拟12306城市选择框功能简单实现方法示例
2018/08/13 jQuery
微信小程序webview 脚手架使用详解
2019/07/22 Javascript
Angular6使用forRoot() 注册单一实例服务问题
2019/08/27 Javascript
Vue 实现从文件中获取文本信息的方法详解
2019/10/16 Javascript
如何用vue-cli3脚手架搭建一个基于ts的基础脚手架的方法
2019/12/12 Javascript
用Python从零实现贝叶斯分类器的机器学习的教程
2015/03/31 Python
Python中规范定义命名空间的一些建议
2016/06/04 Python
200行python代码实现2048游戏
2019/07/17 Python
详解Python可视化神器Yellowbrick使用
2019/11/11 Python
关于Theano和Tensorflow多GPU使用问题
2020/06/19 Python
python字符串的index和find的区别详解
2020/06/20 Python
详解查看Python解释器路径的两种方式
2020/10/15 Python
TripAdvisor斯洛伐克:阅读评论、比较价格和酒店预订
2018/04/25 全球购物
Scotch Porter官方网站:男士美容产品
2020/08/31 全球购物
学校介绍信范文
2014/01/14 职场文书
《难忘的泼水节》教学反思
2014/02/27 职场文书
岗位标兵事迹材料
2014/05/17 职场文书
基层党员公开承诺书
2014/05/29 职场文书
2015年文员个人工作总结
2015/04/09 职场文书
幼儿园六一主持词开场白
2015/05/28 职场文书
宝塔更新Python及Flask项目的部署
2022/04/11 Python