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+Html+缓存
Nov 25 PHP
php in_array 函数使用说明与in_array需要注意的地方说明
Apr 13 PHP
PHP中return 和 exit 、break和contiue 区别与用法
Apr 09 PHP
CodeIgniter生成网站sitemap地图的方法
Nov 13 PHP
PHP获取MySql新增记录ID值的3种方法
Jun 24 PHP
PHP之sprintf函数用法详解
Nov 12 PHP
微信公众平台开发之配置与请求
Aug 26 PHP
php加密解密字符串示例
Oct 13 PHP
PHP小偷程序的设计与实现方法详解
Oct 15 PHP
Yii1.1中通过Sql查询进行的分页操作方法
Mar 16 PHP
PHP实现的XXTEA加密解密算法示例
Aug 28 PHP
PHP中抽象类,接口功能、定义方法示例
Feb 26 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
用Php编写注册后Email激活验证的实例代码
2013/03/11 PHP
php判断类是否存在函数class_exists用法分析
2014/11/14 PHP
php修改数组键名的方法示例
2017/04/15 PHP
PHP实现图的邻接矩阵表示及几种简单遍历算法分析
2017/11/24 PHP
常见的5个PHP编码小陋习以及优化实例讲解
2021/02/27 PHP
javascript 图片上传预览-兼容标准
2009/06/01 Javascript
在js中单选框和复选框获取值的方式
2009/11/06 Javascript
JQuery跨Iframe选择实现代码
2010/08/19 Javascript
cnblogs中在闪存中屏蔽某人的实现代码
2010/11/14 Javascript
在jQuery1.5中使用deferred对象 着放大镜看Promise
2011/03/12 Javascript
ExtJS4如何自动生成控制grid的列显示、隐藏的checkbox
2014/05/02 Javascript
用jQuery toggleClass 实现鼠标移上变色
2014/05/14 Javascript
Javascript 正则表达式实现为数字添加千位分隔符
2015/03/10 Javascript
jQuery实现可编辑的表格实例讲解(2)
2015/09/17 Javascript
node.js实现快速截图
2016/08/27 Javascript
使用Angular.js开发的注意事项
2016/10/19 Javascript
常用原生js自定义函数总结
2016/11/20 Javascript
jQuery倒计时代码(超简单)
2017/02/27 Javascript
详解express + mock让前后台并行开发
2018/06/06 Javascript
vue.js实现格式化时间并每秒更新显示功能示例
2018/07/07 Javascript
webpack4.x打包过程详解
2018/07/18 Javascript
vue与bootstrap实现简单用户信息添加删除功能
2019/02/15 Javascript
基于JavaScript获取base64图片大小
2019/10/18 Javascript
在vue中使用Base64转码的案例
2020/08/07 Javascript
一分钟学会JavaScript中的try-catch
2020/12/14 Javascript
浅析Python中元祖、列表和字典的区别
2016/08/17 Python
python爬虫_微信公众号推送信息爬取的实例
2017/10/23 Python
Python实现string字符串连接的方法总结【8种方式】
2018/07/06 Python
opencv3/C++ 平面对象识别&amp;透视变换方式
2019/12/11 Python
Pytest参数化parametrize使用代码实例
2020/02/22 Python
Room Mate Hotels美国:西班牙酒店品牌
2018/04/10 全球购物
世界上最大的罕见唱片、CD和音乐纪念品网上商店:991.com
2018/05/03 全球购物
前台文员个人求职信范文
2014/01/05 职场文书
企业管理培训感言
2014/01/27 职场文书
先进工作者主要事迹材料
2015/11/03 职场文书
二维码条形码生成的JavaScript脚本库
2022/07/07 Javascript