Добавление статей на php

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

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

Доброго времени суток! В данном цикле статей мы рассмотри с Вами, как можно реализовать простую систему с помощью которой можно будет добавлять новости на сайт. Реализована она будет на PHP.

Итак, для начала рассмотрим структуру нашего проекта:

.
├── css
│ ├── bootstrap.min.css
│ └── style.css
├── images
│ └── php-add-news-on-site.jpg
├── models
│ └── news_model.php
├── templates
│ ├── form.phtml
│ └── index.phtml
├── config.php
├── core.php
├── index.php
├── news.php
└── news_table.sql

Рассмотрим по отдельности каждую папку.

  • css — как нетрудно догадаться папка со css-стилями. В примере используется Bootstrap 5
  • image — папка для разных изображений
  • models — папка моделей для работы с базой
  • templateshtml-шаблоны
  • config.php — настройки доступа к базе данных и другие настройки
  • core.php — несколько базовых функций
  • index.php — выводит список последних новостей
  • news.php — добавляет новость в базу
  • news_table.sqlSQL-скрипт для создания таблицы новостей

Теперь рассмотрим подробнее SQL-скрипт и HTML-шаблоны.

create table news
(
id int auto_increment,
title varchar(512) not null,
content text not null,
created_at datetime default now() null,
constraint news_pk
primary key (id)
);

В данном примере новость имеет заголовок (text) и содержимое (content), а также дату добавления (created_at). Это минимально необходимые данные.

Теперь рассмотрим HTML-шаблоны, которые выводят данные новости и предоставляют интерфейс для их добавления в базу.

index.phtml — вывод списка новостей

Добавить новость

—>

form.phtml — форма добавления новости


Таким образом, в данной статье мы рассмотрели с Вами структуру проекта и содержимое некоторых файлов. В следующей статье рассмотрим подробно код приложения.

