Задание №8 codeigniter a php error was encountered как решить?

0

После выполнения задания №8 в курсе CodeIgniter+MySQL у меня при редактировании новости вылазят следующие ошибки. При этом редактирование выполняется успешно. В чем может быть проблема?

Ошибки

http://cinemamaster.com/news/edit

A PHP Error was encountered
Severity: Notice

Message: Trying to access array offset on value of type null

Filename: controllers/News.php

Line Number: 61

Backtrace:

File: C:\xampp\htdocs\cinemamaster\application\controllers\News.php
Line: 61
Function: _error_handler

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


A PHP Error was encountered
Severity: Notice

Message: Trying to access array offset on value of type null

Filename: controllers/News.php

Line Number: 62

Backtrace:

File: C:\xampp\htdocs\cinemamaster\application\controllers\News.php
Line: 62
Function: _error_handler

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


A PHP Error was encountered
Severity: Notice

Message: Trying to access array offset on value of type null

Filename: controllers/News.php

Line Number: 63

Backtrace:

File: C:\xampp\htdocs\cinemamaster\application\controllers\News.php
Line: 63
Function: _error_handler

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

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

News.php

<?php 

defined('BASEPATH') OR exit('No direct script access allowed');

class News extends CI_Controller {
    
    public function __construct() {
        parent::__construct();
        $this->load->model('news_model');
    }

    public function index() {
        $data['title'] = "Все новости";
        $data['news'] = $this->news_model->getNews();

        $this->load->view('templates/header', $data);
        $this->load->view('news/index', $data);
        $this->load->view('templates/footer');
    }
    
    public function view($slug = NULL) {
        $data['news_item'] = $this->news_model->getNews($slug);

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

        $data['title'] = $data['news_item']['title'];
        $data['content']= $data['news_item']['text'];

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

    public function create() {
        $data['title'] = "Добавить новость";
        
       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->setNews($slug, $title, $text)) {
                        $this->load->view('templates/header', $data);
                        $this->load->view('news/success', $data);
                        $this->load->view('templates/footer');
                }
       } else {
        $this->load->view('templates/header', $data);
        $this->load->view('news/create', $data);
        $this->load->view('templates/footer');
       }
    }

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


        $data['title_news'] = $data['news_item']['title'];
        $data['content_news'] = $data['news_item']['text'];
        $data['slug_news'] = $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', $data);
        $this->load->view('news/edit', $data);
        $this->load->view('templates/footer');
    


    }

}
News_model.php

<?php 

class News_model extends CI_Model {

    public function __construct() {
        $this->load->database();
    }

    public function getNews($slug = FALSE) {
        if($slug === FALSE) {
            $query = $this->db->get('news');
            return $query->result_array();
        }

        $query = $this->db->get_where('news', array('slug' => $slug));
        return $query->row_array();
    }

    public function setNews($slug, $title, $text) {
        $data = array(
            'title' => $title,
            'slug' => $slug,
            'text' => $text
        );

        return $this->db->insert('news', $data);
    }

    public function updateNews($slug, $title, $text) {
        $data = array(
            'title' => $title,
            'slug' => $slug,
            'text' => $text
        );

        return $this->db->update('news', $data, array('slug' => $slug));
    }
}

edit.php

<form method="post" action="/news/edit">
    
    <input type="input" name="slug" value="<?php echo $slug_news; ?>" placeholder="slug"></br>
    <input type="input" name="title" value="<?php echo $title_news; ?>" placeholder="Название новости"></br>
    <textarea name="text" placeholder="Текст новости"><?php echo $content_news; ?></textarea></br>
    <input type="submit" name="submit" value="Редактировать новость"></br>

</form>
routes.php

$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;

$route['news'] = 'news';
$route['news/create'] = 'news/create';
$route['news/edit'] = 'news/edit';
$route['news/(:any)'] = 'news/view/$1';
codeigniter

6 ответов

0

Исходный код с аналогичными ошибками. В том то и проблема!

0

Базу брал из дампа с урока. Версия PHP 7.4.1. Возможно ли, что проблема в новой версии?

0

Благодарю! Проблема решилась после установки XAMPP версии 7.1.30.

0

Исходный код скачайте и сравните со своим. У меня нормально, без ошибок. 

0

Какая версия PHP? Базу из дампа исходника делал или сам заполнял? 

Написано, что:

В скачиваемом архиве находится исходный код всего проекта КиноМонстер в финальной сборке, протестированный на версии PHP 7.1.10 + SQL дамп базы данных.

0

Да, скорее всего изменения коснулись "пустых" данных в каком либо массиве, наверное дополнительную проверку нужно поставить на пустое значение. Я загуглиг, заметил, что много из-за этого изменения проблем, начиная от фреймворков, заканчивая всякими wordpress и друпал. Можно php 7.3 поставить или чтобы 100% все работало, как в исходнике. 

Sign up or Log in to write an answer