Как добавить новость на сайт c помощью PHP. Часть 3

Как добавить новость на сайт c помощью PHP. Часть 3

Как добавить новость на сайт c помощью PHP. Часть 3

Доброго времени суток! В прошлой статье мы рассмотрели основную
программную часть нашего проекта. А в этой статье мы соберем все части проекта вместе, чтобы создать систему добавления
новостей на сайт на PHP
.

Итак, код:

файл index.php — индексный файл сайта



<?php





require_once 'core.php';

require_once 'models/news_model.php';

$connectionConfig = require_once 'config.php';





/**

 * Показывает страницу со всеми новостями

 * 

 * @throws Exception

 */

function news_show_all_action(array $connectionConfig = [])

{

    // подключаемся к базе данных

    $connection = getDBConnection($connectionConfig);

    // получаем все новости

    $news = news_getAll($connection);



    // возвращаем отрисованый шаблон

    return render('index', ['news' => $news]);

}





print news_show_all_action($connectionConfig);







файл news.php — отвечает за добавление новости в базу



<?php





require_once 'models/news_model.php';



/**

 * Валидация данных введенных пользователем для новости

 * 

 * @param array $data

 * @return array

 */

function news_validate(array $data): array

{

    $foundErrors = [];

    $foundErrors['errors'] = [];

    $foundErrors['hasErrors'] = false;



    if(!$data['title'] && !$data['content']) {

        $foundErrors['errors'][] = 'В запросе должны присутствовать и заголовок и содержимое новости';

    }



    $title = $data['title'];

    $content = $data['content'];



    if(mb_strlen($title) < 10 && mb_strlen($content) < 10) {

        $foundErrors['errors'][] = 'Длина заголовка и/или содержимого не должна быть менее 10 символов';

    }



    $title = trim($title);

    $content = trim($content);



    if(count($foundErrors['errors']) > 0) {

        $foundErrors['hasErrors'] = true;

    }



    $data =  array_merge($foundErrors, ['title' => $title, 'content' => $content]);



    return $foundErrors['hasErrors'] ? $foundErrors : $data;

}





/**

 * Показывает форму добавления новости

 * 

 * @param array $connectionConfig

 * @param array $requestData

 * @return false|string

 */

function news_show_form(array $connectionConfig, array $requestData)

{

    $data = ['message' => ''];



    // если нажата кнопка добавить новость

    if (isset($requestData['news_add'])) {



        // проверяем данные на корректность

        $data = news_validate($requestData);



        // если есть ошибки - отображаем их на странице

        if($data['hasErrors']) {

            return render('form', ['message' => 'Провал', 'errors' => $data['errors']]);

        }



        // добавляем новость в базу

        $result = news_add_action($connectionConfig, $data['title'], $data['content']);



        if ($result == NEWS_MODEL_OK) {

            $data = ['message' => 'Новость успешно добавлена!'];

        } else {

            $data = ['message' => 'Новость добавить не удалось!'];

        }

    }



    return render('form', $data);

}



// если скрипт запущен не в консоли - показываем форму

if(php_sapi_name() != 'cli') {

    print news_show_form($connectionConfig, $_POST);

}







Файл post.php — отображает одну новость по ее идентификатору



<?php



    require_once __DIR__ . '/core.php';

    require_once __DIR__ . '/models/news_model.php';

    $connectionConfig = require_once __DIR__ . '/config.php';





    $id = intval($_GET['id']);

    $connection = getDBConnection($connectionConfig);

    $post = news_getById($connection, $id);



    //print_r($post);

    print render('post', ['post' => $post]);



Таким образом, в данном цикле из 3-ех статей мы создали простое, но в тоже время
полноценное приложение на PHP для добавления новостей на сайт.

Кстати, скоро у меня выходит новый видеокурс
«PHP и MySQL с Нуля до Гуру 3.0″,
в бонусной части которого создается полноценный проект книжной библиотеки на PHP.

Источник

НЕТ КОММЕНТАРИЕВ

Оставить комментарий