Сначала вам нужно исправить ссылку «удалить», где у вас есть
<?= site_url('userController/delete?id='.$res->user_id)?>
в представлении, а затем в контроллере вы запрашиваете user_id
$this->input->get('user_id');
Вы видите разницу?Вы задаете элемент запроса id=
, но запрашиваете (получаете) элемент запроса user_id
.Поэтому вам нужно изменить код, чтобы они совпадали.Вероятно, поэтому ничего не удалялось.Вы не получили значение идентификатора.
Вы можете просто передать id
в URI следующим образом:
<?= site_url('userController/delete/'.$res->user_id)?>
И тогда функция контроллера изменится на * 1016.*
public function delete($id)
{
$this->load->database();
$this->load->model('userdetailModel');
$this->userdetailModel->deleteOne($id);
$data['results'] = $this->userdetailModel->viewAll();
$this->load->view('userView', $data);
}
Обратите внимание, что $id
теперь является аргументом функции и может быть более легко использован.
В функции deleteOne
модели вы перепутали некоторые задачи.Функции select
и from
не используются при удалении из таблицы.
Рекомендуется, чтобы функции модели возвращали что-то, чтобы контроллер знал, все ли работает, или нет.
function deleteOne($id)
{
if(empty($id))
{
return false; //oops, no data for 'where' to use
}
$result = $this->db
->where('user_id', $id)
->delete('user_details');
return $result !== false;
}
Обратите внимание, что мы проверяем элемент входящих данных $id
.Нет смысла выполнять запрос, если нет данных, которые where()
может использовать.Если $id
равно пусто , вернуть false.
Функция delete()
вернет либо объект (типа CI_DB_query_builder
), либо логическое значение FALSE.Таким образом, последняя строка кода выше будет иметь логическое значение, либо ИСТИНА, если $result
не ложно, либо ЛОЖЬ, если это так.
Протестировав возвращаемое значение модели, вы можете отправить сообщение вашему представлению, если есть проблема, или если удаление прошло успешно - что вы считаете лучшим.Я оставлю использование модели возврата в контроллере для вас.Надеюсь, это поможет.