Эта строка блестящая:
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));
Это скажет вам ИСТИНА / ЛОЖЬ, я бы предположил, что сейчас это ЛОЖЬ, поэтому unlink не дает ошибок или не работает
Отладка - путь вперед. Мы не можем сделать это для вас!