我的库结构如下
表名        字段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.   

    参考一下这个帖子10楼
    http://topic.csdn.net/u/20091204/14/0c507d60-7cff-49ee-9d58-1c044cf9a0b9.html
      

  2.   

    参考http://user.qzone.qq.com/240034137/infocenter?ptlang=2052
    JS 2级  AJAX3级
      

  3.   


    <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>
      

  4.   

    没数据 就没测试 !要有什么问题 楼主自己该一下吧! 就是吧sub中subid作为option value值然后你选着select出发onChange事件
    product表就是选出 subid和pname 组成数组! 然后在JS函数changelocation中查看数组中的每个subid值和select所触发onChange事件的option value值是否相同.然后输出!
      

  5.   

    一般用缓存,用ajax取缓存数据就好了,免得每次都从数据库查
      

  6.   

    2楼让我去看另一贴子,可惜没有库结构无法得出所以然。
    我这边测试主要还是无法将mysql select结果保存在js 的二维数组。
    主要是我的基础知识不够,更不用提ajax缓存数据的实现。