我几乎要完成我的项目,但是我有两个问题可能无法解决,请任何人指导我,我真的需要帮助。我面临的问题是,当我尝试更新“名字”或“姓氏”时,出现错误,并且数据库中保存的图像路径也被删除。但是,如果我尝试更新图像,则可以正常工作。第二个问题是,当我尝试更新映像时,旧映像不会被新映像替换,即使旧映像在文件夹中也可用。如何解决这两个问题,我真的需要帮助。
From.php(控制器部分)
public function updatedata()
{
$id=$this->input->get('id');
$result['data']=$this->Form_model->displayrecordsById($id);
$this->form_validation->set_rules('fname', 'First name', 'required');
$this->form_validation->set_rules('lname', 'Last name', 'required');
$this->form_validation->set_rules('username', 'Username', 'required|min_length[5]|max_length[12]');
$this->form_validation->set_rules('email', 'Email', 'required|valid_email');
if ($this->form_validation->run() == FALSE)
{
$this->load->view('update_records',$result);
} else {
$config['upload_path'] = './uploads/';
$config['allowed_types'] = 'gif|jpg|png';
$this->load->library('upload', $config);
$fn=$this->input->post('fname');
$ln=$this->input->post('lname');
$un=$this->input->post('username');
$em=$this->input->post('email');
if($this->upload->do_upload('filename'))
{
$fi= $this->upload->data('file_name');
$unlink = unlink('uploads/' . $row->filename);
} else {
$fi= $result['data']->filename;
}
$this->Form_model->updaterecords($fn,$ln,$un,$em,$fi,$id);
echo 'Successfully updated your record';
//exit();
}
}
答案 0 :(得分:0)
第一个明显的问题是$row
var不存在。在上下文中,它应该是$result['data']->filename
。对于您的第一个问题,我不明白更新fname和lname在逻辑上如何导致删除以前上传的文件,除非上传了另一张图片,否则如果没有上传文件,do_upload
将失败然后输入您的else语句。
在这里我重新排列了一些内容,并添加了encrypt_filename
。这样做的主要目的是避免用户上传与先前上传的图像具有相同名称的图像的问题,即使这些图像可能不同。
public function updatedata() {
$id = $this->input->get('id');
if (is_null($id)) {
show_error('Id cannot be empty');
}
$result['data'] = $this->Form_model->displayrecordsById($id);
$this->form_validation->set_rules('fname', 'First name', 'required');
$this->form_validation->set_rules('lname', 'Last name', 'required');
$this->form_validation->set_rules('username', 'Username', 'required|min_length[5]|max_length[12]');
$this->form_validation->set_rules('email', 'Email', 'required|valid_email');
if ($this->form_validation->run() == FALSE) {
$this->load->view('update_records', $result);
} else {
$config['encrypt_name'] = true; // highly recommended
$config['upload_path'] = './uploads/';
$config['allowed_types'] = 'gif|jpg|png';
$this->load->library('upload', $config);
$fi = $result['data']->filename;
if ($this->upload->do_upload('filename')) {
if (is_file('./uploads/' . $fi)) {
@unlink('./uploads/' . $fi);
}
$fi = $this->upload->data('file_name'); // set var to new name
}
$fn = $this->input->post('fname');
$ln = $this->input->post('lname');
$un = $this->input->post('username');
$em = $this->input->post('email');
$this->Form_model->updaterecords($fn, $ln, $un, $em, $fi, $id);
echo 'Successfully updated your record';
}
}