我有一个非常复杂的表单,用户数据输入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输入到数据库中。当选择了多个助手(或管理员)时,我想用逗号将数据分成数据库。我已经弄清楚了。
两个字段的创建方式相似。 我希望我能够很好地解释我想要完成的事情,并且我充分展示了我糟糕的编程,以指导我朝着正确的方向前进。
谢谢!
答案 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);
}
}`