【发布时间】: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