Практическая работа №12 Разработка покупательской тележки. Обзор решения. Существуют два основных представления системы: пользовательское (рис.1) и администраторское (рис.2) Выполнить платеж Список категорий Рис.1 Система сайта в пользовательком представлении Получить детали платежа Список книг данной категории Рассчитаться Информация по книге Посмотреть тележку Меню администратора Вставить книгу Вставить категорию Изменить пароль Список категорий Выйти Список книг по категории Редактировать категорию Удалить категорию Рис. 2 Система сайта в администраторском исполнении Информац ия по книге Редактировать\Удалить книгу Тремя основными модулями данного приложения являются: Каталог. Покупательская тележка и обработка заказов (эти функции здесь объединены, поскольку тесно взаимосвязаны.) Администрирование. Полный перечень файлов приложения содержится в таблице 1: Таблица 1 Файлы приложения «Покупательская тележка» Имя Модуль Описание index.php show_cat.php show_book.php show_cart.php Каталог Каталог Каталог Покупательская тележка checkout.php Покупательская тележка purchase.php process.php login.php Покупательская тележка Покупательская тележка Администрирование logout.php admin.php change_password_form.php change_password. php insert_category_form.php Администрирование Администрирование Администрирование Администрирование Администрирование insert_category.php insert_book_form. php Администрирование Администрирование insert_book.php Edit_category_form.php Edit_category.php Edit_book_form. Php Администрирование Администрирование Администрирование Администрирование Edit_book.php delete_category. Php delete_book.php book_sc_fns.php admin_fns.php book_fns.php Администрирование Администрирование Администрирование Функции Функции Функции Ход работы: Титульная страница сайта. Отображает список категорий системы. Отображает все книги определенной категории. Отображает данные по определенной книге. Отображает содержимое покупательской тележки. Кроме того, используется для добавления элементов в тележку. Представляет пользователю все данные заказа. Принимает информацию по доставке. Принимает информацию по платежу от пользователя. Обрабатывает данные платежа и добавляет заказ в базу данных. Позволяет администратору входить в систему для внесения изменений. Реализует выход администратора из системы. Главное меню администрирования. Форма, позволяющая администратору изменять свой пароль. Изменяет пароль администратора Форма, позволяющая администратору добавлять в базу данных новую категорию. Вставляет новую категорию Вставляет новую категорию в базу данных. Форма, позволяющая администратору добавлять в систему новую книгу. Добавляет новую книгу в базу данных. Форма, позволяющая администратору редактировать категорию. Обновляет категорию в базе данных. Форма, позволяющая администратору редактировать информацию о книге. Обновление информации о книге в базе данных. Удаляет категорию из базы данных. Удаляет книгу из базы данных. Набор подключаемых файлов. Набор функций, используемых сценариями администрирования. Набор функций хранения и извлечения данных о книгах. 1. Внести изменения в БД Books (переименовать БД в book_sc), используя в качестве примера следующие таблицы Таблица сustomers Таблица categories Таблица admin Таблица books Таблица order_items Общая стоимость всех заказов Количество Таблица orders Сумма 2. 3. 4. 5. Заполнить таблицы book, categories, admin (Y: /В-41,42/ПОКС/Практические РНР/Практическая работа №12/info.txt) В папке localhost/www создать каталог site, где будут храниться все файлы данной работы В папке site создать каталог images, где будут храниться все изображения первый сценарий (index.php) выводит список всех категорий из БД (структура главной страницы представлена ниже) Функция do_html_header() Главный заголовок сайта (верхний коллонтитул) Функция управления содержимым Функция do_html_footer() Нижний коллонтитул Схематичное представление Всего книг Общая сумма Функция do_html_header() Функция управления содержимым Функция do_html_footer() 6. 7. 7. 8. 9. 10. 11. 12. 13. Визуальное представление Сценарий начинается с включения файла book_sc_fns.php, который содержит все библиотеки функций для данного приложения. Создать библиотеку функций book_sc_fns.php, в состав которой входят однократно вызываемые функции db_fns.php, data_valid_fns.php, output_fns.php, book_fns.php, user_auth_fns.php, admin_fns.php, order_fns.php. Создать сценарий output_fns.php, в котором будут содержаться функции вывода HTML-заголовка, коллонтитула и функции управления содержимым сайта: При помощи функции do_html_header($title = '') построить таблицу, в которой будет размещаться заголовок сайта и информация о состоянии корзины пользователя (для информации о состоянии корзины создать только пустые ячейки, подсчет суммы заказа будет выполнен позднее) В теге заголовка окна браузера объявить переменную $title для динамичного изменения названия страницы браузера: <title><?php echo $title; ?></title> В левый угол объединенной ячейки таблицы поместить рисунок images/bannerfo.gif и оформить его ввиде гиперссылки на главную страницу сайта index.php Если окно браузера загрузилось, то передать управление функции do_html_heading($title) if($title) do_html_heading($title) При помощи функции do_html_heading($title) вывести заголовок активного содержимого страницы <h2><?php echo $heading; ?></h2> При помощи функции do_html_footer() вывести завершающие HTML-дескрипторы создать сценарий db_fns.php, который реализует подключение к БД, в котором при помощи функции db_connect() изменить параметры подключения: имя пользователя – book_sc, пароль – password, имя хоста – localhost, БД – book_sc Добавить созданные сценарии в файл book_sc_fns.php require_once('db_fns.php'); require_once('output_fns.php'); Создать сценарий index.php, в котором в первой строке при помощи оператора reguire() загрузить библиотеку функций book_sc_fns.php Вызвать функцию do_html_header(), где в качестве параметра использовать строку 'Добро пожаловать в магазин ЛАБИРИНТ!' Напоследок вызвать функцию do_html_footer() для вывода Рис.1 нижнего коллонтитула. Результат загрузки файла представлен на рис. 1 Создать сценарий book_fns.php, в котором создать функцию get_categories() для поиска категорий книг в БД Осуществить подключение к БД при помощи вызова функции db_connect() Запросить в БД список категорий $query = 'select catid, catname from categories' Результат выполнения запроса передать функции db_result_to_array($result) $result = db_result_to_array($result); Внести изменения в файл db_fns.php, добавив в него функцию db_result_to_array($result), которая будет преобразовывать результат запроса к БД в массив результатов: function db_result_to_array($result) { $res_array = array(); for ($count = 0; $row=mysqli_fetch_assoc($result); $count++) $res_array[$count] = $row; return $res_array; } Внести изменения в файл output_fns.php, в который добавить функцию display_categories($cat_array), которая будет отображать массив категорий в виде списка ссылок на категории: Функция foreach() Синтаксис: function display_categories($cat_array) { if (!is_array($cat_array)) { echo 'В настоящий момент нет доступных категорий'; return; } foreach ($cat_array as $row) { $url = 'show_cat.php?catid='.($row['catid']); $title = $row['catname']; do_html_url($url, $title); }} В файл output_fns.php добавить также функцию do_html_URL($url, $name) для вывода URL и дескриптора новой строки <a href="<?php echo $url; ?>"><?php echo $name; ?></a><br /> 14. Внести изменения в файл index.php, добавив после вызова функции Извлечь категории книг из БД: $cat_array = get_categories() Отобразить категории в виде ссылок при помощи вызова функции display_categories($cat_array) Результат запуска файла index.php представлен на рис.2 foreach(array_expression as $value) statement Функция foreach() даёт простой способ итерирования по массиву. Внутренний указатель циклически проходит по массиву, заданному в array_expression. При каждом проходе значение текущего элемента присваивается переменной $value, а внутренний указатель массива передвигается на единицу (поэтому при следующем проходе вы просмотрите значение следующего элемента). рис.2 function db_result_to_array($result) { $res_array = array(); for ($count = 0; $row = $result->fetch_assoc(); $count++) $res_array[$count] = $row; return $res_array; }