如何根据其他选择选项更改选择选项

时间:2016-03-09 19:39:48

标签: php jquery select mysqli options

我对jquery不满意,所以我想知道是否有另一种存储所选选项值的方法,并在我的第二个语句的where子句中使用它。我不想先提交表格。我想提取select选项更改的值。我尝试使用javascript。我能够提取值,但我无法在第二个语句的where子句中使用该变量。

这是我的代码:

<?php

    $stmt = $db->prepare('SELECT * FROM provinces');
    $stmt->execute();
    $result = $stmt->fetchAll();
    echo "<form method='POST' action='search.php'><select>";
    echo "<option value=''> Choose province </option>";

    foreach ($result as $row) {
        $provCode = $row['prov_code'];
        $provID = $row['prov_ID'];
        echo("<option name='name' value='".$provID."'>". $provCode ."</option></br>");
    }
    echo "</select></br></br>";

?>
    <label for="district">District</label>
<?php

    $stmt = $db->prepare('SELECT * FROM districts WHERE dist_prov_ID =**???(value of first select option)**');
    $stmt->execute();
    $result = $stmt->fetchAll();
    echo "<form method='POST' action='search.php'><select>";
    echo "<option value=''> Choose district </option>";

    foreach ($result as $row) {
        $distName = $row['dist_name'];
        $distID = $row['dist_ID'];
        echo("<option name='name' value='".$distID."'>". $distName ."</option></br>");
    }
    echo "</select></br>";
?>

任何输入都将不胜感激。

1 个答案:

答案 0 :(得分:1)

如果您希望它在浏览器中执行而不在第一个和第二个选择选项之间提交表单,则必须是javascript。

但是,如果您愿意让他们选择第一个选项,请提交表单,然后选择第二个选项,您可以这样做:

<?php
    $selectedProvID = empty($_POST['prov_ID']) ? '' : $_POST['prov_ID'];

    $stmt = $db->prepare('SELECT * FROM provinces');
    $stmt->execute();
    $result = $stmt->fetchAll();
    echo "<form method='POST' action='search.php'><select name='prov_ID'>";
    echo "<option value=''> Choose province </option>";

    foreach ($result as $row) {
        $provCode = $row['prov_code'];
        $provID = $row['prov_ID'];
        $selected = '';
        if (0 == strcmp($provID, $selectedProvID)) {
            $selected = ' selected';
        }
        echo("<option value='".$provID."'".$selected.">". $provCode ."</option></br>");
    }
    echo "</select></br></br>";

    if (!empty($selectedProvID)) {
        echo '<label for="district">District</label>';
        $stmt = $db->prepare('SELECT * FROM districts WHERE dist_prov_ID = ?');
        $stmt->execute(array($selectedProvID));
        $result = $stmt->fetchAll();
        echo "<select name='dist_ID'>";
        echo "<option value=''> Choose district </option>";

        foreach ($result as $row) {
            $distName = $row['dist_name'];
            $distID = $row['dist_ID'];
            echo("<option value='".$distID."'>". $distName ."</option></br>");
        }
        echo "</select></br>";
    }
    echo '<button type="submit">Submit</button></form>';
?>

请注意,您从顶部的$ _POST数组中获取prov_ID值,并且只有在定义了它时才选择并显示第二个选择字段。

您还需要使用正确的数据预先填充第一个选择字段,方法是在选项标记中加入selected