<MyRusakov.ru />

Создание сайтов на Django

Создание сайтов на Django

Данный курс научит Вас создавать сайты на очень мощном фреймворке – Django. Курс состоит из 9 разделов, в которых Вы с нуля освоите данный фреймворк на примере создания полноценного Интернет-магазина.

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

Помимо самого курса Вас ждёт ещё и бесплатный ценный Бонус: «Unit-тестирование сайта на Django». В этом Бонусе Вы узнаете, как можно написать автоматические тесты для проекта на Django. Это позволит находить оперативно ошибки, а также даст возможность в будущем добавлять новый функционал, не боясь что-то сломать в старом.

Подробнее
Подписка

Подпишитесь на мой канал на YouTube, где я регулярно публикую новые видео.

YouTube Подписаться

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Зачем Вы изучаете программирование/создание сайтов?

Древовидные структуры данных в PHP на примере вложенных комментариев

Древовидные структуры данных в PHP на примере вложенных комментариев

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

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

Код ниже может быть использован для вывода древовидных комментариев к статье:


<?php

     //  строит структуру дерево из простого списка
    function buildTree(array &$list)
    {
        $tree = [];

        // делаем группировку по идентификатору родителя
        foreach ($list as $node) {
            $tree[$node['parent_id']][] = $node;
        }

        // рекурсивная функция, создающая вложенную (древовидную) структуру
        $recursiveBuilder = function ($children) use (&$recursiveBuilder, $tree) {

            foreach ($children as $key => $child)
            {
                $child_id = $child['comment_id'];

                if (isset($tree[$child_id])) {
                    $child['answers'] = $recursiveBuilder($tree[$child_id]);
                }

                $children[$key] = $child;
            }

            return $children;
        };

        return $recursiveBuilder($tree[0]);
    }


Вот структура таблицы комментариев:


create table comments
(
    comment_id int auto_increment                     primary key, -- первичный ключ - id комментария
    post_id    int                                    null,        -- id статьи
    parent_id  int          default 0                 null,        -- идентификатор родительского комментария
    author     varchar(100) default 'Нет имени'       null,
    created_at datetime     default CURRENT_TIMESTAMP null,
    text       text                                   null
)
comment 'хранит все комментарии к статьям'

Создание вложенных комментариев:


<?php

    // функция для работы  с подключения к базе MySQL
    function connection(string $host, string $db, string $user, string $pass, string $charset = 'utf8'): \PDO
    {
        $dsn = "mysql:host=$host;dbname=$db;charset=$charset";
        $opt = [
            PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
            PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
            PDO::ATTR_EMULATE_PREPARES   => false,
        ];

        $pdo = new PDO($dsn, $user, $pass, $opt);

        return $pdo;
    }


    // подключаемся к базе
    $connection = connection('127.0.0.1', 'comments_db', 'user', 'password');

    // выбираем все комментарии к статье с идентификатором 1
    $stmt = $connection->query('SELECT * FROM comments WHERE post_id = 1');
    $comments = $stmt->fetchAll();

    // строим дерево
    $tree = buildTree($comments);

    // выводим на печать
    print_r($tree);

Вот таким образом можно создать дерево комментариев на PHP. Да и не только это. Например, с помощью функции buildTree(array) можно построить и каталог интернет-магазина и карту сайта.

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

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

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

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

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

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

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

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

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