проверка на наличие данных в БД

Serebos

Новичок
Привет! Есть рабочий метод для редактирования новости, который по ссылке, например, http://kinomonster.com/news/edit/news-2/ выводит в браузере форму с содержанием новости с БД для дальнейшего редактирования и сохранения. Если ввести в браузер адрес несуществующей новости в БД, например, http://kinomonster.com/news/edit/news-40/ тогда, в браузере выводится пустая форма без значений. Чтобы изменить последнее поведение - добавлена проверка на наличие данных в БД, которая и вызывает ошибку в работе кода (появилась ошибка 404, в т.ч. и при наличие данных. ).


Код:
  public function edit($slug = NULL) {

        $this->data['title'] = "редактировать новость";
        $this->data['news_item'] = $this->news_model->getNews($slug);

if (empty($data['news_item'])) {
             show_404();
}

        $this->data['title_news'] = (isset($this->data['news_item']['title'])) ? $this->data['news_item']['title'] : "";
        $this->data['content_news'] = (isset($this->data['news_item']['text'])) ? $this->data['news_item']['text'] : "";
        $this->data['slug_news'] = (isset($this->data['news_item']['slug'])) ? $this->data['news_item']['slug'] : "";

        if($this->input->post('slug') && $this->input->post('title') && $this->input->post('text')) {
           
            $slug = $this->input->post('slug');
            $title = $this->input->post('title');  
            $text = $this->input->post('text');


            if($this->news_model->updateNews($slug, $title, $text)) {

               echo "Новость успешно отредактирована!";
            }

        }

        $this->load->view('templates/header', $this->data);
        $this->load->view('news/edit', $this->data);
        $this->load->view('templates/footer');
    }
Формулировка решения проблемы: ОДИН ИЗ СПОСОБОВ - ДОБАВИТЬ РЕДИРЕКТ ПОСЛЕ УСПЕШНОГО ОБНОВЛЕНИЯ НОВОСТИ.
Редирект я использую в другом коде и он работает в следующем виде:
Код:
             $this->load->helper('url_helper');
                         redirect('/', 'location');
Попытки его применить в данной ситуации оказались безуспешными.
Логически я вижу другой способ решения этой задачи, но он не работает:
Код:
public function edit($slug = NULL) {


        $this->data['title'] = "редактировать новость";

        $this->data['news_item'] = $this->news_model->getNews($slug);



if (empty($data['news_item'])) {
             show_404();
         } else {

        $this->data['title_news'] = (isset($this->data['news_item']['title'])) ? $this->data['news_item']['title'] : "";

        $this->data['content_news'] = (isset($this->data['news_item']['text'])) ? $this->data['news_item']['text'] : "";

        $this->data['slug_news'] = (isset($this->data['news_item']['slug'])) ? $this->data['news_item']['slug'] : "";



        if($this->input->post('slug') && $this->input->post('title') && $this->input->post('text')) {

           

            $slug = $this->input->post('slug');

            $title = $this->input->post('title');  

            $text = $this->input->post('text');


            if($this->news_model->updateNews($slug, $title, $text)) {



               echo "Новость успешно отредактирована!";

            }

        }
      }

        $this->load->view('templates/header', $this->data);

        $this->load->view('news/edit', $this->data);

        $this->load->view('templates/footer');

    }
Подскажите, пожалуйста, как быть в этой ситуации.

СПАСИБО.
 

weregod

unserializer
как-то так бы сделал, зачем перенаправлять, если каку набрали в адресной строке, самому баги сложнее будет
PHP:
$this->load->view('templates/header', $this->data);
if (empty(...)) {
    $this->load->view('шаблон с сообщением об ошибке в урле', $this->data);
} else {
    $this->load->view('news/edit', $this->data);
}
$this->load->view('templates/footer');
 

Serebos

Новичок
$this->load->view('шаблон с сообщением об ошибке в урле', $this->data);
это означает, что мне нужно создать дополнительный вид (страницу об ошибке)!? Можно ли сюда как-то добавить стандартную страницу show_404();

СПАСИБО, за помощь!
 

weregod

unserializer
когда названия переменных/методов интуитивно непонятны, это адский ад
 

Serebos

Новичок
на данном мое написание кода сродни "условному рефлексу Павлова": имею что-то рабочее и пытаюсь сделать что-то необходимое!
 
Сверху