Ank*_*rma 11 html javascript php mysql
我通过从mysql数据库中获取两个下拉列表的记录来构建两个下拉(如州和城市),并且我正在尝试构建工具,在此时从第一个下拉列表中选择任何值(即任何状态)在第二次下拉(在城市中)中,只有那些在第一次下拉列表中选择的值(州)下的值(城市)应该是可见的.
这是我的代码:
<tr>
<td id='hed'><span style="font-family:verdana,geneva,sans- serif">State</state></td>
<td>
<?php
$dbcon = mysql_connect("@ip","@username","@password");
if($dbcon)
{
mysql_select_db("@database", $dbcon);
}
else
{
die('error connecting to the database');
}
$qry = "select @value(state) from @tablename ";
$result = mysql_query($qry) or die(mysql_error());
$dropdown = "<select name='@valuename' id='officeItemList' style='cursor:pointer;cursor:hand;'>";
while($row = mysql_fetch_array($result))
{
$dropdown .= "\r\n<option value='{$row['@value']}' > {$row['@value']} </option>";
}
$dropdown .= "\r\n</select>";
echo $dropdown;
mysql_close($dbcon);
?>
</td>
</tr>
<tr>
<td id='hed'><span style="font-family:verdana,geneva,sans-serif">City</span></td>
<td colspan="1">
<?php
$dbcon = mysql_connect("@ip","@username","@password");
if($dbcon)
{
mysql_select_db("@database", $dbcon);
}
else
{
die('error connecting to the database');
}
$qry = "select value2(city) from @tablename where ";
$result = mysql_query($qry) or die(mysql_error());
$dropdown = "<select name='@value2' id='officeItemList' style='cursor:pointer;cursor:hand;'>";
while($row = mysql_fetch_array($result))
{
$dropdown .= "\r\n<option value='{$row['@value2']}' > {$row['@value2']} </option>";
}
$dropdown .= "\r\n</select>";
echo $dropdown;
mysql_close($dbcon);
?>
</td>
</tr>
Run Code Online (Sandbox Code Playgroud)
这是错误的方式.在向用户显示页面之前,您的PHP代码已完全执行.所以第二个查询永远不会知道用户选择了什么.
正确的方法#1:两页做.第一页包含第一个组合,当它被提交时,第二页生成并显示第二个组合.
正确的方式#2虽然不是最佳的:在一页中做它.将第二个组合的所有可能记录加载到某个JS数组.将侦听器放置到第一个数组.当用户选择使用JS-array中的正确记录填充第二个组合时.
正确的方式#3(最右边的):在包含AJAX请求的页面中进行.用户在第一个组合中选择一个值.它的侦听器向某个服务器脚本发送请求,该脚本返回带有第二个组合记录的JSON对象.
您可以使用 AJAX 获取所选州的城市。就像是:
$("select#state").change(
function(){
var state = $(this).val();
$.ajax({
type: "GET",
url: "get_cities.php/?state=" + state,
// write a query according to the state selected and return the HTML for the OPTION's
success: function(cities){
$("select#cities").html(cities);
}
});
}
);
Run Code Online (Sandbox Code Playgroud)
您还可以返回一个 json 对象(在这种情况下不要忘记添加)并在客户端(即函数dataType:"json"内部)转换为 HTMLsuccess