【问题标题】:PHP: How to change the values of a Select based on selections of another SelectPHP:如何根据另一个 Select 的选择来更改 Select 的值
【发布时间】:2016-03-15 10:57:28
【问题描述】:

我有一个国家选择和一个城市选择,我想根据国家选择的选择在城市选择中显示不同的值。

类似: 值 = countries.selection

从城市中选择城市 WHERE Country = Value

$myrow[城市]

请参阅下面的代码(这会将值带到数据库中的 Selects 并填充它们。

可能有更好的方法来编写我的代码,我也非常感谢任何使它更容易和更高效的建议。

另外,如果在 Javascrip 或 jQuery 中更好或更容易做到这一点,我也会接受这个方向的建议。

非常感谢

<html>
<body>


<select name="taskOption" id="drop_drop">
    <?php
    $db = pg_connect('host=localhost dbname=test user=myuser password=mypass');

    $query = "SELECT country FROM countries";

    $result = pg_query($query);
    if (!$result) {
        echo "Problem with query " . $query . "<br/>";
        echo pg_last_error();
        exit();
    }

    printf ("<option value=Select>Select a Country</option>");
    while($myrow = pg_fetch_assoc($result)) {

     printf ("<option value=$myrow[country]>$myrow[country]</option>");

}

    ?>

</select>


<select name="taskOption" id="drop_drop">
    <?php
    $db = pg_connect('host=localhost dbname=test user=myuser password=mypass');

    $query = "SELECT city FROM cities";

    $result = pg_query($query);
    if (!$result) {
        echo "Problem with query " . $query . "<br/>";
        echo pg_last_error();
        exit();
    }
    printf ("<option value=Select>Select a City</option>");
    while($myrow = pg_fetch_assoc($result)) {

     printf ("<option value=$myrow[city]>$myrow[city]</option>");

}

    ?>

</select>

</body>
</html> 

【问题讨论】:

标签: javascript php jquery select


【解决方案1】:

当国家发生变化时,你必须发出请求,将国家的值传递给服务器以查找其城市。

     <!-- Note id change here -->
    <select name="taskOption" id="countries">
            <?php
            $db = pg_connect('host=localhost dbname=test user=myuser password=mypass');

            $query = "SELECT country FROM countries";

            $result = pg_query($query);
            if (!$result) {
                echo "Problem with query " . $query . "<br/>";
                echo pg_last_error();
                exit();
            }

            printf ("<option value=Select>Select a Country</option>");
            while($myrow = pg_fetch_assoc($result)) {

             printf ("<option value=$myrow[country]>$myrow[country]</option>");

        }

            ?>

        </select>

    <select name="taskOption" id="cities">
        <?php
        $db = pg_connect('host=localhost dbname=test user=myuser password=mypass');

        // Note query change here.
        $selectedCountry = $_GET['country'];

        $query = "SELECT city FROM cities where country_id = " + $selectedCountry;

        $result = pg_query($query);
        if (!$result) {
            echo "Problem with query " . $query . "<br/>";
            echo pg_last_error();
            exit();
        }
        printf ("<option value=Select>Select a City</option>");
        while($myrow = pg_fetch_assoc($result)) {

         printf ("<option value=$myrow[city]>$myrow[city]</option>");

    }

        ?>

    </select>

<script type='text/javascript'>
  // Note this new script.
  $(document).ready(function(){
     $('#countries').on('change', function(){
         window.location += '?country=' + $(this).val();
     });
  });
</script>

请注意select的元素中的id属性,并注意可能的SQL注入。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-20
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多