繁体   English   中英

在php中编辑复选框数据并在mysql中更新行

[英]Editing checkboxes data in php and updating the rows in mysql

在视图中,我有一组复选框,作为较大表单的一部分,如下所示。

<input type = "checkbox" value = "1" name = "checkbox_array[]" /> Checkbox 1
<input type = "checkbox" value = "2" name = "checkbox_array[]" /> Checkbox 2
<input type = "checkbox" value = "3" name = "checkbox_array[]" /> Checkbox 3
<input type = "checkbox" value = "3" name = "checkbox_array[]" /> Checkbox 3

假设我选中复选框2和复选框4,然后单击提交。 为了保存,我在控制器中通过如下所示的checkbox_array[]循环。

$checkbox_array = $this -> input -> post('checkbox_array', TRUE)

<?php for($i=0;$i<count($checkbox_array);$i++){
$users = new User();
$users -> role_id = $checkbox_array[$i];
//Amongst other form data
$users -> save();
}?>

这会将数据库中的数据保存为:

id role_id 
1    2
2    4

使用相同的视图,我打算编辑保存的数据。 所以说现在我要选中“复选框1”,取消选中“复选框2”,选中“复选框3”,保留复选框4。这样,我打算在数据库中包含以下内容。

id role_id 
1    1
2    3
3    4

但是我不知所措,如何进行更新。 我一直在想从数据库中获取保存的数组,执行inarray()搜索,然后插入不在保存的数组中的数据,从计算上我不知道这样做有多有效。

有没有可以用来实现此目的的mysql函数,例如replace() ,或者还有其他方法可以实现编辑?

谢谢。

在这种情况下,我通常要做的是首先删除数据库中与该表单有关的所有数据(针对特定用户等),然后为复选框插入数据。 删除符合条件的数据(尤其是如果删除的WHERE位于索引列中)要比尝试选择并有选择地删除它们便宜得多。 更不用说它使代码更加整洁,从长远来看,出于维护原因,它有其好处。

为了更清楚一点,在索引上具有WHERE子句的DELETE比SELECT便宜,对于不应该存在的DELETE比对INSERT更便宜。

$checkbox1 = $_POST['checkbox_array'];
$selected_checkbox = "";
foreach ($checkbox1 as $checkbox1) 
{
   $selected_checkbox .= $checkbox1 . ", ";
}
$selected_checkbox = substr($selected_checkbox, 0, -2);

// your insert query here.. 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM