MySQL输出到许多<option>元素

时间:2015-10-05 19:53:23

标签: javascript php jquery mysql ajax

我有一个通过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>");
                        }
                });
            });
});

部分表单只是页面上的空白部分,在加载内容之前没有内容。我有另一种形式工作正常,但它不使用下拉选择。为什么查询呈现选项的额外回声?

2 个答案:

答案 0 :(得分:2)

你的html格式不正确,你错过了选项标签

中的结束斜线
echo "<option value='".$c_id."'>".$c."</option>";

答案 1 :(得分:1)

错误是您每次迭代都会创建两个option标记而不是关闭它们:

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

应该是:

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