我有一个相当复杂的表单,其中用户数据输入到 MySQL 数据库中。用户的 Angular 色可以是经理或助理。我想在经理和助理之间建立联系。一名经理可以有 1 名以上的助理。一名助理可以为多名经理工作。
据我所知,我可以根据 Angular 色显示一条选择线。因此,如果 Angular 色是经理,则会从 MySQL 数据库中所有具有助理 Angular 色的用户中创建一条选择行,反之亦然。
这工作正常,但如何通过单击按钮为最多 5 个助理(或经理)创建一个新字段,并以这样的方式再次从数据库中生成一个选择行,并减去用户)已经选择了?
为了揭示正确的字段,我使用这个脚本:
<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 输入到数据库中。当选择超过 1 名助理(或经理)时,我想用逗号将数据分隔到数据库中。这个我已经想通了。
这两个字段的创建方式类似。 我希望我能够很好地解释我想要完成的任务,并且我充分展示了我蹩脚的编程来引导我走向正确的方向。
谢谢!
最佳答案
基本上,您所看到的是多对多数据库关系。 更合适的方法需要 3 个表(一张用于经理,一张用于助理,一张用于管理他们的关系(一组唯一的经理和助理一起工作的表)),并设置适当的外键。无法向您提供更多详细信息,但我希望这会引导您走上正确的道路:)
关于javascript - 基于 mysql 创建的选择表单添加最多 5 个选择字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45324310/