PHP中的服务器端级联下拉列表
因为我在第一个下拉列表中只有一个值,所以我尝试在PHP中创建一个级联下拉列表,在页面加载时填充第二个下拉列表 我的数据库有一个名为“nights”的表,其中包含名为“city”、“name”和“day”的字段 为了填充我的第一个方框,我使用了PHP中的服务器端级联下拉列表,php,mysql,html,variables,drop-down-menu,Php,Mysql,Html,Variables,Drop Down Menu,因为我在第一个下拉列表中只有一个值,所以我尝试在PHP中创建一个级联下拉列表,在页面加载时填充第二个下拉列表 我的数据库有一个名为“nights”的表,其中包含名为“city”、“name”和“day”的字段 为了填充我的第一个方框,我使用了从夜晚中选择不同的城市等等,这些都很有效 要填充第二个框,我需要一些类似于选择名称WHERE city=$city-我的问题是我不确定如何设置$city(作为标记的名称)。我无法使用$\u POST['city'],因为此时尚未发送表单 有什么想法吗?您可以
从夜晚中选择不同的城市
等等,这些都很有效
要填充第二个框,我需要一些类似于选择名称WHERE city=$city
-我的问题是我不确定如何设置$city
(作为
标记的名称)。我无法使用$\u POST['city']
,因为此时尚未发送表单
有什么想法吗?您可以使用AJAX来实现这一点
在change event call javascript ajax函数中,该函数调用php脚本,使您可以使用第二个下拉菜单caode。如果您希望这是动态的(即,在用户更改下拉菜单后),您必须使用javascript首先查询php页面(可能使用),然后相应地调整下拉菜单。网上有很多这方面的教程 如果只希望填充初始页面数据,可以从查询中选择第一个城市,并将选项设置为选中,然后在下一次查询中使用该城市 比如:
$first = True;
while($row = mysql_fetch_array($result))
{
echo "<option" . (($first) ? " selected" : "") . ">" . $row['city'] . "</option>";
if($first)
{
$first = !$first;
$city = $row['city'];
}
}
//now do stuff with with $city
$first=True;
while($row=mysql\u fetch\u数组($result))
{
回显“$行[“城市]”;
如果($第一)
{
$first=!$first;
$city=$row['city'];
}
}
//现在用$city做一些事情
您需要使用ajax从php脚本加载选项。
下面是一个使用jquery和ajax的示例:
将第二个框留空,直到选择了一个城市。我可能应该补充:我现在正试图避免使用JS/jQuery,因为我对它不是很有经验,我需要在接下来的几天内完成该站点。
<?
$CITIES = query_result("SELECT DISTINCT cities FROM nights;");
if (isset($_POST["city"])) {
$NAMES = query_result("SELECT name FROM nights WHERE city = '{$_POST[city]}'");
if (isset($_POST["day"])
$DAYS = query_result("SELECT day FROM nights WHERE city='{$_POST[city]}'".
" AND name = '{$_POST[name]}'");
else
$DAYS = array();
} else
$NAMES = array();
/* now output the <select> markup for $CITIES, $NAMES and $DAYS */
?>