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

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



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

    Источник

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

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