将mysql数组动态填充到下拉菜单中


dynamically populate mysql array into drop down menu

我有一个数据库,我想把数据放到网站上。它包含按名称和id列出的州。按id、namne和包含他们id的州列出的县,然后是存在的俱乐部,并引用他们所在的县id和实际数据的列。

我有什么:

一个用状态id和名称填充自身的下拉菜单。

我想完成的任务:

在选择state时,假设ny,取它的id,并使用它为country下拉列表收集另一个mysql数组。我希望它在选择状态时动态发生,甚至可能在下拉列表旁边给出结果计数。

$resstate = mysql_query("SELECT * FROM state ORDER by longstate;") or die("Note: " . mysql_error());
State:
   <select name="State" size=1>
     <?
        while( $rs = mysql_fetch_array( $resstate ) ) {
            echo "<option value=" .$rs['id'] . ">" . $rs['longstate'] . "</option>";
        }
   echo "</select>";
?>

我知道我可以在第一个下拉列表中使用JavaScript onChange="this.form.submit()",但我的理解是,那时我会制作一个新页面,不知道我是否可以保留州下拉列表的功能,比如说,如果你在想要纽约时意外选择了新罕布什尔州。

下面是当前数组填充下拉列表的示例:

http://snowmobileamerica.com/countytest.php

----编辑---

使用匕首的建议,我调查了Ajax。

我制作了一个php文件,该文件应该基于对getcounty.php的引用来查询数据库?q=

文件创建如下:

<?php
$q=$_GET["q"];
$cn=mysql_connect("localhost","user","password") or die("Note: " . mysql_error());
mysql_select_db("snowusa_clubs", $cn);
$sql="SELECT * FROM county WHERE state_id = '".$q."' ORDER by name";
$result = mysql_query($sql);

echo "<select name="County" size=1>";
while($rc = mysql_fetch_array($result))
{
echo "<option value=" .$rc['id'] . ">" . $rc['name'] . "</option>";
 }
 echo "</select>";
mysql_close($cn);
 ?> 

如果我尝试手动运行它http://www.snowmobileamerica.com/getcounty.php?q=33我收到一个500内部服务器错误。。。

你知道我哪里错了吗?

尝试向元素添加一个id,然后使用jquery:对处理程序进行ajax调用

$("#State").change(function() {
$.post("path/to/request handler/" , { "State" : $(this).val() },
function(data){
    if (data == "OK"){
        //add some elements here
    } else {
        //handle an error here
    }
});

});

还不能发表评论。但对于第二个问题,请尝试:

<?php
$q=$_GET["q"];
$cn=mysql_connect("localhost","user","password") or die("Note: " . mysql_error());
echo "Conn ok<br>";
mysql_select_db("snowusa_clubs", $cn);
echo " Database opened<br>"; 
$sql="SELECT * FROM county WHERE state_id = '$q' ORDER by name";
$result = mysql_query($sql);
echo " Database queried <br>";
echo "<select name='County' size=1>";
while($rc = mysql_fetch_array($result))
{
echo "<option value='" .$rc['id'] . "'>" . $rc['name'] . "</option>";//added single quotes in the value
 }
echo "</select> ";
mysql_close($cn);
?>