ПЗ (1194863), страница 6
Текст из файла (страница 6)
3.1.3 Таблица coupon_cat
Данная таблица содержит информацию о категориях купонов, представленных в таблице coupons. Таблица coupon_cat необходимо в том случае, если клиенту нужно получить информацию о всех категориях купонов. Также в случае, когда клиенту нужно вернуть выборку из купонов только определенной категории, необходима данная таблица.
3.2 Запросы к серверу и структура JSON-документов
Для выборки данных из таблиц базы данных необходимо создать обработчики на сервере. Данные обработчики должны формировать запросы к базе данных, необходимые для получения выборки и дальнейшей передачи клиенту. Необходимо реализовать обработчики для следующих запросов:
– получение данных из таблицы company;
– получение данных из таблицы coupons;
– получение данных из таблицы coupon_cat;
– выборка данных из таблицы coupons по выбранному магазину;
– выборка данных из таблицы coupons по выбранной категории;
– получение данных из поля logo таблицы company.
Обработчики для данных запросов располагаются на сервере, связанном с базой данных. Программный модуль для обработки запросов написан на языке программирования PHP [26]. Каждый обработчик содержит подключение к базе данных и SQL-запрос к базе данных [28]. После получения данных из таблиц базы данных, обработчик преобразует информацию в удобный для передачи клиенту JSON-документ. Каждый JSON-документ представляет собой набор пар ключ: значение. Именно данные JSON-документы получает клиент в ответ на отправленный на сервер запрос.
3.2.1 Получение данных из таблицы company
Данный запрос формирует выборку из таблицы company с полями id, name, logo. Поле name содержит информацию о названии фирмы.
SQL-запрос имеет простую форму. В дальнейшем в коде PHP происходит фильтрация по полям таблицы company, определенным выше. Структура JSON-документа представлена на листинге 4.
| 1 | {"company":[{"id":"128955","website":"http:\/\/220-volt.ru\/"}, |
| 2 | {"id":"128956","website":"http:\/\/aliexpress.com\/ru_home.htm"}, |
| 3 | {"id":"128957","website":"http:\/\/astia.ru\/"}, |
| 4 | {"id":"128958","website":"http:\/\/Ayurveda-shop.ru\/"}, |
| 5 | {"id":"128959","website":"http:\/\/babadu.ru\/"}, |
| 6 | {"id":"128960","website":"http:\/\/bambolo.ru\/"}, |
| 7 | {"id":"128961","website":"http:\/\/bebakids.ru\/"}, |
| 8 | {"id":"128962","website":"http:\/\/bestwatch.ru\/"}, |
| 9 | {"id":"128963","website":"http:\/\/butik.ru\/"}, |
| 10 | {"id":"128964","website":"http:\/\/shop-delonghi.ru\/"}, |
| 11 | {"id":"128965","website":"http:\/\/ebaysocial.ru\/"}, |
| 12 | ],"success":1} |
Листинг 4 – JSON-документ company
3.2.2 Получение данных из таблицы coupons
Данный запрос требуется для отображения списка всех купонов. В выборке выделены следующие поля таблицы coupons: поле logo – для передачи части ссылки на логотип фирмы, для которой предоставляется купон; поле name – для отображения акции, предоставляемой по купону; поле goto_link – для передачи ссылки на купон.
SQL-запрос повторяет форму, используемую в ранее описанном запросе, отличаясь только таблицей, из которой требуется получить данные. Код позволяет получить данные из таблицы coupons в виде JSON-документа (листинг 5), элементы которого являются наборами пар ключ: значение.
| 1 | {"coupons":[{"id":"40235","name":"Покупайте товары Philips, участвующие в программе МТС |
| 2 | Бонус, со скидкой 30%!\n", "short_name":"Скидки до |
| 3 | 30%!","goto_link":"https:\/\/ad.admitad.com\/g\/mnsa2vh8y12391ae63fc1d5fe392d7\/?i=3"}, |
| 4 | {"id":"40273","name":"Патио Кухни! Новый бренд от Роникон! ","short_name":"Выгодные цены", |
| 5 | "goto_link":"https:\/\/ad.admitad.com\/g\/z6vt4wln7c2391ae63fccbdf91a746\/?i=3"}, |
| 6 | {"id":"40300","name":"Скидка 20% на все товары по полной стоимости!","short_name":"Скидка 20%!", |
| 7 | "goto_link":"https:\/\/ad.admitad.com\/g\/p7tkvkbqcj2391ae63fc3d89878ee1\/?i=3"}, |
| 8 | {"id":"40309","name":"Скидка 8% на всю категорию Apple аксессуары!","short_name":"Скидка 8%!", |
| 9 | "goto_link":"https:\/\/lenkmio.com\/g\/7uq4acf3yc2391ae63fc22af2ed61b\/?i=3"}, |
| 10 | {"id":"40310","name":"Скидка 8% на всеАвтомобили и мотоциклы!","short_name":"Скидка 8%!", |
| 11 | "goto_link":"https:\/\/lenkmio.com\/g\/04kwpuqq3x2391ae63fc22af2ed61b\/?i=3"}, |
| 12 | {"id":"40311","name":"Скидка 8% на все бытовые электроники!","short_name":"Скидка 8%!", |
| 13 | "goto_link":"https:\/\/lenkmio.com\/g\/joo4dmgulm2391ae63fc22af2ed61b\/?i=3"}, |
| 14 | {"id":"40312","name":"Скидка 7% на все планшеты!","short_name":"Скидка 7%!", |
| 15 | "goto_link":"https:\/\/lenkmio.com\/g\/p4eojhx0b72391ae63fc22af2ed61b\/?i=3"} |
| 16 | ],"success":1} |
Листинг 5 – JSON-документ coupons
3.2.3 Получение данных из таблицы coupon_cat
Данный запрос требуется для отображения всех списка категорий всех купонов. Таблица coupon_cat имеет простой вид: здесь нужно получить только одно поле name, в котором указано наименование категорий купонов, представленных в базе данных.
SQL-запрос также имеет схожий с предыдущими запросами вид. JSON-документ, используемый для передачи данных клиенту также содержит только одну пару ключ: значение (листинг 6).
| 1 | {"category":[{"id":"613","name":"Детские товары"}, |
| 2 | {"id":"614","name":"Красота & здоровье"}, |
| 3 | {"id":"615","name":"Мода & аксессуары"}, |
| 4 | {"id":"616","name":"Обувь женская & мужская"}, |
| 5 | {"id":"617","name":"Одежда"}, |
| 6 | {"id":"618","name":"Спорт и отдых"}, |
| 7 | {"id":"619","name":"Товары для дома"}, |
| 8 | {"id":"620","name":"Компьютеры & Электроника"}, |
| 9 | {"id":"621","name":"Цветы и подарки"}, |
| 10 | {"id":"622","name":"Часы"}, |
| 11 | {"id":"623","name":"Еда"}, |
| 12 | {"id":"624","name":"Путешествия & Туризм"}, |
| 13 | {"id":"625","name":"Книги"}, |
| 14 | {"id":"626","name":"Финансы & Страхование"}, |
| 15 | {"id":"627","name":"ЗОО"}, |
| 16 | {"id":"628","name":"Для взрослых"}, |
| 17 | {"id":"629","name":"Игры"}, |
| 18 | {"id":"630","name":"Автотовары"}], |
| 19 | "success":1} |
Листинг 6 – JSON-документ category
3.2.4 Выборка данных из таблицы coupons по выбранному магазину
Данный запрос требуется для получения данных из таблицы coupons с фильтрацией по полю company_id, которое является внешним ключом для таблицы company.
SQL запрос представляет из себя выборку элементов с включенным критерием фильтрации данных. JSON-документ формируется из отфильтрованных по таблице company данных.
3.2.5 Выборка данных из таблицы coupons по выбранной категории
Данный запрос повторяет логику предыдущего запроса. Как и в предыдущем запросе, требуется осуществить фильтрацию полей таблицы coupons, однако в указанном запросе фильтрация происходит по полю category_id, которое является внешним ключом для таблицы coupon_cat.
SQL-запрос представляет собой выборку с включенным критерием фильтрации данных. JSON-документ формируется на основе полученных данных из таблицы coupons с учетом установленного критерия.
3.2.6 Получение данных из поля logo таблицы company
Данный запрос требуется для получения данных из таблицы company. Поле содержит часть ссылки на логотип компании, который требуется для изображений в мобильном приложении.
SQL-запрос имеет простую форму и представляет собой выборку одного поля из таблицы company. JSON-документ формирует простые пары ключ: значение (листинг 7).
| 1 | {"image":[{"id":"128955","logo":"\/images\/company_img\/1810.jpg"}, |
| 2 | {"id":"128956","logo":"\/images\/company_img\/6115.jpg"}, |
| 3 | {"id":"128957","logo":"\/images\/company_img\/2817.jpg"}, |
| 4 | {"id":"128958","logo":"\/images\/company_img\/7822.jpg"}, |
| 5 | {"id":"128959","logo":"\/images\/company_img\/1939.jpg"}, |
| 6 | {"id":"128960","logo":"\/images\/company_img\/9887.jpg"}, |
Листинг 7 – Обработчик получения данных image
Получение данных в ответ на SQL-запрос от базы данных с использованием JSON-документа является наиболее простым и эффективным способом передачи структурированных данных.
3.3 Обработка запросов клиента
Для реализации обработки запросов клиентской части системы, необходимо реализовать обработчики запросов. Данные обработчики написаны на языке программирования PHP. Обработчик представляет из себя файл с расширением .php, который включает в себя: механизм подключения к базе данных, расположенной на том же сервере; непосредственно сам SQL-запрос, адресованный базе данных; код, который представляет из себя условие, при выполнении которого данные из базы данных формируют JSON-документ.
3.3.1 Обработка SQL-запроса на получение данных из таблицы company
Данный обработчик необходим для получения информации из таблицы company. Полный листинг представлен ниже (листинг 8).
| 1 | <?php |
| 2 | $con = mysqli_connect("localhost", "login", "password", "id1813052_diplom"); |
| 3 | if (mysqli_connect_errno()) { |
| 4 | printf("Не удалось подключиться: %s\n", mysqli_connect_error()); |
| 5 | exit();} |
| 6 | $response = array(); |
| 7 | $result = mysqli_query($con, "SELECT *FROM company"); |
| 8 | if (mysqli_num_rows($result) > 0) { |
| 9 | $response["company"] = array(); |
| 10 | while ($row = mysqli_fetch_array($result)) { |
| 11 | $product = array(); |
| 12 | $product["id"] = $row["id"]; |
| 13 | $product["website"] = $row["website"]; |
| 14 | array_push($response["company"], $product);} |
| 15 | $response["success"] = 1; |
| 16 | echo json_encode($response, JSON_UNESCAPED_UNICODE); |
| 17 | } else { |
| 18 | $response["success"] = 0; |
| 19 | $response["message"] = "No products found"; |
| 20 | echo json_encode($response);} |
| 21 | ?> |
Листинг 8 – Обработчик получения данных из таблицы company















