我正在使用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
}
?>
感谢。
答案 0 :(得分:7)
您需要做的是更改此行...
if(isset($checked) == 1){
到
if((int) $checked == 1){
原因是变量$ checked将始终设置其值是否为1。如果POST数据中未设置$checked = $this->input->post('remove');
,'remove'
将返回NULL。
答案 1 :(得分:3)
请在您的复选框中写下正确的值: -
<input id="remove" type="checkbox" name="remove">
写下一些值然后检查它: -
例如:
<input id="remove" type="checkbox" name="remove" value="1">
在php中: -
if($checked == 1) {
// do whatever u want
}
答案 2 :(得分:1)
尝试:
<input id="remove" type="checkbox" name="remove" value="1">
答案 3 :(得分:1)
删除isset
因为在CI控制器中默认使用
获取输入值 $checked = $this->input->post('remove');
现在是否存在您的变量值。
答案 4 :(得分:0)
如果有帮助,请使用它。
$checked = (isset($_POST['checkbox']))?true:false;