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から取得した値がオプション値の1つと等しいかどうかを確認する必要があります。

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 に答える