【问题标题】:Add up to 5 select fields based on a mysql created select form根据 mysql 创建的选择表单添加最多 5 个选择字段
【发布时间】:2017-07-26 10:28:02
【问题描述】:

我有一个非常复杂的表单,其中将用户数据输入到 MySQL 数据库中。用户的角色可以是经理或助理。我想在经理和助理之间建立联系。一个经理可以有多个助手。一名助理可以为多个经理工作。

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

这很好用,但是如何通过单击一个按钮并以再次从数据库中生成一个选择行并减去用户(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>

此时,表单很好地将助手(或经理)的用户 ID 输入到数据库中。 I want to comma separate the data into the database when more than 1 assistant (or manager) is selected.这个我已经想通了。

两个字段的创建方式相似。 我希望我能很好地解释我想要完成的工作,并充分展示我糟糕的编程来引导我朝着正确的方向前进。

谢谢!

【问题讨论】:

  • “I want to comma separate the data into the database when more than 1 assistant (or manager) is selected.这个我已经想通了。” - 只是那已经是相当错误了......你应该正确规范化这个,否则你很可能会遇到其他稍后与该次优决策相关的问题。
  • 另外,如果您只使用一个允许 多个 选择的选择字段,那么您可以非常 更轻松地进行选择。最大限制。您必须使用 JS 自己实现 5 个选择(当然还有服务器端验证)......但是您不会有麻烦检查哪些用户已经被选中,以排除下一个要生成的选择字段中的用户。跨度>

标签: javascript html mysql forms


【解决方案1】:

基本上,您正在查看的是多对多数据库关系。 更多的专有方法将需要 3 个表(一个用于经理,一个用于助理,一个用于管理他们的关系(一对唯一的经理和助理一起工作的表)),以及合适的外键集。不能给你更多细节,但我希望这会让你走上正确的道路:)

【讨论】:

  • 我给你的答案是给你的......再次感谢。我可能通过在选择表单中使用多个标签找到了解决方案或解决方法。然后我可以立即选择一个或多个。
  • 现在我再次阅读了这个问题,我想我几乎完全错过了它:D 但我很高兴你找到了自己的方式并继续前进! :) 祝你好运!
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2016-08-25
    • 1970-01-01
    • 2013-09-09
    • 2019-02-20
    • 2013-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多