Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP中的服务器端级联下拉列表_Php_Mysql_Html_Variables_Drop Down Menu - Fatal编程技术网

PHP中的服务器端级联下拉列表

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'],因为此时尚未发送表单 有什么想法吗?您可以

因为我在第一个下拉列表中只有一个值,所以我尝试在PHP中创建一个级联下拉列表,在页面加载时填充第二个下拉列表

我的数据库有一个名为“nights”的表,其中包含名为“city”、“name”和“day”的字段

为了填充我的第一个方框,我使用了
从夜晚中选择不同的城市
等等,这些都很有效

要填充第二个框,我需要一些类似于
选择名称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 */
?>