Создано 25.01.2022 13:40:02

  • Михаил Русаков
  • Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

    Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
    Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

    Если Вы не хотите пропустить новые материалы на сайте,
    то Вы можете подписаться на обновления: Подписаться на обновления

    Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

    Порекомендуйте эту статью друзьям:

    Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

    1. Кнопка:
      Она выглядит вот так:
    2. Текстовая ссылка:
      Она выглядит вот так: Как создать свой сайт
    3. BB-код ссылки для форумов (например, можете поставить её в подписи):
    Читайте также:  Gallery image android java

    Комментарии ( 0 ):

    Для добавления комментариев надо войти в систему.
    Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.

    Copyright © 2010-2023 Русаков Михаил Юрьевич. Все права защищены.

    Источник

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

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

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

    Проект будет реализован в процедурном стиле для простоты, но при необходимости его можно перевести в объектно-ориентированный вариант.

    Итак, начнем рассматривать файлы проекта, но для начала вспомним структуру проекта:

    .
    ├── css
    │ ├── bootstrap.min.css
    │ └── style.css
    ├── images
    │ └── php-add-news-on-site.jpg
    ├── models
    │ └── news_model.php
    ├── templates
    │ ├── form.phtml
    │ └── index.phtml
    ├── config.php
    ├── core.php
    ├── index.php
    ├── news.php
    └── news_table.sql

    config.php

    Содержит конфигурацию для доступа к базе данных. Поэтому перед тем как запускать проект надо создать базу и таблицу (news_table.sql).

    return [
    ‘host’ => ‘127.0.0.1’,
    ‘db’ => ‘posts_dbs’,
    ‘user’ => ‘user’,
    ‘pass’ => ‘password’,
    ‘charset’ => ‘utf8’
    ];

    core.php

    Файл с основными функциями, необходимыми для работы проекта

    /**
    * Создает PDO подключение к базе данных
    *
    * @param array $connectionConfig
    * @return PDO
    *
    */
    function getDBConnection(array $connectionConfig): PDO
    $host = $connectionConfig[‘host’];
    $db = $connectionConfig[‘db’];
    $charset = $connectionConfig[‘charset’];
    $pass = $connectionConfig[‘pass’];
    $user = $connectionConfig[‘user’];

    $dsn = «mysql:host=$host;dbname=$db;charset=$charset»;
    $opts = [
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    PDO::ATTR_EMULATE_PREPARES => false,
    ];

    // подключение к базе
    return new PDO($dsn, $user, $pass, $opts);
    >

    /**
    * Берет файл шаблона из папки templates и возвращает его
    * с подставленными значениями переменных из массива $vars.
    *
    * @param string $template
    * @param array $vars
    * @return false|string
    */
    function render(string $template, array $vars = [])
    $vars = sanitize_html($vars);
    ob_start();
    extract($vars);
    include sprintf(«%s/templates/%s.phtml», __DIR__, $template);
    return ob_get_clean();
    >

    /**
    * Преобразует все элементы массива заменяя html-теги на их html-сущности
    *
    * @param array $values
    * @return array
    */
    function sanitize_html(array $values): array
    $resultArray = [];
    foreach ($values as $key => $value) if(is_array($value)) $resultArray[$key] = sanitize_html($value);
    >
    else $resultArray[$key] = htmlentities($value, ENT_QUOTES);
    >
    >
    return $resultArray;
    >

    /**
    * Просто преобразует строку с датой в требуемый формат
    *
    * @param string $datetime
    * @param string $format
    * @return string
    */
    function format_datetime(string $datetime, string $format = ‘d M Y H:m:s’): string
    try $datetimeObj = new DateTime($datetime);
    > catch (Exception $e) return $e->getMessage();
    >
    return $datetimeObj->format($format);
    >

    файл models/news_model.php

    Модель для работы с данными новостей — добавления, вывода

    require_once __DIR__ . ‘/../core.php’;

    /**
    * Добавляет статью в базу
    *
    * @param PDO $connection
    * @param string $title
    * @param string $content
    * @return bool
    */
    function news_add(PDO $connection, string $title, string $content): bool
    $sql = ‘INSERT INTO news (title, content) VALUES (:title, :content)’;
    $statement = $connection->prepare($sql);
    $data = [‘:title’ => $title, ‘:content’ => $content];

    /**
    * Получает статью из базы по ее идентификатору
    *
    * @param PDO $connection
    * @param int $id
    * @return array
    */
    function news_getById(PDO $connection, int $id): array
    $sql = ‘SELECT * FROM news WHERE/> $statement = $connection->prepare($sql);

    Читайте также:  Page Title

    return $statement->execute([‘:id’ => $id]) ? $statement->fetch() : [];
    >

    /**
    * Возвращает список из всех новостей
    *
    * @param PDO $connection
    * @return void[]
    * @throws Exception
    */
    function news_getAll(PDO $connection): array
    $sql = ‘SELECT * FROM news ORDER BY created_at DESC’;
    $statement = $connection->query($sql);
    $news = $statement->fetchAll();

    return array_map(function (array $item) $item[‘created_at’] = format_datetime($item[‘created_at’]);
    return $item;
    >, $news);
    >

    const NEWS_MODEL_OK = 1001;
    const NEWS_MODEL_FAILED = 1002;

    /**
    * Вызывает при запросе пользователя. Добавляет статью в базу
    *
    * @param array $connectionConfig
    * @param string $title
    * @param string $content
    * @return int
    */
    function news_add_action(array $connectionConfig, string $title, string $content): int
    $connection = getDBConnection($connectionConfig);
    $executeResult = news_add($connection, $title, $content);

    return $executeResult ? NEWS_MODEL_OK : NEWS_MODEL_FAILED;
    >

    файл post.phtml — шаблон для вывода одной новости

    Таким образом мы рассмотрели основную программную часть нашего проекта. А в следующей заключительной статье мы соберем все вместе — в единую систему добавления статьи на сайт.

    Создано 01.02.2022 08:01:10

  • Михаил Русаков
  • Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

    Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
    Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

    Если Вы не хотите пропустить новые материалы на сайте,
    то Вы можете подписаться на обновления: Подписаться на обновления

    Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

    Порекомендуйте эту статью друзьям:

    Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

    1. Кнопка:
      Она выглядит вот так:
    2. Текстовая ссылка:
      Она выглядит вот так: Как создать свой сайт
    3. BB-код ссылки для форумов (например, можете поставить её в подписи):

    Комментарии ( 0 ):

    Для добавления комментариев надо войти в систему.
    Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.

    Copyright © 2010-2023 Русаков Михаил Юрьевич. Все права защищены.

    Источник

    Добавление статей на сайт

    здравствуйте.
    У меня есть связка php-mysql-apache и есть сайт на локалхосте. хочу прикрутить к нему возможность добавлять статьи. но не знаю, где они физически должны храниться. в отдельных текстовых файлах? а если их туева хуча? в бд? как? и как сделать, чтобы они добавлялись по принципу записей в блоге. как это можно сделать? я еще новичок, я не знаю

    Добавление статей пользователями
    Добрый день! Я отходил от уроков интернет магазина на youtube. Скажите пожалуйста, возможно связать.

    Ограничение на добавление статей по ip
    добрый вечер, помогите разобраться, как сделать так, чтобы пользователь например защедший на сайт.

    Добавление статей из админки сайта
    Всем доброго времени суток, вопрос собственно в чем — у меня в админке есть пункт "добавить статью".

    Динамическое добавление статей и страниц
    Всем привет. Не знаю правильно ли я назвал тему:D, но меня интересует вопрос — как сделать так.

    ЦитатаСообщение от Ihva Посмотреть сообщение

    Читайте также:  Python telegram bot кнопки telebot

    Что конкретно не получается? Полноценный урок вы можете в ютубе поискать, а здесь вряд ли кто то будет весь процесс описывать.

    ЦитатаСообщение от tarasalk Посмотреть сообщение

    на данный момент просто не знаю, с какой стороны за это браться, потому что не знаю, где должны лежать тексты. скажите хоть, в какую сторону гуглить?

    ЦитатаСообщение от Ihva Посмотреть сообщение

    Простой путь -> youtube как создать блог php
    Путь джедая -> php.ru. ООП, MVC, фреймворк
    Путь ситха -> cms, wordpress

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
    Создаешь базу данных, создаешь таблицу в ней, например: stateiki. Делаешь два столбца к примеру, username и сам текст post  //вывод на страницу текста с базы данных $db_host = 'адресс хостинга или localhost'; $db_name = 'название базы данных'; $db_username = 'логин в базе данных'; $db_password = 'пароль в базе данных'; $db_table_to_show = 'stateiki'; // соединяемся с сервером базы данных $connect_to_db = mysql_connect($db_host, $db_username, $db_password) or die("Нет подключения: " . mysql_error()); // подключаемся к базе данных mysql_select_db($db_name, $connect_to_db) or die("Не выбрана БД: " . mysql_error()); // выбираем все значения из таблицы mysql_query("SET NAMES utf8"); $qr_result = mysql_query("select * from " . $db_table_to_show) or die(mysql_error()); mysql_query("SET NAMES utf8"); echo '

    СТАТЬИ:DDDDD

    '
    ; echo '';echo'';echo'';echo'';echo'';echo'';echo'';echo'';while($row=mysql_fetch_array($qr_result)){echo'';echo'';echo'';echo'';}echo'';echo'
     Автор статьи 
     Сама статья 
     ' . $row["username"] .
     ' . $row["post"] .
    '
    ; $db_host = 'адресс хостинга или localhost'; $db_name = 'название базы данных'; $db_username = 'логин в базе данных'; $db_password = 'пароль в базе данных'; // соединяемся с сервером базы данных $connect_to_db = mysql_connect($db_host, $db_username, $db_password) or die("Нет подключения: " . mysql_error()); // подключаемся к базе данных mysql_select_db($db_name, $connect_to_db) or die("Не выбрана БД: " . mysql_error()); // выбираем значения из таблицы $qr_result = mysql_query("select post, username from stateiki where username = '".$_POST['username']."'") or die(mysql_error()); $kal=mysql_num_rows($qr_result); //echo $_POST['username']; for($i=1; $i$kal; $i++) { $row=mysql_fetch_array($qr_result); } if(isset($_POST['stateiki'])//когда нажата кнопка добавляем в базу данных лабуду { $db_host = 'адресс хостинга или localhost'; $db_name = 'название базы данных'; $db_username = 'логин в базе данных'; $db_password = 'пароль в базе данных'; // соединяемся с сервером базы данных $connect_to_db = mysql_connect($db_host, $db_username, $db_password) or die("Нет подключения: " . mysql_error()); // подключаемся к базе данных mysql_select_db($db_name, $connect_to_db) or die("Не выбрана БД: " . mysql_error()); $qr_result = mysql_query("INSERT INTO `stateiki` (`post`, `username`) VALUES (".$_POST['stateiki2'].",".$_POST['username'].")") or die(mysql_error()); } ?>

    Добавить статью

    Источник

    Оцените статью