javascript - 在 HTML 表单上保留从数据库接收的数据

标签 javascript php html

<?php
include_once 'database_connect.php';
$conn = new dbconnection();
$dbcon = $conn->connect();
if (!$dbcon) {
    die("Fail".mysqli_error($dbcon));
}
?>
<html>
<head>
    <title></title>
    <script type="text/javascript"></script>
</head>
<body>
<form name="frm" method="post" action='<?php echo $_SERVER['PHP_SELF']; ?>'>
    <table width="50%" border="1" cellpadding="3" cellspacing="3" align="center">
        <?php
        $value1 = array();
        $select_query = "SELECT Distinct branch FROM subjects";
        $result = mysqli_query($dbcon, $select_query);
        if (!$result) {
            die("Fail".mysqli_error($dbcon));
        }

        while ($row = mysqli_fetch_array($result)) {
            $value1[] = $row['branch'];
        }

        ?>
        <tr>
            <td>Branch
            <td><select name="branch" id="branch" onchange="document.frm.submit();">
                    <option>Select Branch</option>
                    <?php
                    foreach ($value1 as $gets)
                        echo "<option value={$gets}>{$gets}</option>";
                    ?>
                </select>

                <?php
                $value2 = array();
                if (isset($_POST['branch'])) {
                    $branch = $_POST['branch'];
                    $getsub_query = "SELECT sub_code FROM subjects where branch='$branch'";
                    $result2      = mysqli_query($dbcon, $getsub_query);
                    if (!$result2) {
                        die("Fail\n".mysqli_error($dbcon));
                    }
                    while ($row1 = mysqli_fetch_array($result2)) {
                        $value2[] = $row1['sub_code'];
                    }
                }
                ?>
        <tr>
            <td>Subject Code
            <td><select name="subcode" id="subcode">
                    <option>Subject Code</option>
                    <?php
                    foreach ($value2 as $gets)
                        echo "<option value={$gets}>{$gets}</option>";
                    ?>
                </select>

此代码从数据库获取第一个下拉列表分支。当我们从中选择值时,第二个下拉列表将从数据库中填充。但问题是,当我在第一个下拉列表中选择选项时,所选选项不会保留在第一个下拉列表中。但第二个下拉列表填充正确。我希望我选择的选项应该保持选中状态。就像它的状态应该改变一样。我认为第一个下拉列表会在表单加载时再次填充。

最佳答案

您必须在 html 中提及该选项确实已选择。

尝试更换

echo "<option value={$gets}>{$gets}</option>";

$selected = '';
if (isset($_POST['branch'] && $gets==$_POST['branch']) {
  $selected = ' selected="selected"';
}
echo "<option value={$gets}".$selected.">{$gets}</option>";

关于javascript - 在 HTML 表单上保留从数据库接收的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24260114/

相关文章:

php - 事件记录 : Working with a db object

php - 我无法将数据插入数据库

javascript - 使用skrollr.js实现横向效果

javascript - ngOptions 在我的选择元素中没有显示任何选项

javascript - 戈朗 : html pages and GO communication

javascript - 未经身份验证时无法让 keycloak 重定向到通用登录页面

javascript - 如何防止浏览器缓存

javascript - Cordova - 选择多张照片并将其发送到服务器

javascript - 如何正确使用Express 4多路路由器

javascript - 用php发送图片?