php实现多级select,前一级根据后一级做出选择

比如第一级select选择的是省份,第二级根据省份选出该省的城市。请以此为例给出详细的代码。... 比如第一级select选择的是省份,第二级根据省份选出该省的城市。请以此为例给出详细的代码。 展开
 我来答
知识储藏室在线升智商
推荐于2016-01-21 · TA获得超过158个赞
知道答主
回答量:88
采纳率:0%
帮助的人:83.2万
展开全部
这个要用到ajax 的。还要访问数据库。我给你贴上代码。
<select name="pro" onchange="showProvince(this.value)">
<option value="0" selected="selected">sheng</option>
<?php
$con = @mysql_connect("localhost","root","");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}

mysql_select_db("test", $con);

$sql = "SELECT * FROM pro";

$query = mysql_query($sql);

while($row = mysql_fetch_array($query)){
?>
<option value="<?php echo $row['pid'];?>" ><?php echo $row['pname'];?></option>

<?php }
mysql_close($con);
?>
</select>
<select name="city" class="city" onchange="showCity(this.value)" >
<option value="0" selected="selected">shi</option>
</select>
<select name="shi" class="xian" >
<option value="0" selected="selected">xian</option>
</select>
下面是ajax代码:
function showProvince($pid){
$.post("city.php",{pid:$pid},
function(data){
$(".city").html(data);
});
}
function showCity(cid){
$.post("shi.php",{cid:cid},
function(data){
$(".xian").html(data);
});
}

下面是两个php文件。主要是查询数据库的:
<?php
$con = @mysql_connect("localhost","root","");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}

mysql_select_db("test", $con);
$cid = $_POST['cid'];
$sql = "SELECT * FROM shi where cid = $cid";

$query = mysql_query($sql);

while($row = mysql_fetch_array($query)){
echo '<option value="'.$row['sid'].'">'.$row['sname'].'</option>';
}

mysql_close($con);

?>保存为shi.php;
<?php
$con = @mysql_connect("localhost","root","");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}

mysql_select_db("test", $con);
$pid = $_POST['pid'];
$sql = "SELECT * FROM city where pid = $pid";

$query = mysql_query($sql);

while($row = mysql_fetch_array($query)){
//echo $row['pid']."<br />";
echo '<option value="'.$row['cid'].'">'.$row['cname'].'</option>';
}

mysql_close($con);

?>保存为city.php

希望帮到你。
怿朴
2012-05-19 · TA获得超过120个赞
知道小有建树答主
回答量:159
采纳率:0%
帮助的人:109万
展开全部
js可以,ajax也可以
index.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>

<?php
$conn=mysql_connect("localhost:3308","root","");
mysql_select_db("pcc");
mysql_query("set names 'utf8'");
$sql="select * from province";
$query=mysql_query($sql);
while($row=mysql_fetch_array($query)){
$province[]=$row;
}
?>
<script src='jquery.js'></script>
<script>
$(document).ready(function(){
$("#province").change(function(){
var provinceid=$(this).val();
$("#citySpan").load("index_city.php?provinceid="+provinceid);
$("#areaSpan").html("<select id=\"area\" name=\"area\"><option value=\"0\">请选则区</option></select>");
});
})
function selectArea(){
var cityid=$("#city").val();
$("#areaSpan").load("index_area.php?cityid="+cityid);
}
</script>

<select id="province" name="province">
<option value='0' >请选则省</option>
<?php
foreach($province as $k=>$v){
?>
<option value='<?php echo $v['provinceid']?>'><?php echo $v['province']?></option>
<?php
}
?>
</select>
<span id="citySpan">
<select id="city" name="city">
<option value="0">请选则市</option>
</select>
</span>
<span id="areaSpan">
<select id="area" name="area">
<option value="0">请选则区</option>
</select>
</span>

index_area.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<?php
$conn=mysql_connect("localhost:3308","root","");
mysql_select_db("pcc");
mysql_query("set names 'utf8'");
$sql="select * from area where fatherid=".$_GET['cityid'];
$query=mysql_query($sql);
while($row=mysql_fetch_array($query)){
$city[]=$row;
}
?>
<select id="area" name="area">
<option value="0">请选则区</option>
<?php
foreach($city as $k=>$v){
?>
<option value='<?php echo $v['areaid']?>'><?php echo $v['area']?></option>
<?php
}
?>
</select>

index_city.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>

<?php
$conn=mysql_connect("localhost:3308","root","");
mysql_select_db("pcc");
mysql_query("set names 'utf8'");
$sql="select * from city where fatherid=".$_GET['provinceid'];
$query=mysql_query($sql);
while($row=mysql_fetch_array($query)){
$city[]=$row;
}
?>
<select id="city" name="city" onchange="selectArea()">
<option value="0">请选则市</option>
<?php
foreach(@$city as $k=>$v){
?>
<option value='<?php echo $v['cityid']?>'><?php echo $v['city']?></option>
<?php
}
?>
</select>

数据库放不下,反正代码给你了,思路自己摸索
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
秋丶晚风
2012-05-19
知道答主
回答量:49
采纳率:0%
帮助的人:14.4万
展开全部
<%dim count set rs=server.createobject("adodb.recordset") rs.open "select * from info",conn,1,1%> <script language = "JavaScript"> var onecount; onecount=0; subcat = new Array(); <% count = 0 do while not rs.eof %> subcat[<%=count%>] = new Array("<%= rs("typeinfo")%>","<%= rs("classtype")%>","<%= rs("typenum")%>"); <% count = count + 1 rs.movenext loop rs.close %> onecount=<%=count%>; function changelocation(locationid) { document.reg_frm.classtype.length = 0; var locationid=locationid; var i; for (i=0;i < onecount; i++) { if (subcat[i][1] == locationid) { document.reg_frm.classtype.options[document.reg_frm.classtype.length] = new Option(subcat[i][0], subcat[i][2]); } } } </script> <select name="type" id="type" onChange="changelocation(document.reg_frm.type.options[document.reg_frm.type.selectedIndex].value)"> <select name="classtype">
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
行不得反诸已
2012-05-19 · 超过48用户采纳过TA的回答
知道答主
回答量:171
采纳率:0%
帮助的人:112万
展开全部
给你一个思路吧,可以实现:
一个是利用AJAX支持实现。当第一个select的值发生改变时触发事件,使用AJAX技术到服务器获取对应的列表值。
如果你这个多级联动中所有的值都是固定的话,最好使用JS来实现,这样比较节省服务器资源,像全国省市区县类似的三级联动,这样值都是固定的,就可以使用js.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式