根据mysql创建的选择表单

时间:2017-07-26 10:28:03

标签: javascript html mysql forms

我有一个非常复杂的表单,用户数据输入MySQL数据库。用户的角色可以是Manager或Assistant。我想在经理和助理之间建立一个链接。经理可以拥有1名以上的助理。助理可以为1名以上的经理工作。

到目前为止,我可以根据角色显示一条选择线。因此,如果角色是经理,则会从所有用户创建一个选择行,其中助手作为MySQL数据库中的角色,反之亦然。

这样可以正常工作,但是如何通过单击按钮为多达5个助手(或管理员)创建一个新字段,使其再次从数据库生成选择行,并减去用户(s) )已经被选中了?

为了揭示正确的字段,我正在使用这个脚本:

<script type="text/javascript" src="//code.jquery.com/jquery-1.9.1.js"></script>

<script type='text/javascript'>//<![CDATA[
$(window).load(function(){
$('#role').on('change', function() {
  var selection = $(this).val();
  switch (selection) {
    case "Manager":
      $("#assistant").show()
      $('#manager').hide()
      break;
    case "Assistant":
      $("#manager").show()
      $("#assistant").hide()
      break;
    default:
      $("#manager").hide()
      $('#assistant').hide()
  }
});

});//]]> 

选择字段的创建方式如下:

<td><select name="linkmgr[]" id="manager" style="display:none;"><option selected="selected"></option>
<?php $connmgr = new mysqli('localhost', 'admin', 'password', 'db') 
or die ('Cannot connect to db');

    $resultmgr = $connmgr->query("SELECT id, full_name FROM userdata WHERE role='Manager' ORDER BY full_name");
        while ($rowmgr = $resultmgr->fetch_assoc()) {

                  unset($idmgr, $fullname_mgr);
                  $idmgr = $rowmgr['id'];
                  $fullname_mgr = $rowmgr['full_name']; 
                 echo '<option value="'.$idmgr.'">'.$fullname_mgr.'</option>';

}
?></select></td>

此时,表单很好地将Assistant(或manager)的用户ID输入到数据库中。当选择了多个助手(或管理员)时,我想用逗号将数据分成数据库。我已经弄清楚了。

两个字段的创建方式相似。 我希望我能够很好地解释我想要完成的事情,并且我充分展示了我糟糕的编程,以指导我朝着正确的方向前进。

谢谢!

2 个答案:

答案 0 :(得分:0)

基本上,你所看到的是多对多的数据库关系。 更多的propper aproach将重新设置3个表格(一个用于管理人员,一个用于助理,一个用于管理他们的关系(独特的管理人员和助理工作人员表),以及用户外键设置。不能给你更多细节,但我希望这会让你走上正轨:)

答案 1 :(得分:0)

感谢您的反应,但原则上我已经涵盖了这一点。它已经按照我想要的方式工作,除了在需要时添加额外的行。用我以前用过的逗号分隔值注入数据库,它工作正常。它将由以下人员负责:

if (empty($_POST['linkmgr'])){
        $linkmgr=($_POST['linkmgr']);
        } else { 
            foreach($_POST['linkmgr'] as $mgr){
            $varmgr[]=$mgr;
            $linkmgr=implode(", ",$varmgr);
            }
        }`