代码点火器检查复选框值


Codeigniter checking checkbox value

我正在使用CodeIgniter,我有一个带有复选框的表单,允许用户检查和删除他们上传的照片。
在我的控制器中,我使用if(isset($checked) == 1)来检查用户是否要删除照片。
$photo_to_table将设置为空并传递给$this->tank_auth->update_user()以执行数据库更新,并将照片字段设置为表中的空。否则,它将保持相同的照片。

但是在我的代码中,无论我是否检查它,当我单击UPDATE按钮时,它会不断删除照片,我想知道为什么会发生这种情况?

有人可以浏览我的代码并给出建议吗?

控制器:

$user_id = $this->session->userdata('user_id');
$profile = $this->users->get_profile_by_id($user_id);
if(!empty($_FILES['photo']['name'])) 
{
    //image upload process
}
else
{
    $checked = $this->input->post('remove');
    if(isset($checked) == 1)
        {
            $photo_to_table = '';
            // here will do remove process to delete file in directory
        }
    else
    {
        $photo_to_table = $profile->photo;
    }
}
    if($this->form_validation->run()) { // validation ok
    if(!is_null($data = $this->tank_auth->update_user(
        $this->form_validation->set_value('name'),
        $this->form_validation->set_value('country'),
        $this->form_validation->set_value('website'),
        $photo_to_table
        ))) 
    { 
        // success
        $this->session->set_flashdata('msg', 'Profile has been updated');
        redirect(current_url());
    }
}

视图:

<?php echo form_open_multipart($this->uri->uri_string()); ?>
<table border="0">
<?php
if(!empty($uphoto)){
?>
    <tr>
        <td>
            <div>
                <img src="<?php echo base_url().$userpath.$uphoto; ?>" />
           </div>
           <div>
               <input id="remove" type="checkbox" name="remove">
               <label for="remove">Remove photo</label>
           </div>
       </td>
   </tr>
<?php
}
?>

谢谢。

您在这里需要做的是更改此行...

if(isset($checked) == 1){

if((int) $checked == 1){

原因是无论变量 $checked的值是否为 1,都将始终设置变量。 如果未在 POST 数据中设置'remove'$checked = $this->input->post('remove');将返回 NULL。

请在复选框中输入适当的值:-

   <input id="remove" type="checkbox" name="remove">

写一些值然后检查它:-

例如:

  <input id="remove" type="checkbox" name="remove" value="1">

在 php 中 :-

   if($checked == 1) {
      // do whatever u want
   }

尝试:

<input id="remove" type="checkbox" name="remove" value="1">

删除isset

这是因为默认情况下,在您的 CI 控制器中,您可以使用以下方法获取输入值

$checked = $this->input->post('remove');

无论 is 是否有值,您的变量现在都存在。

如果有帮助,请使用它。

$checked = (isset($_POST['checkbox']))?true:false;