Увидел на одном работном сайте вакансию, где требовался программист для поддержки самописной системы. Это показалось интересно, и запросил тест, который был обозначен в вакансии.
Описание задачи:
Некоторые рассуждения о реализации:
- Требование "работы без использования фреймворка" говорит о том, что стоит сделать реализацию как можно проще, не обременяя код дополнительными сущностями и связями.
- Один из классов будет содержать методы с запросами к базе данных, отдельный класс будет осуществлять подключение к БД (в приведенном здесь коде не присутствует), и еще один класс будет управлять идентификацией пользователей, чтобы понимать, какой из пользователей оставил сообщение.
- Идентификация пользователей будет осуществляться по IP.
- После ввода комментария данные будут отправляться на сервер посредством AJAX запроса, и будет обновляться весь список комментариев для конкретной темы.
Таблицы базы данных (некоторые данные введены в процессе тестирования):
Скрин экрана страницы с темами (открыт раздел Темы 2, где присутствуют тестовые введенные комментарии):
Код страницы:
Код JavaScript для обработки данных на странице - файл book.js:
Код JavaScript c классом отправки данных на сервер - файл book.js (продолжение):
Скрин экрана страницы с открытой консолью, получаем данные с сервера в формате JSON при открытии блока Темы 2:
Класс PHP для проверки идентификации пользователя и простановки соответствующей кукки:
Класс PHP для запросов в базе данных:
Скрипт PHP для обработки AJAX запросов:
основные этапы разработки и ключевые файлы с кодом приведены, при желании вполне можно самостоятельно разобраться и доработать код под собственные нужды.
Удачи в разработке!
другие материалы:
- Практический пример скрипта SOAP клиента на PHP для запросов к серверу ASP.NET
- решение тестовой задачи MySQL - количество дней в месяцах
- решение тестовой задачи MySQL - разность дат в соседних строках
- решение тестовой задачи PostgreSQL - создание выборок из базы данных
- решение тестовой задачи PHP, JS, MySQL - добавление комментариев к темам
- решение тестовой задачи PHP, JS, SQLite - каталог товаров с подгрузкой данных
- решение тестовой задачи PHP, PostgreSQL - группировка по пересечению
- решение тестовой задачи PHP - классы для обработки разных файлов
- решение тестовой задачи PHP - класс для очистки НДС в сумме счета
- решение тестовой задачи PHP - определить является ли число простым
- решение тестовой задачи PHP - вычисление суммы всех соседей элемента массива
- решение тестовой задачи PHP - подсчет количества вторников в интервале
- решение тестовой задачи PHP - формирование XML на основе данных из MySQL
- решение тестовой задачи PHP - класс реализации структуры Deque с кольцевым буфером
- решение тестовой задачи ORM RedBeanPHP - загрузка и вывод связанных данных
- решение тестовой задачи JavaScript - фильтрация списка на странице
- решение тестовой задачи Jquery - убегание блока от курсора
- Flutter Создание мобильной версии страницы сайта
- Flutter Отправка POST запроса со страницы сайта на сервер
- Flutter Создание диалогового окна с гиперссылкой в мобильной версии сайта
- Flutter Локальное сохранение данных в формате "ключ"-"значение"
- VS Code подключение удаленного доступа FTP(SFTP) с помощью "Remote FS"
- Flutter Использование Timer для периодического изменения текста на странице
- Flutter Форма авторизации с валидацией вводимых данных
- Flutter Авторизация с валидацией и отправкой данных на сервер
- Flutter WEB загрузка файла на сервер
- Flutter Widgets - интересные виджеты Flutter
- Telegram - работа с кнопками меню команд и web_app
- Pet-project memoLink с использованием HTMX - памятка с QR кодом
- Блок рабочего проекта WEBsmeta (описание) - расчет по стройматериалам для ремонта.
- Pet-project получение данных по акциям с Мосбиржи через API MOEX ISS.