我正在使用CodeIgniter 3。我必须在数据库的多行中插入和更新多个复选框值,而不是以逗号分隔的值。我首先删除所有记录,然后再次插入,它的工作。但在这种情况下,我必须先删除所有记录,然后再插入。我想如果任何记录已经存在,然后更新,否则插入。如果未选中任何值,则仅删除该记录。有没有办法更新和记录。
这是我的表格。
<form role="form" method="post" action="<?php echo base_url(); ?>admin/update-assignment">
<input type="hidden" id="inputName" name="propertyId" class="form-control" value="<?php echo $PropVal->property_id ?>">
<?php
$catArray = array("category_1"=>'Site',"category_2"=>'Unit',"category_3"=>'Areas');
$test_seq = 0;
foreach($catArray as $k=>$values)
{
$userAssigned = getassignedUserData($PropVal->property_id,$values);
$arr = array();
foreach($userAssigned['data'] as $innerRow => $value)
{
$arr[$innerRow] = $value['validation_code'];
}
foreach($usersListtoAssign as $key => $value)
{
$uidandCode = $value['user_id'].'--'.$value['validation_code'].'--'.$values;
$checked = "";
if(in_array($value['validation_code'],$arr))
{
$checked = 'checked=checked';
}
?>
<div class="checklist-div">
<input type="checkbox" <?php echo $checked; ?> name="<?php echo $inputName."[]" ?>" id="chkbx<?= $value['user_id']; ?>" value="<?php echo $uidandCode ?>" class="chkbox select-<?= $values ?>" <?php echo $disable; ?>> <?php echo $value['first_name'].' '.$value['last_name'].'--'.$value['validation_code'] ?>
</div>
<?php } } ?>
</form>
字符串
Controller.php
<?php
function update_assignment()
{
$inputs_ary = $this->input->post();
$pId = $inputs_ary['propertyId'];
if (isset($inputs_ary['validationCode1']))
{
$codeVal = $inputs_ary['validationCode1'];
$category = 'Site';
$this->PropertyModel->deletePropAssignNotExist($pId,$category);
foreach ($codeVal as $value)
{
$explode = explode('--', $value);
$uId = $explode[0];
$validation_code = $explode[1];
$assignArr = array(
'user_id' => $uId,
'validation_code' => $validation_code,
'property_id' => $pId,
'category_name' => $category,
'created_on' => date('Y-m-d h:i:s')
);
$propAssignStatus = $this->PropertyModel->addPropertyAssignment($assignArr);
}
}
if(isset($inputs_ary['validationCode2']))
{
$codeVal2 = $inputs_ary['validationCode2'];
$category = 'Unit Interior';
$this->PropertyModel->deletePropAssignNotExist($pId,$category);
foreach($codeVal2 as $value)
{
$explode = explode('--',$value);
$uId = $explode[0];
$validation_code = $explode[1];
$assignArr = array(
'user_id' => $uId,
'validation_code' => $validation_code,
'property_id' => $pId,
'category_name' => $category,
'created_on' => date('Y-m-d h:i:s')
);
$propAssignStatus = $this->PropertyModel->addPropertyAssignment($assignArr);
}
}
}
型
PropertyModel.php
public function addPropertyAssignment($array)
{
if(!empty($array) && count($array) > 0)
{
$res = $this->db->insert("property_assignment", $array);
$result = custom_db_error_log($this->db);
if($result['status'] == 1)
$result['data'] = $this->db->insert_id();
return $result;
}
}
public function deletePropAssignNotExist($pId,$catName)
{
$sql = "delete from property_assignment where property_id='$pId' and category_name='$catName';";
$res = $this->db->query($sql);
}
型
1条答案
按热度按时间kcwpcxri1#
要在CodeIgniter的数据库中更新或插入多个复选框值,可以使用以下方法:
1.修改表单以包含现有分配的隐藏输入和新分配的复选框:
字符串
1.修改控制器以处理更新或插入分配:
型
1.修改模型以处理更新现有分配:
型