Новости

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


    <!doctype html>
    <html lang="ru">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport"
              content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Последние новости</title>

        <link rel="stylesheet" href="css/style.css" />
    </head>
    <body>
        <div class="container py-4 px-3">
            <div class="container">
                <h2 class="mb-3">Последние новости</h2>
                <a class="btn btn-sm btn-warning my-3" href="news.php">Добавить новость</a>
                <div class="row row-cols-1 row-cols-md-2 g-4">
                    <?php foreach($news as $post): ?>
                    <div class="col">
                        <div class="card h-100">
                            <!--<img src="..." class="card-img-top" alt="...">-->
                            <div class="card-body">
                                <h5 class="card-title"><?php print $post['title'] ?></h5>
                                <p class="card-text"><?php print $post['content'] ?></div>
                            <div class="card-footer">
                                <small class="text-muted"><?php print $post['created_at'] ?></small>
                            </div>
                        </div>
                    </div>
                    <?php endforeach ?>
                </div>
            </div>

        </div>
    </body>
    </html>

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


    <!doctype html>
    <html lang="ru">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport"
              content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Форма для добавления новости</title>

        <link rel="stylesheet" href="../css/style.css">
    </head>
    <body>
        <div class="container py-4">
            <?php if($message): ?>
            <div class="alert alert-info">
                <?php print $message ?>
            </div>
            <?php endif ?>
            <?php if($errors): ?>
                <div class="alert alert-danger">
                    <ul>
                    <?php foreach ($errors as $error): ?>
                    <li><?php print $error ?></li>
                    <?php endforeach ?>
                    </ul>
                </div>
            <?php endif ?>

            <nav aria-label="breadcrumb">
                <ol class="breadcrumb">
                    <li class="breadcrumb-item"><a href="/">Все новости</a></li>
                    <li class="breadcrumb-item active" aria-current="page">Добавить новость</li>
                </ol>
            </nav>

            <form action="../news.php" method="post">
                <h3 class="pb-3">Добавить новость</h3>
                <div class="mb-3">
                    <label for="newsTitle" class="form-label">Заголовок</label>
                    <input type="text" class="form-control" id="newsTitle" name="title" value="Простая новость" placeholder="...">
                </div>
                <div class="mb-3">
                    <label for="newsText" class="form-label">Текст</label>
                    <textarea class="form-control" id="newsText" rows="3" name="content" placeholder="...">Просто контент</textarea>
                </div>
                <div class="mb-3">
                    <input type="submit" value="Добавить" class="btn btn-success" name="news_add" />
                </div>
            </form>
        </div>
    </body>
    </html>

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

    Источник

    Статьи по теме

    Добавить комментарий

    Ваш адрес email не будет опубликован.

    Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

    Back to top button