⑴ php联动效果
1。如果数据量很大需要用ajax,就是在每次change时发送请求道服务器,返回数据
这种方法网上有很多,搜三级联动菜单就可以
2.如果数据量不大,可以一次读到放到静态html文件里边用js实现
例子:简单的方法,描述如下
读取数据库students :字段studentid ,studentname,studentgroup
<select name="type_sel" id="type_sel" onchange="document.getElementById('test_t').innerHTML=this.begin;">
<option value="学生id1" begin='学生姓名1'>学生1</option>
<option value="学生id2" begin='学生姓名2'>学生2</option>
</select>
<div id='test_t'></div>
⑵ AJAX 动态二级下拉联动菜单 给个实例吧!ASP 或者PHP 都可以
<script language = "javaScript">
sall=new Array();
<%
Dim i
i=0
set rs=server.createobject("adodb.recordset")
sql="select * from N_smallclass order by ID desc"
rs.open sql,conn,1,1
do while not rs.eof
%>
sall[<%=i%>]=new Array("<%=rs("smallclassname")%>","<%=rs("N_ClassID")%>","<%=rs("ID")%>");
<%
i=i+1
rs.movenext
loop
rs.close
set rs=nothing
%>
function changelocation(locationid)
{
document.form1.smallclassid.length = 0;
var locationid=locationid;
var i;
for (i=0;i <sall.length; i++)
{
if (sall[i][1] == locationid)
{
document.form1.smallclassid.options[document.form1.smallclassid.length] = new Option(sall[i][0], sall[i][2]);
}
}
}
</script>
<tr>
<td height="30" align="right" bgcolor="#FFFFFF" class="fontblankB">产品类别:</td>
<td bgcolor="#FFFFFF"> <%
Set classrs = conn.Execute("select * from N_Class order by classid desc")
if classrs.eof and classrs.bof then
response.write "<script language='javascript'>"
response.write "alert('还未添加产品分类,请先添加产品分类!');"
response.write "location.href='N_admin_proct.asp';"
response.write "</script>"
response.End()
end if
%>
<select name="classid" class="inputclass" id="classid" style="width:150px;height:20px" onchange="changelocation(document.form1.classid.options[document.form1.classid.selectedIndex].value)">
<%do while not classrs.eof
selectstr=""
if action="mod" then
if classrs("classid")=Newsmodrs("classid") then
selectstr="selected"
end if
end if
%>
<option value="<%=classrs("classid")%>" <%=selectstr%>><%=classrs("N_classname")%></option>
<%
classrs.movenext
loop
%>
</select>
<%
classrs.close
set classrs=nothing
%>
<select name="smallclassid" class="inputclass" id="smallclassid" style="width:150px;height:20px">
<%
if action="mod" Then
response.write Trim(Newsmodrs("smallclassid"))&"--"
set Newsmodrs4=conn.execute("select * from N_smallclass where id="&Trim(Newsmodrs("smallclassid"))&"")
if Not Newsmodrs4.eof And Not Newsmodrs4.bof Then
smallclassname=Newsmodrs4("smallclassname")
%>
<option value="<%=Newsmodrs("smallclassid")%>" selected><%=smallclassname%></option>
<%
End If
Newsmodrs4.close
Set Newsmodrs4=nothing
end if
%>
</select>
</td>
</tr>
⑶ PHP 文本框和下拉菜单联动
可以不用ajax,用javascript实现,但缺点是如果信息需要及时性
那么就不裂销扰行了(就是在你级联时,数据库的信息更新了,那样ajax可以直肆旦接读新数据,但纯粹的javascript就只是级联的当前页面的数组内容)
1.在当前页面加载时 把下拉框的内容保存在javascript的数组里
2.再写下拉框斗团的级联,也是javascript可以实现
3.把最后确定的信息 赋值给文本框 javascript可以实现
上面的东西我用过 绝对可以 只是代码有点复杂
⑷ php ajax关于省市联动
$('option','#area').reomove();
$.each(data,function(index,ary){
$('#area').append("<没谈虚optionvalue='"+ary['id']+"'>枯燃"+ary['countyName']+"<侍贺/option>");
});
放在你的ajax方法里。
⑸ 关于php+mysql+ajax省市区三级联动菜单,求帮助
先前铅档台输出所有省,然后选择省的执行js方法,获取用户选择的省的id,然森斗后通过ajax传递到后台,获取该省下的所槐春乱有市。区同理
⑹ 关于php+mysql+ajax省市区三级联动菜单,求帮助
基本思想就是:在JS动态创建select控件的option,通过Ajax获取在PHP从SQL数据库获取的省市区信息,代码有点长,但很多都是类似的,例如JS中省、市、区获取方法类似,PHP中通过参数不同执行不同的select语句。
index.html代码:
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<head>
<title>省市区三级联动</title>
<METAhttp-equiv=Content-Typecontent="text/html;charset=gb2312">
<scriptsrc="scripts/thumbnails.js"type="text/javascript"></script>
</head>
thumbnails.js代码:
window.onload=getProvince;
functioncreateRequest(){//Ajax于PHP交互需要对象
try{
request=newXMLHttpRequest();//创建一个新的请求对象;
}catch(tryMS){
try{
request=newActiveXObject("Msxml2.XMLHTTP");
}catch(otherMS){
try{
request=newActiveXObject("Microsoft.XMLHTTP");
}catch(failed){
request=null;
}
}
}
returnrequest;
}
functionsech(id){//省市改变时触发,select的onchange事件
varaa=document.getElementById(id);
if(id=="sheng"){
getCity(aa.value);//这里aa.value为省的id
}
if(id=="shi")
{
getCounty(aa.value);//这里aa.value为市的id
}
}
functiongetProvince(){//获取所有省
request=createRequest();
if(request==null){
alert("Unabletocreaterequest");
return;
}
varurl="getDetails.php?ID=0";//ID=0时传递至PHP时让其获取所有省
request.open("GET",url,true);
request.onreadystatechange=displayProvince;//设置回调函数
request.send(null);//发送请求
}
functiongetCity(id){//获取省对应的市
request=createRequest();
if(request==null){
alert("Unabletocreaterequest");
return;
}
varurl="getDetails.php?ID="+escape(id);
request.open("GET",url,true);
request.onreadystatechange=displayCity;
request.send(null);
}
functiongetCounty(id){//获取市对应的区
request=createRequest();
if(request==null){
alert("Unabletocreaterequest");
return;
}
varurl="getDetails.php?ID="+escape(id);
request.open("GET",url,true);
request.onreadystatechange=displayCounty;
request.send(null);
}
functiondisplayProvince(){//将获取的数据动态增加至select
if(request.readyState==4){
if(request.status==200){
vara=newArray;
varb=request.responseText;//将PHP返回的数据赋值给b
a=b.split(",");//通过","将这一数据保存在数组a中
document.getElementById("sheng").length=1;
varobj=document.getElementById("sheng');
for(i=0;i
obj.options.add(newOption(a[i],i+1));//动态生成OPTION加到select中,第一个参数为Text,第二个参数为Value值.
}
}
}
functiondisplayCity(){//将获取的数据动态增加至select
if(request.readyState==4){
if(request.status==200){
vara=newArray;
varb=request.responseText;
a=b.split(",");
document.getElementById("shi").length=1;//重新选择
document.getElementById("xian").length=1;//重新选择
if(document.getElementById("sheng").value!="province"){
varobj=document.getElementById('shi');
for(i=0;i
obj.options.add(newOption(a[i],document.getElementById("sheng").value*100+i+1));//ocument.getElementById("sheng").value*100+i+1对应的是市的ID。
}
}
}
}
functiondisplayCounty(){//将获取的数据增加至select
if(request.readyState==4){
if(request.status==200){
vara=newArray;
varb=request.responseText;
a=b.split(",");
document.getElementById("xian").length=1;
if(document.getElementById("sheng").value!="province"&&document.getElementById("shi").value!="city"){
varobj=document.getElementById('xian');
for(i=0;i
obj.options.add(newOption(a[i],i+1001));
}
}
}
}
getDetails.php代码:
<?php
header("Content-Type:text/html;charset=gb2312");
$conn=newCOM("ADODB.Connection")ordie("CannotstartADO");
$connstr="Provider=SQLOLEDB;PersistSecurityInfo=False;UserID=root;Password=123456;InitialCatalog=area;DataSource=localhost";
if($_REQUEST['ID']==0){//获得省列表
$conn->Open($connstr);//建立数据库连接
$sqlstr="selectnamefromProvince";//设置查询字符串
$rs=$conn->Execute($sqlstr);//执行查询获得结果
$num_cols=$rs->Fields->Count();//得到数据集列数
$Province=array();
$i=0;
while(!$rs->EOF){
$Province[$i]=$rs->Fields['name']->Value.",";
$rs->MoveNext();
$i++;
}
foreach($Provinceas$val)
echo$val;
$conn->Close();
$rs=null;
$conn=null;
}
if($_REQUEST['ID']>0&&$_REQUEST['ID']<35){//获得省对应的市列表
$conn->Open($connstr);//建立数据库连接
$sqlstr="selectnamefromCitywherecid=".$_REQUEST['ID'];//设置查询字符串
$rs=$conn->Execute($sqlstr);//执行查询获得结果
$num_cols=$rs->Fields->Count();//得到数据集列数
$City=array();
$i=0;
while(!$rs->EOF){
$City[$i]=$rs->Fields['name']->Value.",";
$rs->MoveNext();
$i++;
}
foreach($Cityas$val)
echo$val;
$conn->Close();
$rs=null;
$conn=null;
}
if($_REQUEST['ID']>100){//获得省市对应的县列表
$conn->Open($connstr);//建立数据库连接
$sqlstr="selectnamefromCountywherecid=".$_REQUEST['ID'];//设置查询字符串
$rs=$conn->Execute($sqlstr);//执行查询获得结果
$num_cols=$rs->Fields->Count();//得到数据集列数
$County=array();
$i=0;
while(!$rs->EOF){
$County[$i]=$rs->Fields['name']->Value.",";
$rs->MoveNext();
$i++;
}
foreach($Countyas$val)
echo$val;
$conn->Close();
$rs=null;
$conn=null;
}
?>
数据库设计,表格Province表,City表,County表。
要求:Province表需要id和name,id建议从1至34,例如北京id为1,广东id为2,以此类推;
City表需要id,name和cid,id为cid*100+1,cid为该市的上级,例如深圳的上级为广东省,cid为2的话,深圳的id就是201,以此类推。
County表需要id,name和cid,因为是三级的关系,id可以随意,建议从10001开始自增。cid为所在上级,例如宝安区的cid为201,龙岗区的cid也为201;
截图:
HTML效果:
⑺ 如何在PHP中使用ajax做一个级联菜单
可以的。。比较简单。。如果枣悔前者动态内链岩搏容知道的话,由前者提交数据给后台从后台将该面所对棚祥应的数据传到js中
由js来处理后者下拉框的内容!传值一般xml
或者json数据
我建议使用json数据最好!
⑻ 想问下thinkphp通过ajax如何实现二级联动
引入jquery来帮助你实现.比较简单.给你一个例子吧.后台是派拦谨用PHP写的.html文件内容demo请选择东北华北=============b.php内尘基容辽宁吉宁黑龙江";echo$area_option;break;}case2:{$area_option="北京天衡野津河北";echo$area_option;break;}}?>