PHP+MySQL实现二级联动下拉列表

合集下载

(实用篇)jQuery+PHP+MySQL实现二级联动下拉菜单

(实用篇)jQuery+PHP+MySQL实现二级联动下拉菜单

(实⽤篇)jQuery+PHP+MySQL实现⼆级联动下拉菜单⼆级联动下拉菜单选择应⽤在在很多地⽅,⽐如说省市下拉联动,商品⼤⼩类下拉选择联动。

本⽂将通过实例讲解使⽤jQuery+PHP+MySQL来实现⼤⼩分类⼆级下拉联动效果。

先看下效果实现的效果就是当选择⼤类时,⼩类下拉框⾥的选项内容也随着改变。

实现原理:根据⼤类的值,通过jQuery把值传给后台PHP处理,PHP通过查询MySQl数据库,得到相应的⼩类,并返回JSON数据给前端处理。

XHTML⾸先我们要建⽴两个下拉选择框,第⼀个是⼤类,第⼆个是⼩类。

⼤类的值可以是预先写好,也可以是从数据库读取。

<label>⼤类:</label><select name="bigname" id="bigname"><option value="1">前端技术</option><option value="2">程序开发</option><option value="3">数据库</option></select><label>⼩类:</label><select name="smallname" id="smallname"></select>jQuery先写⼀个函数,获取⼤类选择框的值,并通过$.getJSON⽅法传递给后台server.php,读取后台返回的JSON数据,并通过$.each⽅法遍历JSON数据,将对应的值写⼊⼀个option字符串,最后将option追加到⼩类⾥。

function getSelectVal(){$.getJSON("server.php",{bigname:$("#bigname").val()},function(json){var smallname = $("#smallname");$("option",smallname).remove(); //清空原有的选项$.each(json,function(index,array){var option = "<option value='"+array['id']+"'>"+array['title']+"</option>";smallname.append(option);});});}注意,在遍历JSON数据追加之前⼀定要先将⼩类⾥的原有的项清空。

二级下拉菜单自动联动公式

二级下拉菜单自动联动公式

二级下拉菜单自动联动公式
当然,这次我会尝试用更口语化、更随性的方式来写这些段落:段落一:
你知道吗,春风一吹,万物都好像醒了过来。

二级下拉菜单的
自动联动功能也是这样,轻轻一点,就帮你找到了想要的东西。


像那山间的小野花,虽然不起眼,但总能带给你惊喜。

段落二:
现在的时代,谁不想快点搞定事情呢?二级下拉菜单的自动联
动功能,就像是你的贴心小助手,你刚选了一个选项,它就已经帮
你准备好了下一个。

真是省时又省力,让人忍不住想点个赞!
段落三:
说到网页设计,有个小技巧你可能不知道。

那就是二级下拉菜
单的自动联动功能。

它不仅能让你的网站看起来更酷,还能帮你吸
引更多的访客。

就像你在网上购物,它总能推荐出你感兴趣的东西,
让你越逛越开心。

段落四:
说到电商,我得提一下这个自动联动功能。

你正在看一件衣服,它就能推荐出搭配的鞋子和包包。

简直是购物神器啊!不仅让你购
物更方便,还能帮你省钱。

下次网购,一定要试试看!
这些段落都很口语化,而且语言风格各异,希望能满足你的要求。

asp二级联动下拉菜单

asp二级联动下拉菜单
<td height="30"><select size="1" name="City"></select></td>
</tr>
</table>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>会员登录</title>
</head>
<body>
<script language ="javascript" >
<td height="30" bgcolor="#D4D0C8"><select size="1" name="Region" onchange ="changeselect(document.form1.Region.options[document.form1.Region.selectedIndex].value)">
set rs = conn.execute(sql)
while not rs.eof
msg = msg & "<option value=""" & rs("id") & """>" & rs("class1") & "</option>"

PHPAJAX2级联动下拉列表(...

PHPAJAX2级联动下拉列表(...

PHPAJAX2级联动下拉列表(...PHP+AJAX2级联动下拉列表(简单好用)这次给大家展示的是非常常用的一个ajax功能--联动下拉列表,本程序采用2级联动,根据数据库的内容用ajax处理下拉列表内容,实现根据用户需求取得下拉选项,交互性强,更新容易。

废话少说,不如正题,这次依然象往常一样提供截图和源码下载,首先还是AJAX框架:var http_request=false;function send_request(url){//初始化,指定处理函数,发送请求的函数http_request=false;//开始初始化XMLHttpRequest对象if(window.XMLHttpRequest){//Mozilla浏览器http_request=new XMLHttpRequest();if(http_request.overrideMimeType){//设置MIME类别http_request.overrideMimeType("text/xml");}}else if(window.ActiveXObject){//IE浏览器try{http_request=new ActiveXObject("Msxml2.XMLHttp");}catch(e){try{http_request=new ActiveXobject("Microsoft.XMLHttp");}catch(e){}}}if(!http_request){//异常,创建对象实例失败window.alert("创建XMLHttp对象失败!");return false;}http_request.onreadystatechange=processrequest;//确定发送请求方式,URL,及是否同步执行下段代码http_request.open("GET",url,true);http_request.send(null);}//处理返回信息的函数function processrequest(){if(http_request.readyState==4){//判断对象状态if(http_request.status==200){//信息已成功返回,开始处理信息document.getElementById(reobj).innerHTML=http_request.respons eText;}else{//页面不正常alert("您所请求的页面不正常!");}}}function getclass(obj){var pid=document.form1.select1.value;document.getElementById(obj).innerHTML="<option>loading...</o ption>";send_request(‘doclass.php?pid=‘+pid);reobj=obj;}这个程序的核心就是动态添加<option>......</option>服务器端是进行数据的检索,很简单:<?phpheader("Content-type: text/html;charset=GBK");//输出编码,避免中文乱码$pid=$_GET[‘pid‘];$db=mysql_connect("localhost","root","7529639"); //创建数据库连接mysql_query("set names ‘GBK‘");mysql_select_db("menuclass");$sql="select classname from menu where parentid=".$pid."";$result=mysql_query($sql);//循环列出选项while($rows=mysql_fetch_array($result)){echo ‘<option>‘;echo $rows[‘classname‘];echo "</option>\n";}>再看看列表页面的html:<script language="javascript" src="ajaxmenu.js"></script><html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>ajax2级联动菜单演示</title></head><body><form name="form1"><select name="select1" id="class1" style="width:100;" onChange="getclass(‘class2‘);"><option selected="selected"></option><option value="1">大类1</option><option value="2">大类2</option></select><select name="select2"id="class2" style="width:100;"></select></form></body></html>附件1.jpg(1.99 KB)2007-9-24 10:04PHP+AJAX2级联动下拉列表2.jpg(3.25 KB)2007-9-24 10:04PHP+AJAX2级联动下拉列表3.jpg(5.92 KB)2007-9-24 10:04PHP+AJAX2级联动下拉列表4.jpg(5.62 KB)2007-9-24 10:04PHP+AJAX2级联动下拉列表ajaxdemo.rar(1.66 KB)2007-9-24 10:05, 下载次数: 3PHP+AJAX2级联动下拉列表搜索更多相关主题的帖子: AJAX PHP列表台州南开技术小组专门用PHP+MYSQL技术进行Web(网站、平台、系统等)开发,凭借其开发产品的非凡速度、领先的技术优势、富于创新的开发团队,为众多行业门户、专业型站点提供最有优质的服务和技术保障。

php+mysql实现二级联动下拉列表

php+mysql实现二级联动下拉列表

php+mysql实现⼆级联动下拉列表⼆级联动下拉列表(select),都是从数据库中取值,其中第⼆级为可多选列表(multiple).若要实现⼆级也是下拉菜单,可以将multiple改了即可。

<html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><title>全动态⼆级联动下拉列表</title></head><body><?/************************************************* 功能:PHP+mysql实现⼆级级联下拉框** 数据库:数据库名(db_city)、数据表(t_province、t_city)** 表t_province中字段:id(id编号)、provinceName(省份名)** 表t_city中的字段:id(id编号)、provinceId(省份ID)、cityName(城市名)***********************************************///****************** 连接选择数据库 ***************$link = mysql_connect("localhost", "root", "123")or die("Could not connect : " . mysql_error());mysql_select_db("db_city") or die("Could not select database");//******************提取省份信息******************$sqlSel = "select * from t_province order by id ";$result = mysql_query($sqlSel) or die("Query failed : " . mysql_error());$forum_data = array();while( $row = mysql_fetch_array($result) ){$forum_data[] = $row;}//print_r ($forum_data);mysql_free_result($result);//**************获取城市信息**************$sqlSel2 = "select * from t_city order by provinceId desc";if( !($result2 = mysql_query($sqlSel2)) ){die('Could not query t_city list');}$forum_data2 = array();while( $row2 = mysql_fetch_array($result2) ){$forum_data2[] = $row2;}mysql_free_result($result2);><!--************ JavaScript处理province--onChange *************--><script language = "JavaScript">var onecount2;subcat2 = new Array();<?php$num2 = count($forum_data2);>onecount2=<?echo $num2;?>;<?for($j=0;$j<$num2;$j++){>subcat2[<?echo $j;?>] = new Array("<?echo $forum_data2[$j]['id'];?>","<?echo $forum_data2[$j]['provinceId'];?>","<?echo $forum_data2[$j] ['cityName'];?>");<?}?>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]);}}}</script><!--********************页⾯表单*************************--><form name="myform" method="post">地址:<select name="bigClass"onChange="changelocation(document.myform.bigClass.options[document.myform.bigClass.selectedIndex].value)" size="1"> <option selected>请选择省份</option><?php$num = count($forum_data);for($i=0;$i<$num;$i++){><option value="<?echo $forum_data[$i]['id'];?>"><?echo $forum_data[$i]['provinceName'];?></option><?}></select><select name="city" multiple><SELECT name=city size=1 id="city"><option selected value="">==选择城市==</option></select></form></body></html>。

二级联动

二级联动

为了在窗体显示时去除列表框的重复值和空格,可以使用Add方法,如下面的代码所示。

#001 Private Sub UserForm_Initialize()#002 On Error Resume Next#003 Dim ColAs New Collection#004 Dim rng As Range, arr#005 Dim iAs Integer#006 For Each rng In Range("A1:A" & [a65536].End(xlUp).Row)#007 If Trim(rng) <> "" Then#008 Col.Addrng, key:=CStr(rng)#009 End If#010 Next#011 ReDimarr(1 To Col.Count)#012 Fori = 1 To Col.Count#013 arr(i) = Col(i)#014 Next#015 Me.ListBox1.List = arr#016 End Sub代码解析:窗体的初始化事件,去除列表框引用工作表数据中的重复值和空格。

第2行代码,错误处理语句,忽略错误。

第3行到第5行代码,声明变量类型。

第6行到第9行代码代码,在列表框引用的工作表数据中循环,把工作表数据源中的空格去除后使用Add方法添加到变量Col中。

Add方法添加一个成员到Collection 对象,语法如下:object.Add item, key, before, after参数object是必需的,一个有效的对象。

参数Item是必需的,任意类型的表达式,指定要添加到集合中的成员。

参数Key是可选的,唯一字符串表达式,指定可以使用的键字符串,代替位置索引来访问集合中的成员。

如果指定的key和集合中现有成员的key发生重复,则会导致错误发生。

所以在第2行代码中使用错误处理语句,忽略错误,继续执行下一句代码,这样就将数据源中的重复值去除。

Domino下拉框的二级联动菜单

Domino下拉框的二级联动菜单

下拉框的二级联动菜单第一有两个联动菜单,如以下图:咱们此刻要依照SampleType的值来改变SampleName的值。

咱们先看一下视图的结构咱们通过ajax从后台获取xml,然后放到SampleName里面:当SampleType的值改变时咱们挪用addSampleNamebyajax方式:Javascript://通过ajax动态加载样品名称function addSampleNamebyajax(samplevalue){try{var uri = "";uri = "&SampleType=" + samplevalue + "&ids=" + Math.random();var loader = dhtmlxAjax.getSync("<计算的值>Agent_getSapmleNameByAjax?OpenAgent" + uri);cResponseSampleName(loader);}catch(err){alert(err.description);}}//回调函数function cResponseSampleName(loader){try{if(loader.xmlDoc.responseXML != null){//清除数据document.getElementById("SampleName").options.length = 1;//获取ajax的xml数据var xmlDoc = loadXMLDoc(loader.xmlDoc.responseXML);var temp = xmlDoc.getElementsByTagName("cell");for(i=0;i<temp.length;i++){tempStr = temp[i].childNodes[0].nodeValueoption = new Option(tempStr,tempStr)document.getElementById("SampleName").add(option);}}}catch(err){alert(err.description)}}function loadXMLDoc(dname){try{xmlDoc=new ActiveXObject("Microsoft.XMLDOM");}catch(e){try{xmlDoc=document.implementation.createDocument("","",null);}catch(e){alert(e.message)}}try {xmlDoc.async=false;xmlDoc.load(dname);return(xmlDoc);}catch(e) {alert(e.message)}return(null);}L OTUSSCRIPT:S UB I NITIALIZE'M SGBOX "-----------------------"O N E RROR G OTO HANDLED IM SESSION A S N EW N OTES S ESSIOND IM CURDOC A S N OTES D OCUMENTD IM INPUT S TR A S S TRINGD IM VIEW A S N OTES V IEWD IM CURDB A S N OTES D ATABASED IM TEMPDOC A S N OTES D OCUMENTD IM DC A S N OTES D OCUMENT C OLLECTIOND IM S AMPLE N AME A S S TRINGD IM OUPUT S TR A S S TRINGS ET CURDB = SESSION.C URRENT D ATABASES ET CURDOC = SESSION.D OCUMENT C ONTEXT'INPUT S TR = CURDOC.G ET I TEM V ALUE("Q UERY_S TRING_D ECODED")(0)INPUT S TR = G ET P ARAMETER("S AMPLE T YPE",CURDOC.G ET I TEM V ALUE("Q UERY_S TRING_D ECODED")(0))'M SGBOX INPUT S TRS ET VIEW = CURDB.G ET V IEW("V IEW_ZNNYSC_S AMPLE T YPE")S ET DC = VIEW.G ET A LL D OCUMENTS B Y K EY(INPUT S TR +"|"+ INPUT S TR,T RUE)M SGBOX DC.C OUNTS ET TEMPDOC = DC.G ET F IRST D OCUMENTOUTPUT S TR ={<ROW>}W HILE N OT TEMPDOC I S N OTHINGS AMPLE N AME = TEMPDOC.S AMPLE T YPE N AME(0)OUTPUT S TR = OUTPUT S TR +{<CELL>}+S AMPLE N AME +{</CELL>}M SGBOX S AMPLE N AMES ET TEMPDOC = DC.G ET N EXT D OCUMENT(TEMPDOC)W ENDOUTPUT S TR = OUTPUT S TR +{</ROW>}P RINT {C ONTENT-T YPE:TEXT/XML;CHARSET=UTF-8}P RINT OUTPUT S TRE XIT S UBHANDLE:M SGBOX E RL &E RROR$E XIT S UBE ND S UB最后:咱们需要在SampleName的公式中加上页面打开时获取的值:如此就完成下拉框二级联动了。

二级联动设置

二级联动设置

二级联动设置二级联动设置是指在一个系统或者一个模型中,通过两个或多个级别的选择来实现不同参数或条件的联动变化。

这种设置在实际应用中非常常见,可以用于各种场景,比如网页筛选、数据分析、系统配置等等。

下面将以网页筛选为例,来说明二级联动设置的实现和应用。

在网页筛选中,二级联动设置可以用于根据用户的选择来实时更新筛选结果。

比如在一个商品列表页面,用户可以通过选择商品类型和品牌来筛选商品。

当用户选择了商品类型后,品牌的选项应该根据商品类型的选择动态更新,只显示与所选类型相关的品牌选项。

这就是二级联动设置的一个典型应用。

为了实现二级联动设置,需要在网页的前端代码中编写相应的逻辑。

首先,需要在页面上定义两个下拉框或者多个选择框,用来让用户选择参数。

其次,需要定义一个数据结构来存储各个选项的关联关系。

比如,可以使用一个嵌套的字典来表示不同选项之间的关系。

最后,在用户选择参数的时候,需要根据选择的参数来更新关联的选项。

具体来说,首先需要在页面上定义两个下拉框,一个用来选择商品类型,一个用来选择品牌。

在选择商品类型的下拉框中,需要绑定一个事件,当用户选择了某个类型的商品时,触发该事件。

在事件中,需要根据选择的商品类型来更新品牌的选项。

具体的更新逻辑可以通过查询事先定义好的关联关系数据结构来实现。

比如,当用户选择了某个商品类型时,可以从关联关系数据结构中找到与该类型相关的品牌选项,并更新品牌下拉框中的选项。

通过这样的设置,用户就可以根据自己的需求来筛选商品了。

当用户选择了某个商品类型后,品牌选项会根据选择的类型进行动态更新,只显示与所选类型相关的品牌选项。

这样,用户可以更加方便地找到自己需要的商品。

除了网页筛选,二级联动设置还可以应用于其他场景。

比如,在一个数据分析系统中,可以通过选择不同的参数来实时更新数据的展示。

在一个系统配置页面中,可以通过选择不同的配置项来实时更新系统的设置。

总之,二级联动设置是一种非常实用的功能,可以提高用户的交互体验,并使系统更加灵活和易用。

PHP+MySQL实现二级联动下拉列表

PHP+MySQL实现二级联动下拉列表

PHP+MySQL实现二级联动下拉列表1.Javascript在下拉列表的各个对象2.案例代码Liandong.php<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>PHP二级联动测试</title></head><body><?php$link=mysql_connect("localhost","root","12345678") or die("Could not connect:".mysql_error());mysql_select_db("phpquery") or die("Could not select database or database haven't created");//获取大类别$queryCol="select*from tb_firstcategory order by id";mysql_query("set names utf-8");$result1=mysql_query($queryCol) or die("Query failed:".mysql_error());$firstcategories=array();while($row1=mysql_fetch_array($result1)){$firstcategories[]=$row1;}mysql_free_result($result1);//获取小类别$querySecondCat="select*from tb_secondcategory order by fid desc";mysql_query("set names utf-8");if(!($result2=mysql_query($querySecondCat))){die("Cound not query tb_secondcategory list");}$secondcategories=array();while($row2=mysql_fetch_array($result2)){$secondcategories[]=$row2;}mysql_free_result($result2);?><script language="javascript">var secondcategoryCount;//存储小类别的数据form_secondcategory=new Array();<?php$num2=count($secondcategories); //获取小类别表中记录的个数?>secondcategoryCount=<?php echo $num2;?>;<?phpfor($j=0;$j<$num2;$j++){ //从0开始取出上面小类别数据填充的数组?>form_secondcategory[<?php echo $j;?>]=new Array("<?php echo $secondcategories[$j]['id'];?>","<?php echo $secondcategories[$j]['fid'];?>","<?php echo $secondcategories[$j]['categoryname'];?>");<?php } ?>function changeFirstCate(fid){document.form1.secondcategory.length=0;var id=id;var j;for(j=0;j<secondcategoryCount;j++){if(form_secondcategory[j][1]==fid){ //fid等于大类别的id document.form1.secondcategory.options[document.form1.secondcategory.length]=n ew Option(form_secondcategory[j][2],form_secondcategory[j][0]);}else{document.form1.secondcategory.options[0]=new Option('==选择小类别==',""); //label的value为空’’}}}//获取选中的列表文本function getCategory(){var first=document.getElementById("firstcategory");var index=first.selectedIndex;var second=document.getElementById("secondcategory");var index1=second.selectedIndex;alert(first.options[index].text+second.options[index1].text);}</script><form name="form1" method="post">选择:<select id="firstcategory" name="firstcategory" onchange="changeFirstCate(document.form1.firstcategory.options[document.form1. firstcategory.selectedIndex].value)" size="1"><option selected>==请选择大类别==</option><?php$num=count($firstcategories);for($i=0;$i<$num;$i++){?><option value="<?php echo $firstcategories[$i]['id'];?>"><?php echo $firstcategories[$i]['categoryname'];?></option><?php}?></select><select id="secondcategory" name="secondcategory"><option selected value="">==选择小类别==</option></select><input type="button" name="submit" value="提交" onclick="getCategory();"/></form><div id="rel" style="display:none;"></div></body></html>。

二级联动下拉列表JS+html实现

二级联动下拉列表JS+html实现

⼆级联动下拉列表JS+html实现例⼦:<html><head><title>This is a test!</title></head><body><form name="frm"><select name="s1" onChange="redirec(document.frm.s1.options.selectedIndex)"><option selected>请选择</option><option value="1">脚本语⾔</option><option value="2">⾼级语⾔</option><option value="3">其他语⾔</option></select><select name="s2"><option value="请选择" selected>请选择</option></select></form><script language="javascript">//获取⼀级菜单长度var select1_len = document.frm.s1.options.length;var select2 = new Array(select1_len);//把⼀级菜单都设为数组for (i=0; i<select1_len; i++){ select2[i] = new Array();}//定义基本选项select2[0][0] = new Option("请选择", " ");select2[1][0] = new Option("PHP", " ");select2[1][1] = new Option("ASP", " ");select2[1][2] = new Option("JSP", " ");select2[2][0] = new Option("C/C++", " ");select2[2][1] = new Option("Java", " ");select2[2][2] = new Option("C#", " ");select2[3][0] = new Option("Perl", " ");select2[3][1] = new Option("Ruby", " ");select2[3][2] = new Option("Python", " ");//联动函数function redirec(x){var temp = document.frm.s2;for (i=0;i<select2[x].length;i++){ temp.options[i]=new Option(select2[x][i].text,select2[x][i].value);} temp.options[0].selected=true;}</script></body></html>。

分享如何利用数据验证功能制作二级联动下拉菜单

分享如何利用数据验证功能制作二级联动下拉菜单

分享如何利用数据验证功能制作二级联动下拉菜单展开全文二级联动下拉菜单就是根据一级下拉菜单内容变化而变化的,就拿“部门”和“岗位”来说,每个部门对应的岗位会有所不同,如果部门较多,那么对应的岗位也会随之增多,设置序列后,选择的选项内容较多,导致选择速度会降低。

为了减少数的工作量,又能保证输入的一致性,我们就需要设置二级下拉菜单,也就是说选择部门后,岗位下拉菜单中将只显示该部门对应的岗位。

制作二级联动下拉菜单的具体操作步骤如下:步骤01:输入辅助数据。

在“序列数据”工作表C1:C8单元格区域中输入部门名称,在D1:I8单元格区域中输入部门对应的岗位名称,如下图所示。

步骤02:新建名称。

选择C1:C8单元格区域,单击【定义名称】按钮,打开【新建名称】对话框,在【名称】文本框中输入“部门名称”,单击【确定】按钮,如下图所示。

步骤03:定位单元格。

如果要想快速准确地从表格区域中选择已录入数据的单元格,那么通过定位条件功能是最快捷的方法。

选择C1:I8单元格区域,打开【定位条件】对话框,选中【常量】单选按钮,单击【确定】按钮,如下图所示。

步骤04:根据内容新建名称。

直接单击【根据所选内容创建】按钮,打开【以选定区域创建名称】对话框,保持默认设置,单击【确定】按钮,如下图所示。

步骤05:设置序列来源。

即可按照部门定义名称,为【部门】列单元格区域设置序列,在【来源】参数框中直接输入定义的名称【=部门名称】,单击【确定】按钮,如下图所示。

步骤06:通过公式设置序列来源。

为【岗位】列单元格区域设置序列,在【来源】参数框中输入【=INDIRECT(C2)】,单击【确定】按钮,如下图所示。

步骤07:查看设置的二级下拉菜单。

设置完成后会看到,当选择不同的部门后,对应的【岗位】会出现这个部门的岗位名称,如下图所示。

这些内容都将在北京大学出版社出版,由恒图教育与Excelhome精心打造的《HR高手之道:Excel人力资源管理思维、技术与实践》一书中详细讲解。

jsp从数据库获取数据填充下拉框实现二级联动菜单的方法

jsp从数据库获取数据填充下拉框实现二级联动菜单的方法

jsp从数据库获取数据填充下拉框实现⼆级联动菜单的⽅法本⽂实例讲述了jsp从数据库获取数据填充下拉框实现⼆级联动菜单的⽅法。

分享给⼤家供⼤家参考,具体如下:项⽬告⼀段落,现在将遇到的⽐较实⽤的东西记录下来,写了多遍了,谨记于此,以备查看!1、⾸先在数据库中获取第⼀个下拉框的数据:<s:select listKey="tsFrom" id="t_tsfrom" cssClass="required"listValue="tsFrom" cssStyle="width:90" list="tsfrom1"name="tsFrom" theme="simple" headerKey=""onchange="getTsFromDescribe(this);" headerValue="--请选择--" />后台处理:@Autowiredprivate CustomMaManager custommamanager;//注解相当的好⽤啊,代码都省了⼀⼤截tsfrom1 = custommamanager.getTsFrom();Service://得到投诉来源public List<CustomManage> getTsFrom(){return custommanagedao.getTsFrom();}dao:/**得到产品类型**/public List<CustomManage> getTsFrom(){return this.find("SELECT distinct new CustomManage(tsFrom,'2') FROM CustomManage C WHERE C.tsFrom IS NOT NULL ORDER BY tsFrom ASC"); }注意:Oracle在java代码⾥取出重复值与SqlServer不⼀样,它得使⽤:复制代码代码如下:SELECT distinct new CustomManage(tsFrom,'2') FROM CustomManage C WHERE C.tsFrom IS NOT NULL ORDER BY tsFrom ASC先new实体bean(CustomManage)然后在实体bean中给相应字段设置构造⽅法,不然将会出现后台已经返回了值,但是在前台下拉框中不显⽰,下拉框空⽩的现象。

下拉框地址的二级联动

下拉框地址的二级联动

方法比较笨,但思路很简单HTML部分:省份:<select name="prov" id="prov" onchange="SFchoose(this,event)"><option>--请选择省份--</option><option>广西省</option><option>云南省</option></select>城市:<select name="prov" id="city" onchange="cityChoose(this,event)"><option>--请选择城市--</option></select><br/>当前选择的是: <input type="text" id="txtaddr"/> <br/>请实现下拉框的二级联动效果,测试代码省份4个,每个省份有3--5个城市不等,同时选择的内容显示在下面的文本框中JavaScript部分:function SFchoose(obj,event){citySel.length = 1; //每次开始执行添加城市之前只保留城市下拉列表中的第一个optionif(SF =="广西省"){var op1 = document.createElement("option");var ocity1 = document.createTextNode("南宁");op1.appendChild(ocity1);citySel.appendChild(op1);//拼接城市optionvar op2 = document.createElement("option");var ocity2 = document.createTextNode("桂州");op2.appendChild(ocity2);citySel.appendChild(op2);var op3 = document.createElement("option");var ocity3 = document.createTextNode("柳州");op3.appendChild(ocity3);citySel.appendChild(op3);}if(SF =="云南省"){var op4 = document.createElement("option");var ocity4 = document.createTextNode("昆明");op4.appendChild(ocity4);citySel.appendChild(op4);var op5 = document.createElement("option");var ocity5 = document.createTextNode("楚雄");op5.appendChild(ocity5);citySel.appendChild(op5);var op6 = document.createElement("option");var ocity6 = document.createTextNode("丽江");op6.appendChild(ocity6);citySel.appendChild(op6);}。

Mysql递归查询,无限级上下级菜单

Mysql递归查询,无限级上下级菜单
WHERE @r <> 0) T1 JOIN table1 T2 ON T1._id = T2.id ORDER BY T1.lvl DESC;
SELECT T2.id, FROM (
SELECT @r AS _id, (SELECT @r := parent_id FROM table1 WHERE id = _id) AS parent_id, @l := @l + 1 AS lvl
FROM (SELECT @r := 5, @l := 0) vars, table1 h
如果第二节点有多个下级但是这个只能读到第一个具体下级的值然后查不到剩下的了这个怎么处理呢
Mysql递 归 查 询 , 无 限 级 上 下 级 菜 单
mysql递归查询,mysql中从子类ID查询所有父类(做无限分类经常用到)
由于mysql 不支持类似 oracle with ...connect的 递归查询语法 之前一直以为类似的查询要么用存储过程要么只能用程序写递归查询.
现在发现原来一条sql语句也是可以搞定的
先来看数据表的结Biblioteka 如下:id name parent_id
--------------------------1 Home 0 2 About 1 3 Contact 1 4 Legal 2 5 Privacy 4 6 Products 1 7 Support 1 我要的要求是根据一个分类ID(这个分类ID可能是一个子分类),得到所有的父分类,下面是相应的SQL:

【网页特效代码-其他特效】二级关联下拉菜单代码

【网页特效代码-其他特效】二级关联下拉菜单代码

【网页特效代码-其他特效】二级关联下拉菜单代码.txt人生在世,难敌宿命,沉沦其中。

我不爱风尘,似被前缘误!!我只为我最爱的人流泪“我会学着放弃你,是因为我太爱你”赢了你,我可以放弃整个世界<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="/1999/xhtml"><head><title>二级关联下拉菜单</title><meta http-equiv="content-Type" content="text/html;charset=gb2312"><!--把下面代码加到<head>与</head>之间--><style type="text/css">/*---------------------页面基础定义----------------------------------*/body,td,th {font-family: Tahoma, Verdana, Arial, sans-serif;font-size: 12px;color: #333333;}body {margin-left: 0px;margin-top: 0px;margin-right: 0px;margin-bottom: 0px;}/*---------------------链接定义----------------------------------*/a {color: #333333;text-decoration: none;}a:hover {color: #FF0000;text-decoration: none;}a:active{color: #FF0000;text-decoration: none;}/*---------------------菜单样式----------------------------------*/#menu{height:32px;margin-top:8px; background-color:#990000;}#menu ul{margin:auto; width:778px; height:32px;list-style-type:none; padding:0px; margin-top:0px; margin-bottom:0px;}.m_li{float:left; width:114px; line-height:32px; text-align:center; margin-right:-2px; margin-left:-2px;}.m_li a{display:block; color:#FFFFFF; width:114px;}.m_line{float:left; width:1px; height:32px;line-height:32px; /*ff下有效(图片垂直居中)*/}.m_line img{margin-top:expression(( 32 - this.height ) / 2); /*ie下有效(图片垂直居中)*/}.m_li_a{float:left; width:114px; line-height:32px; text-align:center; padding-top:3px; font-weight:bold;background-image:url(/teixiao/UploadFiles_4612/200811/20081105091946831.jpg); position:relative; height:32px; margin-top:-3px; margin-right:-2px; margin-left:-2px;}.m_li_a a{display:block; color:#FF0000; width:114px;}.smenu{width:774px; margin:0px auto 0px auto; padding:0px; list-style-type:none; height:32px;}.s_li{line-height:32px; width:auto; display:none; height:32px;}.s_li_a{line-height:32px; width:auto; display:block; height:32px;}</style><script language="javascript">//初始化var def="1";function mover(object){//主菜单var mm=document.getElementById("m_"+object);mm.className="m_li_a";//初始主菜单先隐藏效果if(def!=0){var mdef=document.getElementById("m_"+def);mdef.className="m_li";}//子菜单var ss=document.getElementById("s_"+object);ss.style.display="block";//初始子菜单先隐藏效果if(def!=0){var sdef=document.getElementById("s_"+def);sdef.style.display="none";}}function mout(object){//主菜单var mm=document.getElementById("m_"+object);mm.className="m_li";//初始主菜单还原效果if(def!=0){var mdef=document.getElementById("m_"+def);mdef.className="m_li_a";}//子菜单var ss=document.getElementById("s_"+object);ss.style.display="none";//初始子菜单还原效果if(def!=0){var sdef=document.getElementById("s_"+def);sdef.style.display="block";}}</script></head><body><!--把下面代码加到<body>与</body>之间--><div id="menu"><ul><li class="m_line"><img src="/teixiao/UploadFiles_4612/200811/20081105091946137.gif" /></li><li id="m_1" class='m_li_a'><a href="#">财税首页</a></li><li class="m_line"><img src="/teixiao/UploadFiles_4612/200811/20081105091946137.gif" /></li><li id="m_2" class='m_li' onmouseover='mover(2);' onmouseout='mout(2);'><a href="#">政务公开</a></li><li class="m_line"><imgsrc="/teixiao/UploadFiles_4612/200811/20081105091946137.gif" /></li><li id="m_3" class='m_li' onmouseover='mover(3);' onmouseout='mout(3);'><a href="#">网上办事</a></li><li class="m_line"><img src="/teixiao/UploadFiles_4612/200811/20081105091946137.gif" /></li><li id="m_4" class='m_li' onmouseover='mover(4);' onmouseout='mout(4);'><a href="#">公告中心</a></li><li class="m_line"><img src="/teixiao/UploadFiles_4612/200811/20081105091946137.gif" /></li><li id="m_5" class='m_li' onmouseover='mover(5);' onmouseout='mout(5);'><a href="#">法规中心</a></li><li class="m_line"><img src="/teixiao/UploadFiles_4612/200811/20081105091946137.gif" /></li><li id="m_6" class='m_li' onmouseover='mover(6);' onmouseout='mout(6);'><a href="#">财税文化</a></li><li class="m_line"><img src="/teixiao/UploadFiles_4612/200811/20081105091946137.gif" /></li><li id="m_7" class='m_li' onmouseover='mover(7);' onmouseout='mout(7);'><a href="#">专题宣传</a></li><li class="m_line"><img src="/teixiao/UploadFiles_4612/200811/20081105091946137.gif" /></li></ul></div><div style="height:32px; background-color:#F1F1F1;"><ul class="smenu"><li style="padding-left:29px;" id="s_1" class='s_li_a'>欢迎光临乐清财税网,您是本站第2842位客人!</li><li style="padding-left:141px;" id="s_2" class='s_li' onmouseover='mover(2);' onmouseout='mout(2);'><a href="#">财税简介</a> | <a href="#">机构设置</a> | <a href="#">办事指南</a> | <a href="#">税种简介</a> | <a href="#">财税动态</a> | <a href="#">公车动态</a></li><li style="padding-left:252px;" id="s_3" class='s_li' onmouseover='mover(3);' onmouseout='mout(3);'><a href="#">下载专区</a> | <a href="#">上传专区</a> | <a href="j#">申请报名</a> | <a href="#">查询系统</a> | <a href="#">咨询投诉</a> | <a href="#">满意调查</a></li><li style="padding-left:362px;" id="s_4" class='s_li' onmouseover='mover(4);' onmouseout='mout(4);'><a href="#">最新公告</a> | <a href="#">会计通知</a></li> <li style="padding-left:474px;" id="s_5" class='s_li' onmouseover='mover(5);' onmouseout='mout(5);'><a href="#">最新政策</a> | <a href="#">政策法规查询</a></li><li style="padding-left:447px;" id="s_6" class='s_li' onmouseover='mover(6);' onmouseout='mout(6);'><a href="#">税收宣传</a> | <a href="#">队伍建设</a> | <a href="#">文明创建</a> | <a href="#" target="_blank">青年论坛</a> | <a href="#">廉政课堂</a></li><li style="padding-left:696px;" id="s_7" class='s_li' onmouseover='mover(7);' onmouseout='mout(7);'><a href="#">专题宣传区</a></li></ul></div></body></html>QQ291911320。

在一个jsp页面实现二级下拉框联动,实时读取数据库数据

在一个jsp页面实现二级下拉框联动,实时读取数据库数据

在一个jsp页面实现二级下拉框联动,实时读取数据库数据,这个方法非常使用,只需要修改很小的地方就可以使用。

设计的文件,serch.jsp,main.js,bytetostr.js,先讲一下main.js,这是javascript,其中注意修改jsp页面名称。

function findObject(fName,initValue)...{var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");xmlhttp.open("POST","searchmx.jsp?findObject="+fName+"&initValue="+initValue,false);//注意修改jsp页面xmlhttp.send();document.getElementById(fName).innerHTML=bytes2BSTR(xmlhttp.responsebody); //bytes2BSTR函数在bytetostr.js中}其次为bytetostr.js,这是vbscript,这个不需要修改任何内容,他的主要功能就是读取数据转换字符串用的。

Function bytes2BSTR(vIn)dim istrReturn = ""For i = 1 To LenB(vIn)ThisCharCode = AscB(MidB(vIn,i,1))If ThisCharCode < &H80 ThenstrReturn = strReturn & Chr(ThisCharCode)ElseNextCharCode = AscB(MidB(vIn,i+1,1))strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))i = i + 1End IfNextbytes2BSTR = strReturnEnd Function接下来就是serch.jsp页面,只需要修改div中的id为你想要的名字,再将一开始的包更换一下,已经sql语句改下就可以了,有不明白的可以参与讨论<%@ page contentType="text/html; charset=gb2312" language="Java"import="com.sjth.zdsygl.vo.*,.*,java.util.*,com.sjth.zdsygl.jdbc.*,java.sql.ResultSet"%>//导入相应的包<%//这部分代码用于执行查询数据库,返回字符串if (request.getParameter("findObject")!=null)...{if (request.getParameter("findObject").equals("hy_dm"))...{DBConnect conn = null;ResultSet rs = null;try...{out.print("<select name='hy_dm' onchange="javascript:findObject('hymx_dm',this.value)">");String sql = "select * from dm_hy group by left(hy_dm,7)";conn = new DBConnect();conn.setPstmt(sql);rs = conn.executeQuery(sql);while(rs.next())...{out.print("<option value='"+rs.getString("hy_dm")+"'>"+rs.getString("hy_mc")+"</option>");}out.print("</select>");}catch (Exception e)...{}finally...{try...{if (rs != null)rs.close();if (conn != null)conn.close();}catch (Exception e)...{e.printStackTrace();}}}if (request.getParameter("findObject").equals("hymx_dm"))...{DBConnect conn = null;ResultSet rs = null;try...{out.print("<select name='hymx_dm' >");String sql = null;if (request.getParameter("initValue").equals(""))...{sql = "select * from dm_hy";}else...{sql = "select * from dm_hy where hy_dm like '"+request.getParameter("initValue")+"%'";}conn = new DBConnect();conn.setPstmt(sql);rs = conn.executeQuery(sql);while(rs.next())...{out.print("<option value='"+rs.getString("hy_dm")+"'>"+rs.getString("hy_mc")+"</option>");}out.print("</select>");}catch (Exception e)...{}finally...{try...{if (rs != null)rs.close();if (conn != null)conn.close();}catch (Exception e)...{e.printStackTrace();}}}return;}%><html><head><link href="Css/table.css" type="text/css" rel="stylesheet"><script language=vbscript src="css/bytetostr.js"></script><script language=javascript src="css/main.js"></script>//导入两个js文件</head><body><div>所属行业:</div><div id="hy_dm"></div> //用来显示返回的字符串<div >所属明细行业:</div><div id="hymx_dm"></div>//用来显示返回的字符串</body></html><script language="javascript">findObject("hy_dm","");findObject("hymx_dm","");//这两条是页面执行是调用</script>。

php_两级联动

php_两级联动

方法一代码:<SCRIPT LANGUAGE="JavaScript">function setzy() {switch (document.form1.xib.value) {case '请选择所在系' :var labels = new Array("请选择所在专业");var values = new Array("请选择所在专业");break;<?$xname = "";$rs = mysql_query("select `系名`,`专业名` FROM `专业表` order by `系名`"); while($row = @mysql_fetch_array($rs)){if($xname != $row[系名]){$xname = $row[系名];if($labels)echo substr($labels,0,-1).")\n break\n" .substr($values,0,-1).")\n break\n";echo"case '$xname' :\n";$labels = "labels = new Array(";$values = "values = new Array(";}$labels .= "'$row[专业名]',";$values .= "'$row[专业名]',";}echo substr($labels,0,-1).")\n break\n" .substr($values,0,-1).")\n break\n"; ?>}document.form1.zy.options.length = 0;for(var i = 0; i < labels.length; i++) {document.form1.zy.add(document.createElement("OPTION"));document.form1.zy.options.text=labels;document.form1.zy.options.value=values;}document.form1.zy.selectedIndex = 0;}</SCRIPT>方法二://数据库二级分类#下面的数据库联接函数可用自己的替换#如$DB->query() 即mysql_query();#$DB->fetch() 即 mysql_fetch_array()#QQ:59015622#E-mail:wangxinmingnet@require_once('../class/db.php');$query=$DB->query("SELECT `fenlei`,`fenlei2` FROM `class2`");?><script language=javascript><!--var subcat = new Array();<?$i=0;while($Row=$DB->fetch($query)){echo "subcat[$i]=newArray('".$Row['fenlei']."','".$Row['fenlei2']."','".$Row['fenlei2 ']."');\n";$i++;}//循出所有的数据到JS数组里去?>function changeselect1(locationid){//alert(subcat.length);document.form1.s2.length = 0;if(locationid){document.form1.s2.options[0] = new Option('请选择小类','');//下拉列表框输出为选择}else{document.form1.s2.options[0] = new Option('请先选择大类','');//下拉列表框输出为选择}//初始化下拉列表清空下拉数据for (i=0; i<subcat.length; i++){//在所有的分类里面进行查询//alert(subcat.length);if (subcat[i][0] == locationid){//alert(subcat[i][1]);document.form1.s2.options[document.form1.s2.length] = new Option(subcat[i][1], subcat[i][2]);}}}//--></script><form name="form1" action="" method="post" id="form1"><select name="s1" onChange="changeselect1(this.value);"><option selected>==请选择==</option><?php$query=$DB->query("SELECT `fenlei` FROM `class`");while($Row=$DB->fetch($query)){echo "<optionvalue=".$Row['fenlei'].">".$Row['fenlei']."</option>";}?></select><select name="s2"><option>==请选择==</option></select><input type="submit" name="Submit" value="提交"></form>方法三 ajax。

联动下拉列表实现方法

联动下拉列表实现方法
摘 要 : 开发 网络应 用程序 时 , 在 经常要 实现一些 复杂的信 息输入 或信 息查 询,而这些 功能的 实现必 须依赖于联 动下拉 列表 。联 动下拉 列表 的实现方 法有多种 , 效果也 有很 大的不 同 , 文就联 动下拉 列表的各种实现方法作 了一个探讨 , 论 其中重 点讨论 了比较 客易 用的一种方
法的实现 。
பைடு நூலகம்
关键词 : 动下拉列表 提 交表 单 A a 客 户端 联 jx 中图分类号 : P3 I 1 T I . 文献标识码 : A 联 动下拉 列表 , 即下拉 列表 B的 值由下拉 列表 A的选择值决定 , 当下拉 列表 A的值 改变 时, 下拉 列表 B的值也 自动改变 。以上是 一种 二级联 动的形式 , 联动 的下拉列表也可以是 三 级、四级甚至更多等 。利 用这种 联动关 系, 在 设计 动态网站时 , 以更方便地实现更 为复杂 可 的的 信息输 入或 信 息查询 的 任务 。 那么 , 有哪 些方法可以实现联动 下拉 列表 呢? 它们之 间又有何 差异呢 ?下面 来进行 讨 论。 () J v S r t 1 纯 a a ci 实现 p 纯Jv S r t 的联 动其实是完全在客 a a ci 实现 p 户端 实现的 , 即把 要联动的数据以 J v S r t a aci p 数组的形式存储在客 户端 的机 器上 , 通过脚本 代码调 用 函数 的方法 实现联 动。 这种方 式在 效率上是最优的 , 且用户体验性 也很好。但 而 是它的缺点就是下拉 列表的值是固定死的 , 如 果要 增加 或减 少数据 项的话 需要 修改 网页的 原代码 , 以可 扩展性和灵活度不够 。这种实 所 现方 法中 比较 典型的 例子便 是省 市联动 下拉 列表 , 这在很 多的需 要注册信息的 网站 中是 经 常见 到的 。因为全 国的省或 直辖 市及它们 所 辖地 区在相 当的时 间内是 固定不 变的 , 用这种 方法 实现是最好 的 , 实现起 来也 比较 容 易 , 这 里 就 不具 体 论 述 。 () 2 数据库 +提交表单 这种 方 法就是 两个或 多个 下拉 列表的值 分 别存在两张表 或多张 表 中, 或者是都在一张 表 中, 他们有父子一对 多的关 系。以两个联动 下拉 列表为例 , 体实现思 路是 : 页面 中首 具 在 先从数据库表 中读取出第一个下拉 列表 的值 , 以循环的方式输 出到列表项 中去 , 然后在 本下 拉列表 的 o C a g 事件里提 交表单到 本页 n hn e 面 , 后再根据提交的 第一 个下拉列表的值去 然 数据 库 中查 询出 第二个 下拉列表 的 内容并显 示 出来 。 这种方法的好处是数据是动态 的 , 随时 可 以 更改数据 库中的数据 , 比较 灵活 , 是一种 真 正 的动态 联动 。但是它 的缺 点也是 显而 易见 的, 那就 是每 次选 择第 一个 下拉都 要提 交表 单, 整个页面部要刷新 , 用户体验很差 , 能也 性 比较低 。而且如 果页面 上有 很多其 他用 户填 写的 数据 , 或者联动 的下拉 列表是三级甚至更 高时 , 要保存用 户填 写的数据或前级下拉 列表 的 当前值 是相 当麻烦 和烦琐 。但这 种方 式也 是大 家比较惯用的一种 , 所以这里再以 实例的 形 式深入讨论一 下。 以一个专业的学生 成绩查询为例 , 数据库 中有三 个表 : 课程表 ( 课程 号 、课 程名 ) ; 学 生 信 息 表 (学 号 、姓 名 、性 别 、年

asp怎么实现二级联动下拉菜单

asp怎么实现二级联动下拉菜单

asp怎么实现⼆级联动下拉菜单rs为⼀级栏⽬的记录集rs2为⼆级栏⽬的记录集分别替换成你⾃⼰的记录集名称就好了<script language="JavaScript">var onecount;var count;onecount=0;subcat = new Array();<%count = 0do while not rs2.eof%>subcat[<%=count%>]=new Array("<%=trim(rs2("eid"))%>","<%= trim(rs2("elm"))%>","<%= trim(rs2("ssyl"))%>"); <%count = count + 1rs2.movenextlooprs2.close%>onecount=<%=count%>;function changelocation(locationid){document.form1.elm.length = 0;document.form1.elm.options[document.form1.elm.length] = new Option("请选择⼆级栏⽬", "");var locationid=locationid;var i;for (i=0;i < onecount; i++){if (subcat[i][2] == locationid){document.form1.elm.options[document.form1.elm.length] = new Option(subcat[i][1], subcat[i][0]);}}}</script><form method="POST" name="form1" action="" onSubmit=""><table width="960"><tr><td width="571" colspan="3">栏⽬<select name="ylm" onChange="changelocation(document.form1.ylm.options[document.form1.ylm.selectedIndex].value)" size="1"> <option selected value="">请选择⼀级栏⽬</option><%do while not rs.eof%><option value="<%=trim(rs("yid"))%>"><%=trim(rs("ylm"))%></option><%rs.movenextlooprs.close%></select> >> <select name="elm" size="1" onchange="lm_true()"><option selected value="">请选择⼆级栏⽬</option></select><input type="submit" name="button" id="button" value="提交"/></table><input runat="server" type="hidden" name="MM_insert" value="form1" /></form>。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

PHP+MySQL实现二级联动下拉列表
1.Javascript在下拉列表的各个对象
2.案例代码
Liandong.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>PHP二级联动测试</title>
</head>
<body>
<?php
$link=mysql_connect("localhost","root","12345678") or die("Could not connect:".mysql_error());
mysql_select_db("phpquery") or die("Could not select database or database haven't created");
//获取大类别
$queryCol="select*from tb_firstcategory order by id";
mysql_query("set names utf-8");
$result1=mysql_query($queryCol) or die("Query failed:".mysql_error());
$firstcategories=array();
while($row1=mysql_fetch_array($result1)){
$firstcategories[]=$row1;
}
mysql_free_result($result1);
//获取小类别
$querySecondCat="select*from tb_secondcategory order by fid desc";
mysql_query("set names utf-8");
if(!($result2=mysql_query($querySecondCat))){
die("Cound not query tb_secondcategory list");
}
$secondcategories=array();
while($row2=mysql_fetch_array($result2)){
$secondcategories[]=$row2;
}
mysql_free_result($result2);
?>
<script language="javascript">
var secondcategoryCount;
//存储小类别的数据
form_secondcategory=new Array();
<?php
$num2=count($secondcategories); //获取小类别表中记录的个数?>
secondcategoryCount=<?php echo $num2;?>;
<?php
for($j=0;$j<$num2;$j++){ //从0开始取出上面小类别数据填充的数组
?>
form_secondcategory[<?php echo $j;?>]=new Array("<?php echo $secondcategories[$j]['id'];?>","<?php echo $secondcategories[$j]['fid'];?>","<?php echo $secondcategories[$j]['categoryname'];?>");
<?php } ?>
function changeFirstCate(fid){
document.form1.secondcategory.length=0;
var id=id;
var j;
for(j=0;j<secondcategoryCount;j++){
if(form_secondcategory[j][1]==fid){ //fid等于大类别的id document.form1.secondcategory.options[document.form1.secondcategory.length]=n ew Option(form_secondcategory[j][2],form_secondcategory[j][0]);
}else{
document.form1.secondcategory.options[0]=new Option('==选择小类别==',""); //label的value为空’’
}
}
}
//获取选中的列表文本
function getCategory(){
var first=document.getElementById("firstcategory");
var index=first.selectedIndex;
var second=document.getElementById("secondcategory");
var index1=second.selectedIndex;
alert(first.options[index].text+second.options[index1].text);
}
</script>
<form name="form1" method="post">
选择:<select id="firstcategory" name="firstcategory" onchange="changeFirstCate(document.form1.firstcategory.options[document.form1. firstcategory.selectedIndex].value)" size="1">
<option selected>==请选择大类别==</option>
<?php
$num=count($firstcategories);
for($i=0;$i<$num;$i++){
?>
<option value="<?php echo $firstcategories[$i]['id'];?>"><?php echo $firstcategories[$i]['categoryname'];?></option>
<?php
}
?>
</select>
<select id="secondcategory" name="secondcategory">
<option selected value="">==选择小类别==</option>
</select>
<input type="button" name="submit" value="提交" onclick="getCategory();"/>
</form>
<div id="rel" style="display:none;"></div>
</body>
</html>。

相关文档
最新文档