界面中有两个下拉框,下来框中的值都是从数据库里读出来的, 在第一个中选择某项的时候,第二个下拉框中的值有所改变,(也就是查询数据库的时候条件改变了)?怎么实现?
我现在用js函数 能得到第一个下拉框中的选择值了。
怎么改变第二个下拉框中的值呢?

解决方案 »

  1.   

    果断Ajax,仅供参考:<?php
    /* Created on [2012-5-16] Author[newton] */
    #查询标题信息
    $sql="select * from table";
    $res=mysql_query($sql);
    if(!$res) die("SQL: {$sql} <br>Error:".mysql_error());
    if(mysql_affected_rows() > 0){
    $titles = array();
    while($rows = mysql_fetch_array(MYSQL_ASSOC)){
    array_push($titles,$rows);
    }
    }
    ?><table border=1>
    <?php foreach($titles as $row_Recordset_task){ ?>
    <tr>
    <td>
    <a href="javascript:void(0)" onclick="record(<?=$row_Recordset_task['TID']?>)" >
    <?=$row_Recordset_task['csa_title']?>
    </a>
    </td>
    </tr>
    <?php } ?>
    </table>
    <div id="show"></div>
    <form name="frm">
    <select name="s1" onChange="redirec(this.value)">
     <option selected>请选择</option>
     <option value="1">内科</option>
     <option value="2">内科</option>
     <option value="3">内科</option>
    </select>
    <div id="s2"></div>
    </form>
    <script>
    //Ajax
    var xmlHttp; function createXMLHttpRequest() {
    if(window.XMLHttpRequest) {
    xmlHttp = new XMLHttpRequest();
    } else if (window.ActiveXObject) {
    xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    } function record(id){
    createXMLHttpRequest();
    url = "action.php?id="+id+"&ran="+Math.random();
    method = "GET";
    xmlHttp.open(method,url,true);
    xmlHttp.onreadystatechange = show;
    xmlHttp.send(null);
    } function show(){
    if (xmlHttp.readyState == 4){
    if (xmlHttp.status == 200){
    var text = xmlHttp.responseText;
    document.getElementById("s2").innerHTML = text;
    }else {
    alert("response error code:"+xmlHttp.status);
    }
    }
    }
    </script>
    <?php
    #action.php
    if(isset($_GET['id'])){
    $sql="select * from table where id=".$_GET['id'];
    $res=mysql_query($sql);
    if(!$res) die("SQL: {$sql} <br>Error:".mysql_error());
    if(mysql_affected_rows() > 0){
    $arrMenu=array();
    while($rows = mysql_fetch_array(MYSQL_ASSOC)){
    array_push($arrMenu,$rows);
    }
    }
    mysql_close();
    if(!empty($arrMenu)){
    echo "<select name='menu2'>";
    foreach($arrMenu as $item2){
    echo "<option value='{$item2['id']}'>{$item2['name']}</option>";
    }
    echo "</select>";
    }
    }?>
      

  2.   

    这个必须得使用ajax了.实现的手段是
    1.下拉框 下拉选取后 onchange(忘记是不是用onchange) 触发 ajax事件
    2.ajax 从服务器端读取数据库新的数据返回给js
    3.js 依据返回的数据修改下拉2的数据,或重写整个下拉2的部分.
      

  3.   

    事件触发:onchange 
    清空select: select.options.length=0;
    插入option: select.options.add(new Option("显示值", "真实值"));