我的数据库中有以下表格布局和一些数据。
我正在通过复选框输入,以便用户可以选择所有适用的事故路况并将其输入数据库。我想说如果你添加一条新记录就可以了,你只需通过checkboex检查并将它们插入数据库
第一个信息现在保存在数据库中,现在用户决定根据用户回来的任何原因更改道路状况并将其更改为以下内容。
现在我的问题是,我应该如何更新我的表格。我想到的第一件事就是删除已经存在的记录并插入新的记录。
我真正的问题是,假设用户之前选择了3个项目,但是将其更改为两个或一个,那么我将如何删除那些未检查的项目,你知道我在说什么。以下是我一直在尝试的一些代码片段。
$accidentRoadConditions = AccidentRoadConditions::findAccidentRoadConditions($acc_det_id);
$wc_array = [];
while ($roadConditions = $accidentRoadConditions ->fetch(PDO::FETCH_OBJ)) {
$wc_array[] = $roadConditions ->rc_id;
}
上面我选择了已经存储在数据库中的所有道路状况。
if (isset($_POST['rta_ad_rc'])) {
foreach ($_POST['rta_ad_rc'] as $rc_id) {
//AccidentRoadConditions::save(array(null, $ad_lsid, $rc_id));
// $tmprory = AccidentRoadConditions::findByADAndRCIds($acc_det_id, $rc_id);
// if(!$tmprory){
// AccidentRoadConditions::save(array(null, $acc_det_id, $rc_id));
// }
if(in_array($rc_id, $wc_array)){
$errors[] = "in array <br />";
unset($wc_array[0]);
}
}
}
所以我的问题是如何根据用户检查的内容更新数据库中的值,并删除之前检查过的未选中的值。变得有点复杂以至于如何根据上述情况更新数据库。
任何想法?
答案 0 :(得分:1)
我认为这是你应该做的。
这样您无需检查值是否存在,也不会有任何不必要的插入。
答案 1 :(得分:1)
我认为您需要执行以下操作
如果是,则跳过它们,否则将它们添加到数组中
$ old_rc_array = []; $ new_rc_array = [];
while($ roadConditions = $ accidentRoadConditions-&gt; fetch(PDO :: FETCH_OBJ)){ $ old_rc_array [] = $ roadConditions-&gt; rc_id; }
if(isset($ _ POST [&#39; rta_ad_rc&#39;])){
foreach($ _POST [&#39; rta_ad_rc&#39;]为$ rc_id){
if(in_array($rc_id, $old_rc_array)){
unset($old_rc_array[array_search($rc_id, $old_rc_array)]);
}else{
$new_rc_array[] = $rc_id;
}
} }
foreach($ old_rc_array as $ rc_to_delete){ AccidentRoadConditions :: deleteByADIdAndRCId($ hidden_acc_det_id,$ rc_to_delete); }
foreach($ new_rc_array as $ rc_to_insert){ AccidentRoadConditions :: save(array(null,$ hidden_acc_det_id,$ rc_to_insert)); }