表单提交后未加载HTML选项标记


HTML option tags not loading after form submit

我有一个html页面,它使用PHP从MySQL表加载select标记中的酒店列表。select标签位于form标签内部。每当我加载页面时,就会加载option标记,但当我提交form时,option标记就再也不会加载了。我的formaction属性为空,我正在检查同一页面上的所有内容,但当我将另一个php页面设置为action时,它会正常加载。有没有一种方法可以让它在提交后加载,同时保持我的formaction为空?

这是我的代码

<?php
require_once 'db.php';
$db = DB::get_instance();
if(isset($_POST['search'])) {
    $hotel = $_POST['hotel_list'];
    $db->query("SELECT * FROM hotels WHERE Name='$hotel'");
    $hotel = $db->result()->current();
    $hid = $hotel['Hid'];
    $db->query("SELECT * FROM rooms WHERE Hid='$hid'");
    $rooms = $db->result();
    $db->disconnect();
}
?>
<!doctype html>
<html>
    <head>
        <title>Display a hotel</title>
    </head>
    <body>
        <form action="" method="post" id="dsphtl">
            Name: <select name="hotel_list" form="dsphtl">
<?php
            $db->query("SELECT Name FROM hotels ORDER BY Name");
            foreach($db->result() as $row) {
                $t = $row['Name'];
                echo "<option value='$t'>$t</option>";
            }
?>
            </select>
            <input type="submit" value="Search" name="search">
        </form>
    </body>
</html>

如果设置了$_POST['search'],则$db->disconnect();无法在表单中运行查询。

if()语句中取出$db->disconnect();,并将其放在文件的末尾。

问题在于断开连接,当页面在提交到mysql的连接后重新加载时,由于而丢失

$db->disconnect();
<?php
    require_once 'db.php';
    $db = DB::get_instance();
    if(isset($_POST['search'])) {
        $hotel = $_POST['hotel_list'];
        $db->query("SELECT * FROM hotels WHERE Name='$hotel'");
        $hotel = $db->result()->current();
        $hid = $hotel['Hid'];
        $db->query("SELECT * FROM rooms WHERE Hid='$hid'");
        $rooms = $db->result();
    }
    ?>
    <!doctype html>
    <html>
        <head>
            <title>Display a hotel</title>
        </head>
        <body>
            <form action="" method="post" id="dsphtl">
                Name: <select name="hotel_list" form="dsphtl">
    <?php
                $db->query("SELECT Name FROM hotels ORDER BY Name");
                foreach($db->result() as $row) {
                    $t = $row['Name'];
                    echo "<option value='$t'>$t</option>";
                }
    ?>
                </select>
                <input type="submit" value="Search" name="search">
            </form>
        </body>
    </html>