0

我无法将下拉菜单设置为粘性(以便在第一次提交表单后,将在下一页的表单中预先选择所选择的选项)。我删除了一些我认为不相关的代码。我尝试将值设为 $_GET['continent'] 但这没有用。有人有想法吗?见函数 createpulldown

 <!DOCTYPE html>
 <head>
 <title>Homework 14</title>  
 </head>
 <body>


<?php 
if (isset($_GET['submitted']))
    handleform($_GET['country']);

displayform("country");

?>
</body>

function displayform($menuname) {
    echo "<fieldset><legend>Select a continent and I will show you information from the CIA about it.</legend>
            <form method = 'get'>";
            createpulldown($menuname);
            echo "<input type='submit' name='submitted' value='Search'>
            </form>
          </fieldset>";
}

function createpulldown($menuname) {
    echo "<select name='$menuname'>";
    $dbc = connectToDB();
    $query = "SELECT Continent FROM countries GROUP BY Continent";
    $result = performQuery($dbc, $query);

    while ($row=mysqli_fetch_array($result, MYSQLI_ASSOC)){

        $continent = $row['Continent'];

        if (isset($_GET[$menuname]))
            echo "<option name='continent' value = $continent selected>$continent</option>\n";
        else
            echo "<option name='continent' value = $continent>$continent</option>\n";
    }

    echo "</select>";
    disconnectFromDB($dbc, $result);
}
?>
4

2 回答 2

1

您想检查从 $_GET 检索到的值是否等于选项值之一。

试试这个你的while语句:

while ($row=mysqli_fetch_array($result, MYSQLI_ASSOC)){
    $continent = $row['Continent'];
    if ($_GET[$menuname] == $continent)
        echo "<option name='continent' value='$continent' selected>$continent</option>\n";
    else
        echo "<option name='continent' value='$continent'>$continent</option>\n";
}

我还修复了一个语法错误。您需要将选项值用单引号括起来。

于 2013-03-20T15:17:53.377 回答
0
while ($row=mysqli_fetch_array($result, MYSQLI_ASSOC)){

    $continent = $row['Continent'];

    if (isset($_GET[$menuname]))
        echo "<option name='continent' value = $continent selected>$continent</option>\n";
    else
        echo "<option name='continent' value = $continent>$continent</option>\n";
}

您在此处检查是否将名为 $menuname 的 GET 参数传递给您的脚本——但这对于您创建的所有选项都是相同的,要么参数存在,要么不存在。

您想要做的是将参数的值与您正在编写的当前 $continent 值进行比较——如果它们相等,请选择当前选项,否则不要。

于 2013-03-20T15:19:51.520 回答