基本上我有一个包含几个复选框(属于同一组)的表单,这些是类别选择。
当用户想要更新他们的选择时,他们可以查看此表单 - 已经勾选了他们的当前选择。
然后用户更改他们的选择并提交表单。我现在需要更新数据库中的这些选择。这是我目前拥有的代码:
// $old_selections contains an ARRAY of IDs - I use this to pre-select the checkboxes
$old_selections = Listing::getSelections();
if(isset($_POST['update']))
{
// $_POST['selections'] is an ARRAY of posted IDs
$new_selections = $_POST['selections'];
foreach($new_selections as $selection)
{
// insert a new record using $selection
}
}
所以目前这会将新的选择添加到数据库中,但不会删除任何现有的选择。理想情况下,这应该有点聪明 - 而不是仅仅删除所有现有条目,它应该比较两个数组并根据需要删除/插入。
此外,如果用户取消选中所有选择,那么显然需要删除所有现有条目。
实现这一目标的最有效方法是什么?