我的库结构如下
表名 字段1 字段2 字段3
sub subid subname
product pid pname subid想实现在表单中选择第一选择框 subname(类别) ,第二个选择框中自动出现关联的pname(产品名称),(sub.subid=product.subid) 。
这个网上用的最多的是省市县二级或三级联动,但大多用数组把option的值固定下来(省市县名称很少变动的),所以跟数据库调用有很大区别的.
因为javascript是客户端的,要把select的值传输到php ->mysql进而利用关联和javascript 的 new Option()重新定义第二选择框的option显示和值;
我测试了许多搜来的代码,没有一个能成功实现.
希望csdn的高手指点一二。谢谢!
贴一个代码例子,没有按以上库结构(在我这里测试不成功 iis+php5.2+mysql 5.0)
javascript
var onecount; onecount=0; subcat = new Array(); <?php mysql_connect("localhost","root",""); mysql_select_db( "test" ); $sql = "select * from subject"; $result = mysql_query( $sql ); $count = 0; while($res = mysql_fetch_row($result)){ ?> subcat[<?php $count?>] = new Array("<?php $res[0]?>","<?php $res[1]?>","<?php $res[2]?>"); <?php $count++; } echo "onecount=$count;"; ?> //联动函数 function changelocation(locationid) { document.myform.ctype.length = 0; var locationid=locationid; var i; for (i=0;i < onecount; i++) { if (subcat[i][2] == locationid) { //var newOption1=new Option(subcat[i][1], subcat[i][0]); //document.all.ctype.add(newOption1); document.myform.ctype.options[document.myform.ctype.length] = new Option(subcat[i][1], subcat[i][0]); } } }
html <form method="post" name="myform" action="ru_query.php"> <select name="type" onChange="changelocation(document.myform.type.options[document.myform.type.selectedIndex].value)" size="1"> <option selected value="">请指定主分类</option> <?php $sql = "select * from depart"; $result = mysql_query( $sql ); while($res = mysql_fetch_row($result)){ ?> <option value="<?php echo $res[0]; ?>"><?php echo $res[1]; ?></option> <?php } ?> </select> <select name="ctype"> <option selected value="">请指定小分类</option> </select> <input type="submit" name="Submit" value="搜索"> </form>
表名 字段1 字段2 字段3
sub subid subname
product pid pname subid想实现在表单中选择第一选择框 subname(类别) ,第二个选择框中自动出现关联的pname(产品名称),(sub.subid=product.subid) 。
这个网上用的最多的是省市县二级或三级联动,但大多用数组把option的值固定下来(省市县名称很少变动的),所以跟数据库调用有很大区别的.
因为javascript是客户端的,要把select的值传输到php ->mysql进而利用关联和javascript 的 new Option()重新定义第二选择框的option显示和值;
我测试了许多搜来的代码,没有一个能成功实现.
希望csdn的高手指点一二。谢谢!
贴一个代码例子,没有按以上库结构(在我这里测试不成功 iis+php5.2+mysql 5.0)
javascript
var onecount; onecount=0; subcat = new Array(); <?php mysql_connect("localhost","root",""); mysql_select_db( "test" ); $sql = "select * from subject"; $result = mysql_query( $sql ); $count = 0; while($res = mysql_fetch_row($result)){ ?> subcat[<?php $count?>] = new Array("<?php $res[0]?>","<?php $res[1]?>","<?php $res[2]?>"); <?php $count++; } echo "onecount=$count;"; ?> //联动函数 function changelocation(locationid) { document.myform.ctype.length = 0; var locationid=locationid; var i; for (i=0;i < onecount; i++) { if (subcat[i][2] == locationid) { //var newOption1=new Option(subcat[i][1], subcat[i][0]); //document.all.ctype.add(newOption1); document.myform.ctype.options[document.myform.ctype.length] = new Option(subcat[i][1], subcat[i][0]); } } }
html <form method="post" name="myform" action="ru_query.php"> <select name="type" onChange="changelocation(document.myform.type.options[document.myform.type.selectedIndex].value)" size="1"> <option selected value="">请指定主分类</option> <?php $sql = "select * from depart"; $result = mysql_query( $sql ); while($res = mysql_fetch_row($result)){ ?> <option value="<?php echo $res[0]; ?>"><?php echo $res[1]; ?></option> <?php } ?> </select> <select name="ctype"> <option selected value="">请指定小分类</option> </select> <input type="submit" name="Submit" value="搜索"> </form>
http://topic.csdn.net/u/20091204/14/0c507d60-7cff-49ee-9d58-1c044cf9a0b9.html
JS 2级 AJAX3级
<script language = "JavaScript">
var onecount;
onecount=0;
subcat = new Array();
<?
mysql_connect("localhost","root","");
mysql_select_db( "tt" );
mysql_query('Set names utf8');
$sql="select * from product ";
$result = mysql_query( $sql );
$count = 0;
while($res = mysql_fetch_row($result))
{
?>
subcat[<?echo$count;?>] = new Array("<?echo$res['pname'];?>","<?echo$res['subid'];?>");
<?
$count++;
}
echo "onecount=$count";
?> function changelocation(locationid)
{
document.myform.ctype.length = 0;
var locationid=locationid;
var i;
for(i=0;i<onecount;i++)
{
if(subcat[i]['subid'] == locationid)
{
document.myform.ctype.options[document.myform.ctype.length] = new Option(subcat[i]['pname']);
}
}
}
</script>
<form method="post" name="myform" action="">
<select name="type" onChange="changelocation(document.myform.type.options[document.myform.type.selectedIndex].value)">
<option selected value="">父</option>
<?
$conn=mysql_connect("localhost","root","");
$sql1="select * from sub ;";
$rueslt= mysql_db_query(数据库名称,$sql1);
mysql_query('Set names utf8');
while($res1=mysql_fetch_row($rueslt))
{
?>
<option value="<?echo$res1['subid'];?>"><?echo$res1['subname'];?></option>
<?
}
?>
</select>
<select name="ctype">
<option selected value="">子</option>
</select>
</form>
product表就是选出 subid和pname 组成数组! 然后在JS函数changelocation中查看数组中的每个subid值和select所触发onChange事件的option value值是否相同.然后输出!
我这边测试主要还是无法将mysql select结果保存在js 的二维数组。
主要是我的基础知识不够,更不用提ajax缓存数据的实现。
唉