Как добавить новость на сайт 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.