我有一个数据库,我想把数据放到网站上。它包含按名称和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);
?>