Кто как выполнил модификацию проверки на несуществующую новость?

0

В 8 уроке автор поставил задачу самостоятельно поискать замену строк

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

чтобы корректно работал код и при обновлении новости и при запросе на несуществующую новость. Автор упомянул о redirect. Я долго разбирался с redirect в курсе PHP, но в этом случае совсем иной алгоритм. Кто-то реализовал у себя эту задачу в коде?

Я пытался такое вот реализовать, но ничего не получилось

if(!empty($data['news_item']))  {

                       $data['news_item'] = $this->news_model->getNews($slug);
                       не пойму, что здесь указать, если вообще этот вариант подходит

} else {
 show_404();
}

На форумах мне предложили такие вот варианта, но не могу это применить... 

xxx@xx MINGW32 ~
$ cat <<\z | /c/x/php/php
 
<?php
$arr['test'] = NULL;
var_dump(isset($arr['test']));
z
 
bool(false)
 
xxx@xx MINGW32 ~
$ cat <<\z | /c/x/php/php
 
<?php
$arr['test'] = ''; # или [] пустой массив
var_dump(isset($arr['test']));
z
 
bool(true)
if($data['news_item'] !== null)

try{
  $data['news_item'] = $this->news_model->getNews($slug);
}
catch(...){}

Спасибо. 

codeigniter

9 ответов

0

Вот что на форуме посоветовали усвоить относительно записи проверок в БД!

https://ru.stackoverflow.com/a/423434/179379

0

эта проверка должна была отработать

if(!empty($data['news_item']))  {
    $query = $this->db->get_where('news', array('slug'=>$slug));
    return $query->row_array();
  } else {
 show_404();

но в браузере пусто, Ctrl-U пусто, логов нет. Завтра буду пробовать редирект применить. 

0

о проверках, я имел ввиду спесиалчарс

0

student_-VH8UeUB,  спасибо за совет. Но этот код у меня не работает. 

Сейчас буду xdebug настраивать с целью получить более полную картину работы кода.

0
A PHP Error was encountered
Severity: Notice

Message: Undefined property: News::$News_model

Filename: controllers/News.php

Line Number: 76

Backtrace:

File: C:\xampp\htdocs\kinomonster\application\controllers\News.php
Line: 76
Function: _error_handler

File: C:\xampp\htdocs\kinomonster\index.php
Line: 315
Function: require_once

A PHP Error was encountered
Severity: Warning

Message: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\kinomonster\application\config\autoload.php:1)

Filename: core/Common.php

Line Number: 570

Backtrace:

An uncaught Exception was encountered
Type: Error

Message: Call to a member function getNews() on null

Filename: C:\xampp\htdocs\kinomonster\application\controllers\News.php

Line Number: 76

Backtrace:

File: C:\xampp\htdocs\kinomonster\index.php
Line: 315
Function: require_once
0

student_-VH8UeUB, спасибо за помощь. 

исходный код я смотрел, там строка не измененная (то на чем остановились в 8 уроке) и была поставлена задача его изменить. 

Весь код не пробовал записать с базой - там много непонятных переменных. Вот пройду до конца курс - возьму конечный исходный код и буду смотреть.

Вот уже второй день, по рекомендациям на форумах - xdebug для отладки пытаюсь установить. Не работает как следует, вернее, не получилось его запустить. Позже как то попытаюсь с ним разобраться. 

0

У меня так:

http://kinomonster.com/news/edit/news-123

news-123 нет в базе. В контроллере News в методе edit написано:

------
$this->data['news_item'] = $this->News_model->getNews($slug);
-----
if (empty($this->data['news_item'])) {
	show_404();
}
-----

Получается, что если в $this->data['news_item']  ничего нет, тогда вызывается метод codeigniter фреймворка show_404() и показывается 404 ошибка, что страница несуществует.

0
student_-VH8UeUB,  спасибо за совет. Но этот код у меня не работает. 

Какую ошибку пишет? Исходник из последнего урока пробовали скачать вместе с базой и запустить?

0

Проверка на существование в бд записи о конкретной новости и insert - это разные вещи. Суть проверки на существовании новости или вообще чего угодно в бд в похожей ситуации - это посмотреть является ли массив пустым после запроса или нет. Если из бд возвращается пустой массив, значит в бд нет такой новости. 

Sign up or Log in to write an answer