从d / base填充下拉列表,然后使用ajax检索

时间:2012-09-05 22:06:27

标签: php mysql ajax

我有一个关于如何组合几个元素的查询:

  1. 标准下拉选择框,用户可以从源自mysql数据库表的名称列表中进行选择。

  2. 从此框中选择一个ajax函数,该函数检索更多数据并显示在页面下方div中的html表格中。从下拉列表中选择新名称时 - 表数据刷新

  3. 我可以让两个元素单独工作但不能一起工作,即当我将名称单独写入html选择位时javascript / ajax工作,但当我实现PHP自动填充下拉列表时,其他数据不会拉进来。

    一些代码:

    <head>
    <?php
    $con = mysql_connect("localhost","******","*******");
    if (!$con)
      {
      die('Could not connect: ' . mysql_error());
      }
    
    mysql_select_db("*******", $con);
    
    $sql="SELECT 
    People1.person_id, 
    People1.forename,
    People1.surname,
    People1.team_id
    FROM People1
    WHERE People1.team_id = 8";
    
    $result=mysql_query($sql);
    $options="";
    
    while ($row=mysql_fetch_array($result)) { 
    
    $id=$row["person_id"]; 
    $thing=$row["forename"]; 
    $options.="<OPTION VALUE=\"$id\">".$thing; 
    }
    ?>
    
    <script type="text/javascript">
    function showUser(str)
      {
    if (str=="")
      {
      document.getElementById("txtHint").innerHTML="";
      return;
      } 
    if (window.XMLHttpRequest)
      {// code for IE7+, Firefox, Chrome, Opera, Safari
      xmlhttp=new XMLHttpRequest();
      }
      else
      {// code for IE6, IE5
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
      xmlhttp.onreadystatechange=function()
      {
    if (xmlhttp.readyState==4 && xmlhttp.status==200)
      {
      document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
      }
      }
    xmlhttp.open("GET","getuser.php?q="+str,true);
    xmlhttp.send();
    }
    </script>
    </head>
    
    <body>
    <h1>Player Info</h1>
      <form>
      <SELECT NAME="player_id" "showUser(this.value)">
      <OPTION VALUE="">Choose</OPTION>
      <OPTION VALUE=<?=$options?>></OPTION>
      </SELECT> 
      </form>
    <br />
    
    <div id="txtHint"><b>Person info will be listed here.</b></div>
    </body>
    </html>
    

    在上面的所有内容中,我得到了下拉到几乎没有问题,但选择名称并没有从getuser.php文件中带来任何东西。

1 个答案:

答案 0 :(得分:2)

您的while循环应该是以下

while ($row=mysql_fetch_array($result)) { 

   $id=$row["person_id"]; 
   $thing=$row["forename"]; 
   $options.="<OPTION VALUE=\"$id\">".$thing."</OPTION>"; 
}

select阻止应该是以下

<SELECT NAME="player_id" onchange="showUser(this.value)">
  <OPTION VALUE="">Choose</OPTION>
  <?=$options?>
</SELECT>