0

由于我在第一个下拉列表中只有一个值,因此我试图在 PHP 中创建一个级联下拉列表,以填充页面加载时的第二个下拉列表。

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

为了填充我正在使用的第一个盒子SELECT DISTINCT cities from nights等,效果很好。

要填写第二个框,我需要一些类似的东西SELECT name WHERE city = $city- 我的问题是我不确定如何设置$city(作为<select>标签的名称)。我无法使用$_POST['city'],因为此时表格尚未发送。

有任何想法吗?

4

4 回答 4

1

如果您希望这是动态的(即在用户更改下拉列表之后),您将必须使用 javascript 来首先查询 PHP 页面(可能使用jQuery get)然后相应地调整下拉列表。网上有很多这方面的教程。

如果您只想填充初始页面数据,您可以从查询中选择第一个城市并将选项设置为选中,然后在下一个查询中使用该城市。

就像是:

$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
于 2012-06-10T11:15:27.133 回答
0
<?    
$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 */
?>

注意:你必须自己定义query_result函数(我只是用它来简化代码)。

于 2012-06-10T11:34:03.827 回答
0

您可以为此使用 AJAX。

在更改事件时调用 javascript-ajax 函数,该函数调用 php 脚本,这使您成为第二个下拉菜单。

于 2012-06-10T11:03:17.830 回答
0

您将需要使用 ajax 从 php 脚本加载选项。这是一个如何使用 jquery 和 ajax 执行此操作的示例: Autopopulate Select Dropdown Box Using jQuery

于 2012-06-10T13:30:09.740 回答