Получил по запросу от одной компании тестовую задачу, чтобы прокачать свои текущие навыки, и понять уровень требований на рынке по моей специализации.
Описание задачи:
Последовательность реализации:
- Необходимо создать в БД PostgreSQL три таблицы заданной в ТЗ структуры, расширив количество ввведенных данных для более удобного тестирования.
- Формат вывода итоговых данных не сильно беспокоит заказчика, поэтому вывод будет осуществлен тривиально, используя самые простые операторы PHP: var_dump() и print_r().
- Обработка запросов к БД будет осуществляться через класс, который находится в файле DbClass.php и подключается к скрипту (см. строка 2 скрипт PHP). Код класса не приводится здесь целиком, показаны только два метода с запросами к БД (см. Код запросов к базе данных - PDO).
- Первый запрос, вызывается из скрипта РНР (см. строка 5 скрипт PHP) и позволяет получить ассоциативный массив данных, в котором каждому ключу - номеру телефону, будет поставлено в соответствие значение - строка со списком ID всех зданий, где имеется номер такого телефона.
- В скрипте РНР обрабатываем полученный массив и убираем те позиции, в значениях которых присутствует только BuildID одного здания (см. строка 9 скрипт PHP). Остальные данные записываем в новый массив со следующей трансформацией (см. строка 11 скрипт PHP): каждому ключу - набору BuildID (строка с перечислением через запятую), добавляем в массив значений номер телефона.
- Выводим общий полученный сгруппированный массив на страницу браузера (см. строка 15 скрипт PHP).
- В следующем цикле скрипта РНР проходимся по всем элементам полученного массива с целью отправки запросов к базе данных и получения названий адресов зданий по их BuildID (см. строка 22 скрипт PHP).
- Второй метод класса, находящегося в файле DbClass.php (см. функцию getBuildName Код запросов к базе данных - PDO), позволяет нам получить все адреса по ID из строки с перечнем BuildID.
- Выводим на странице все адреса группы (см. строка 25 скрипт PHP) и номера телефонов (см. строка 27 скрипт PHP), общие для каждого адреса в группе. Номер группы устанавливаем последовательно (см. строка 30 скрипт PHP).
Таблицы базы данных:
Файл скрипта PHP:
Код запросов к базе данных - PDO:
Итоговая реализация - вывод на страницу браузера после запуска скрипта:
Удачи в разработке!
другие материалы:
- Практический пример скрипта 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.