I have a problem with unlink or delete file with codeigniter
Here is my controller
function delete($id_post=''){
$this->home_model->delete($id_post);
$this->session->set_flashdata('danger', "Your photo has been deleted...");
redirect("home");
}
And this is my model
function delete($id_post=''){
$file_name = $this->db->query("SELECT doc FROM post WHERE post.id_post='$id_post'");
unlink(base_url("uploads/" . $file_name));
$sql = "DELETE FROM post WHERE id_post=?";
$outp = $this->db->query($sql,array($id_post));
}
Doc is the name of column that contain image.
If i click button delete, it delete a data in database and works successfully but not the image in file folder. I want, when i delete a data it is also delete image in file folder uploads. Uploads folder is in the root aplication system.
Any answer?
Many thanks...
The query() function returns a database result object. So replace your model code with:
function delete($id_post=''){
$file_name = $this->db->query("SELECT doc FROM post WHERE post.id_post='$id_post'");
$row = $file_name->row();
$file_name = $row['doc'];
unlink(base_url("uploads/" . $file_name));
$sql = "DELETE FROM post WHERE id_post=?";
$outp = $this->db->query($sql,array($id_post));
}
This is because you does not fetch your result resource. Use:
$query = $this->db->query("SELECT doc FROM post WHERE post.id_post='$id_post'");
$row = $query->result();
$file_name = str_replace('localhost/latihan/uploads/','',$this->db->query("SELECT doc FROM post WHERE post.id_post='".$id_post."'")->row()->doc);
unlink("uploads/" . $file_name);
Try this:
$this->load->helper("url");
unlink(base_url("uploads/" . $file_name));
You are trying to delete your file with URL address you have to specifiy local document address like this:
unlink($_SERVER['DOCUMENT_ROOT']."uploads/".$filename);
here is similiar question:
Instead of this
$file_name = $this->db->query("SELECT doc FROM post WHERE post.id_post='$id_post'");
please replace this
$file_name = $this->db->query("SELECT doc FROM post WHERE post.id_post='".$id_post."'")->row()->doc;
function delete($id_post=''){
$file_name = $this->db->query("SELECT doc FROM post WHERE post.id_post='$id_post'");
$res = $this->db->result(); // this returns an object of all results
$row = $res[0];
$filename = $row['doc']; // get the file name from array
// do the delete after getting the filename
}
can use this using directory path
unlink(FCPATH.'uploads/yourfile');