1

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

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

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

我可以让两个元素单独工作但不能一起工作,即当我将名称单独写入 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 文件中带来任何东西。

4

1 回答 1

2

您的while循环应该如下

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

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

而你select的block应该是以下

<SELECT NAME="player_id" onchange="showUser(this.value)">
  <OPTION VALUE="">Choose</OPTION>
  <?=$options?>
</SELECT>
于 2012-09-05T22:14:30.100 回答