MySQL输出多个<选项>元素


MySQL outputting to many <option> elements

我有一个通过ajax加载到页面的表单。该形式的工作很好,但我有选择的输入是由mysql调用填充的形式,以获得应该在下拉菜单中的值。这是工作,但选择看起来像这样。

<select>
<option value="1">Name</option>
<option></option>
<option value="2">Position</option>

,它重复了额外的选项标签,没有任何内容,导致表单上的间距问题。

下面是表单代码:

<form id="company-form" action="scripts/create-library.php" method="post" enctype="multipart/form-data">
    <button id="hide-form"><img src="images/minus.png"/></button>
    <h3>Add Library Item Form</h3>
    <input class="c-name" type="text" name="file-display-name" placeholder="File Display Name"/>
    <select class="companies-dd" name="companies">
        <?php
            require_once("../../scripts/connection.php");
            // Select all companies and related data
            $sql = "SELECT company_id, company FROM companies ORDER BY company_id";
            $stmt = $conn->prepare($sql);
            $stmt->execute();
            $stmt->bind_result($c_id, $c);
            while($stmt->fetch()){
                echo "<option value='".$c_id."'>".$c."<option>";
            }
        ?>
    </select>
    <input id="uploadFile" class="image-name" type="text" name="library-file-name" placeholder="No Logo File Chosen" disabled="disabled"/>
    <input id="uploadBtn" type="file" name="library-file"/>
    <input type="submit"/>
</form>

是它加载到的页面上的ajax调用:

$(document).ready(function(e) {
            $(document).on('click','#add',function(){   
                var form_fetch = $(this).attr('name');
                $.ajax({
                    url: "include/forms/add-"+form_fetch+"-form.php", success: function(result){
                        $('#section-form').html(result);
                        }, error: function (){
                            $('#section-form').html("<p>The Form could not be either loaded or found. Please try again later or contact the web developer.</p>");
                        }
                });
            });
});

section-form只是页面上的一个空白部分,在载入内容之前没有内容。我有另一个形式工作良好,但它不使用下拉选择。为什么查询呈现该选项的额外回显?

你的html是畸形的,你错过了结束斜杠在选项标签

echo "<option value='".$c_id."'>".$c."</option>";

错误在于您在每次迭代中创建了两个option标记,而不是关闭它们:

echo "<option value='".$c_id."'>".$c."<option>";

应该是:

echo "<option value='".$c_id."'>".$c."</option>";
相关文章: