2010-03-13 181 views
0

基本上我可以上传基于项目的文件。无论何时创建项目,都会创建一个新目录,其目录名称为project_name,例如这是一个测试 - >这是一个测试。但我的问题是我无法删除目录中的文件。我的删除功能不会删除目标文件

function delete_image($id) 
{ 
    $this->load->model(array('work_model', 'project_model')); 
    $result = $this->work_model->get_work($id); 
    $result = $this->project_model->get_project($result->project_id); 
    $dir = str_replace(" ", "-", $result->project_name); 
    $result = $this->work_model->delete($id); 
    if (isset($result)){ 
     unlink('./uploads/' . $dir . '/' . $result->full_path); 
    } 
    redirect('admin/project/view_project/' . $result->project_id); 
} 

需要帮助,谢谢。

+0

定义“我不能”。更详细的解释将帮助你 – 2010-03-13 10:37:55

+0

那么整个delete_image()不起作用。我得到一个“尝试获取非对象的属性”错误消息,我调用了get_project()函数和str_replace()。 – 2010-03-13 10:44:01

+0

好吧,我不得不说你在代码中使用了太多'$ result':) – Young 2010-03-13 10:54:35

回答

0

那么错误信息是不言自明的。
$结果不是一个对象。

你的问题是调试的问题,而不是问题。当然,阅读错误信息也很重要。你为什么问这里如果你已经从你的PHP解释出了什么问题?另一方面,没有人知道你的代码,不知道什么类型的变量get_work($ id)应该返回。

+0

get_work($ id)返回数据库结果。我不是一个真正的程序员,所以我没有得到这些微不足道的错误消息。 – 2010-03-13 11:14:31

+0

谢谢我已经找到了解决方案。 – 2010-03-13 11:24:15

0

此行是辉煌的:

if (isset($result)){ 

当然它设置,你必须把它的3倍!

为您返回的每个结果使用不同的变量名称。为什么不使用:

function delete_image($id) 
{ 
$this->load->model(array('work_model', 'project_model')); 
$work = $this->work_model->get_work($id); 
$project = $this->project_model->get_project($work->project_id); 
$dir = str_replace(" ", "-", $project->project_name); 

if ($this->work_model->delete($id)) 
{ 
    unlink('./uploads/' . $dir . '/' . $project->full_path); 
} 
redirect('admin/project/view_project/' . $project->project_id); 
} 

如果这不起作用,请尝试一些调试步骤。

var_dump($this->work_model->delete($id)); 

,将告诉你TRUE/FALSE,我现在认为它是FALSE这就是为什么取消链接不示数或成功。

调试是前进的方向。我们不能为你做!

+0

是的,谢谢。我已经找到了一个解决方案。 – 2010-03-13 11:23:57