我有一个带复选框的表单,我需要知道将它们提交到数据库的最佳方法是什么。我有以下表格设置:
roles users user_roles
----- ----- ----------
id id user_id
role_id
我有一个页面,您可以通过复选框编辑用户并为其分配不同的角色,然后这些复选框保存在user_roles表中。由于编辑用户的角色可能涉及删除行或添加行,因此我目前正在处理它:
my $form_vals = (1=>1,2=>2); #submitted by user
my $db_vals = (3=>3); #gotten out of db
所以我有这两个哈希值,我会将$form_vals
中的键与$db_vals
中的键进行比较,然后我看到我有两个额外的值,这些值在数据库中不存在所以我添加他们。反之亦然我通过比较$db_vals
中的键和$form_vals
中的键,然后从数据库中删除这些行,找到表单上不再选择哪些值。我的问题是,有没有人知道更好/更简单的方法呢?对我来说,如何处理复选框并不是很明显,我想知道最佳实践是什么。谢谢!
答案 0 :(得分:1)
我不会说这与复选框本身有很大关系。
基本上你拥有的是两个数组数组,[(uid,rid),(uid,rid)],并且你想让array1(数据库中的那个)成为array2的副本(来自的用户输入复选框)。您可以使用多选或逗号分隔的字符串,大小写相同。您有一个用户ID,并且您希望该用户仅提供角色。
实现这一目标的两种方法是
您真的必须知道数据库中的所有内容以及提交的所有内容,如果您不想删除所有内容并进行全新插入,请检查两次。你当然可以为你做一个功能,隐藏丑陋。想想如果它只是两个数组并且没有数据库就会如何做。