简体   繁体   English

包含由单击按钮添加的数据库数据的下拉列表

[英]Dropdown populated with database data that adds on button click

I am confused how to populate my dropdown that adds on button click with database values . 我很困惑如何填充我的下拉菜单,该下拉菜单中添加了数据库值。 I used jQuery to do the adding function of dropdown on button click. 我使用jQuery来完成按钮单击时下拉菜单的添加功能。 but it seems like i cant populate the options of the select tag inside my jQuery with database values. 但是似乎我无法用数据库值填充jQuery内部select标签的选项。 Please help me out... 请帮帮我...

This is my php page 这是我的PHP页面

     <?php include("connect.php");
      $smt = $conn->prepare('select CompanyName From Company');
      $smt->execute();
      $data = $smt->fetchAll();
      ?>

       <div class="form-group" id='TextBoxesGroup'>
            <label for="layer" class="col-sm-3 control-label">Layer</label>
            <div id="TextBoxDiv1" class="col-sm-6">
              <select class="form-control" id='textbox1' name="company" placeholder="Company" >

               <?php foreach ($data as $row): ?>
                   <option><?=$row["CompanyName"]?></option>
                <?php endforeach ?>

              </select>
            </div><hr/>

          </div> 

           <div class="form-group" >
            <div class="col-md-9 text-right">                 
               <input type='button' class="btn btn-default" value='Add +' id='addButton'>
            </div>
          </div>

The jQuery code used to add dropdown on button click is: 用于在按钮单击上添加下拉列表的jQuery代码是:

EDIT: 编辑:

 $(document).ready(function(){

  var counter = 2;

  $("#addButton").click(function () {

  if(counter>5){
        alert("Only 5 Layers allowed");
        return false;
   }
  var companies = [<?php echo "'".join("','",$data)."'";?>];
  var newTextBoxDiv = $(document.createElement('div'))
   .attr("id", 'TextBoxDiv' + counter);

  newTextBoxDiv.after().html('<div class="form-group" id="TextBoxesGroup"><label class="col-sm-3 control-label">Layer '+ counter + ' : </label>' +' <div id="TextBoxDiv1" class="col-sm-6"><select class="form-control" name="textbox' + counter + '" id="textbox' + counter + '" name="company" placeholder="Company">');

 $.each(companies, function(key, value){
    newTextBoxDiv.append('<option>'+value+'</option>');
});

newTextBoxDiv.append('</select> </div></div>');  
newTextBoxDiv.appendTo("#TextBoxesGroup");
counter++;
   });

});

 </script>

But the output shows like this: 但是输出显示如下: 在此处输入图片说明 Thanks 谢谢

Well, you need to echo out the value of $row['companyName'] (the one inside your foreach loop) 好吧,您需要echo $row['companyName'] (foreach循环中的那个)

Another implementation would be... say you have an array of values in your PHP. 另一个实现是...说您的PHP中有一个值数组。

$data = array("company A", "company B", "company C");

And the javascript... 还有javascript ...

<script>
var companies = [  <?php echo "'". join("','", $data) . "'";?>  ];
//This generates : ['company A', 'company B', 'company c'];

function insertOptions()
{
    $.each(companies, function(key, value){
        $("#IDofSelectTag").append("<option>"+value+"</option>");
    });
}
</script>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM