Реальні проекти на PHP і MySQL. Основа інтернет-торгівлі - реалізація купівельної візки: Частина 2. Онлайн-каталог товарів з розбивкою за категоріями

  1. Серія контенту:
  2. Цей контент є частиною серії: Реальні проекти на PHP і MySQL. Основа інтернет-торгівлі - реалізація...
  3. Малюнок 1.
  4. Малюнок 2.
  5. Виведення списку книг для заданої категорії
  6. Сценарій, який показує інформацію про конкретну книжку
  7. висновки
  8. Ресурси для скачування

Реальні проекти на PHP і MySQL. Основа інтернет-торгівлі - реалізація купівельної візки

Серія контенту:

Цей контент є частиною # з серії # статей: Реальні проекти на PHP і MySQL. Основа інтернет-торгівлі - реалізація купівельної візки

https://www.ibm.com/developerworks/ru/library/?series_title_by=**auto**

Слідкуйте за виходом нових статей цієї серії.

Цей контент є частиною серії: Реальні проекти на PHP і MySQL. Основа інтернет-торгівлі - реалізація купівельної візки

Слідкуйте за виходом нових статей цієї серії.

В попередній статті були розглянуті основні технології по створенню бази даних під проект багатофункціонального динамічного веб-сайту з використанням PHP і MySQL. У цій статті, другий частини циклу, будуть розглянуті технології, що застосовуються для створення купівельного візка (shopping cart) або кошика для покупок (shopping basket) - а саме онлайн-каталог товарів з розбивкою його за категоріями.

В першій частині статті докладно розглянуто механізм побудови бази даних під проект і описаний титульний лист сайту. Наведено відповідний PHP і SQL код, який реалізує описувані частини проекту. Всі етапи розробки розбиті на 5 підкатегорій:

  1. база даних продукції для продажу в онлайн магазині;
  2. онлайн-каталог товарів з розбивкою за категоріями;
  3. купівельна візок, що дозволяє фіксувати товар, що відбирається замовником по мірі вивчення асортименту;
  4. головний розрахунковий сценарій, що обробляє деталі платежу і поставки відібраного товару;
  5. інтерфейс адміністрування проекту.

Розглянемо детально процес створення онлайн-каталогу. Після додавання в проект тестового наповнення бази даних (описувалося в 1 частини ) На головній сторінці сайту з'явився список категорій, вікно виклику купівельної візки в правому верхньому куті, а також інформація щодо вмісту візка (див. Рис. 1).

Малюнок 1.

При виборі користувачем однієї з категорій, відкривається відповідна сторінка, яка генерується наступним кодом:

<? Php require ( 'book_sc_fns.php'); // Для купівельної візки необхідно запустити сеанс session_start (); $ Catid = $ _GET [ 'catid']; $ Name = get_category_name ($ catid); do_html_header ($ name); // Витягти з бази даних інформацію про книгу $ book_array = get_books ($ catid); display_books ($ book_array); // Якщо користувач увійшов в систему як адміністратор, вивести // посилання на додавання і видалення посилань на книги if (isset ($ _ SESSION [ 'admin_user'])) {display_button ( 'index.php', 'continue', 'Продовжити покупки '); display_button ( 'admin.php', 'admin-menu', 'Меню адміністрування'); display_button ( "edit_category_form.php? catid = $ catid", 'edit-category', 'Редагувати категорію'); } Else display_button ( 'index.php', 'continue-shopping', 'Продовжити покупки'); do_html_footer (); ?>

При виборі однієї з категорій стає видно перелік книг з даної тематики і є можливість перегляду детальної інформації по кожній книзі - см. Рис. 2 і рис. 3.

Малюнок 2.
Малюнок 3.

Сценарій починається з включення файлу book_sc_fns.php, що містить всі бібліотеки функцій цього додатка. Для початку роботи потрібно починати розмови, який повинен працювати для нормального функціонування купівельного візка. При цьому, сеанс використовується кожною сторінкою сайту.

Функція get_categories () і display_categories () повертають масив категорій, що існують в системі, який потім передається в функцію display_categories ($ cat_array). Опис всіх функцій виходить за рамки даної статті, але код найважливіших функцій представлений нижче по тексту разом з описом їх роботи. Решта функцій добре прокоментовані і зрозумілі при найближчому розгляді.

function get_categories () {// Еапросіть в базі даних список категорій $ conn = db_connect (); $ Query = 'select catid, catname from categories'; $ Result = @ $ conn-> query ($ query); if (! $ result) return false; $ Num_cats = $ result-> num_rows; if ($ num_cats == 0) return false; $ Result = db_result_to_array ($ result); return $ result; }

Функція get_categories () підключається до бази даних і потім витягує звідти список складається з ідентифікаторів та імен категорій. Функція db_result_to_array ($ result) приймає ідентифікатор результату з MySQL і повертає масив рядків з числової індексацією, де кожен рядок являє собою асоціативний масив.

function db_result_to_array ($ result) {$ res_array = array (); for ($ count = 0; $ row = $ result-> fetch_assoc (); $ count ++) $ res_array [$ count] = $ row; return $ res_array; }

Потім цей масив повертається в сценарій index.php де передається в функцію display_categories ($ cat_array).

function display_categories ($ cat_array) {if (! is_array ($ cat_array)) {echo 'На даний момент немає доступних категорій <br />'; return; } Echo '<ul>'; foreach ($ cat_array as $ row) {$ url = 'show_cat.php? catid ='. ($ row [ 'catid']); $ Title = $ row [ 'catname']; echo '<li>'; do_html_url ($ url, $ title); echo '</ li>'; } Echo '</ ul>'; echo '<hr />'; }

Функція display_categories ($ cat_array) відображає масив категорій у вигляді списку посилань на категорії. При цьому вона перетворює кожну категорію бази даних на заслання. Причому, всі посилання передаються в наступний сценарій show.cat.php, при цьому кожна з них має свій власний параметр - ідентифікатор catid (це унікальне число, яке створене MySQL і служить для такої ідентифікації). Цей параметр і визначає, яка категорія повинна відображатися в кінцевому підсумку.

Виведення списку книг для заданої категорії

Даний сценарій, в загальному, аналогічний за логікою тих процесів, які були описані вище. Виведення списку здійснює код, представлений нижче:

&lt;? Php require ( 'book_sc_fns.php'); // Для купівельної візки необхідно запустити сеанс session_start (); $ Catid = $ _GET [ 'catid']; $ Name = get_category_name ($ catid); do_html_header ($ name); // Витягти з бази даних інформацію про книгу $ book_array = get_books ($ catid); display_books ($ book_array); // Якщо користувач увійшов в систему як адміністратор, вивести // посилання на додавання і видалення посилань на книги if (isset ($ _ SESSION [ 'admin_user'])) {display_button ( 'index.php', 'continue', 'Продовжити покупки '); display_button ( 'admin.php', 'admin-menu', 'Меню адміністрування'); display_button ( "edit_category_form.php? catid = $ catid", 'edit-category', 'Редагувати категорію'); } Else display_button ( 'index.php', 'continue-shopping', 'Продовжити покупки'); do_html_footer (); ?>

Спочатку запускається сеанс за допомогою функції session_start (), потім за допомогою функції get_category_name ($ catid) передається ідентифікатор категорії перетворюється в ім'я категорії.

unction get_category_name ($ catid) {// Запросити в базі даних ім'я категорії для даного ідентифікатора категорії $ catid = intval ($ catid); $ Conn = db_connect (); $ Query = "select catname from categories where catid = $ catid"; $ Result = $ conn-> query ($ query); if (! $ result) return false; $ Num_cats = $ result-> num_rows; if ($ num_cats == 0) return false; $ Row = $ result-> fetch_object (); return $ row-> catname; }

Бібліотека функцій, що відповідає за обробку логіки зберігання та вилучення даних про книгах, наведена нижче. Тут же представлена ​​описувана функція function get_books ($ catid).

&lt;? Php function calculate_shipping_cost () {// Оскільки доставка здійснюється по всьому світу // допомогою телепортірованія, вартість доставки фіксована return 20.00; } Function get_categories () {// Еапросіть в базі даних список категорій $ conn = db_connect (); $ Query = 'select catid, catname from categories'; $ Result = @ $ conn-> query ($ query); if (! $ result) return false; $ Num_cats = $ result-> num_rows; if ($ num_cats == 0) return false; $ Result = db_result_to_array ($ result); return $ result; } Function get_category_name ($ catid) {// Запросити в базі даних ім'я категорії для даного ідентифікатора категорії $ catid = intval ($ catid); $ Conn = db_connect (); $ Query = "select catname from categories where catid = $ catid"; $ Result = $ conn-> query ($ query); if (! $ result) return false; $ Num_cats = $ result-> num_rows; if ($ num_cats == 0) return false; $ Row = $ result-> fetch_object (); return $ row-> catname; } Function get_books ($ catid) {// Виконує запит до бази даних книг певної категорії if (! $ Catid || $ catid == '') return false; $ Conn = db_connect (); $ Query = "select * from books where catid = '$ catid'"; $ Result = @ $ conn-> query ($ query); if (! $ result) return false; $ Num_books = @ $ result-> num_rows; if ($ num_books == 0) return false; $ Result = db_result_to_array ($ result); return $ result; } Function get_book_details ($ isbn) {// Виконує запит до бази даних детальної інформації про книгу if (! $ Isbn || $ isbn == '') return false; $ Conn = db_connect (); $ Query = "select * from books where isbn = '$ isbn'"; $ Result = @ $ conn-> query ($ query); if (! $ result) return false; $ Result = @ $ result-> fetch_assoc (); return $ result; } Function calculate_price ($ cart) {// Обчислює загальну вартість всіх елементів візка $ price = 0,0; if (is_array ($ cart)) {$ conn = db_connect (); foreach ($ cart as $ isbn => $ qty) {$ query = "select price from books where isbn = '$ isbn'"; $ Result = $ conn-> query ($ query); if ($ result) {$ item = $ result-> fetch_object (); $ Item_price = $ item-> price; $ Price + = $ item_price * $ qty; }}} Return $ price; } Function calculate_items ($ cart) {// Підраховує загальну кількість елементів у візку $ items = 0; if (is_array ($ cart)) {$ items = array_sum ($ cart); } Return $ items; }?>

Обидві функції get_books () і display_books () схожі на їх практичні аналоги get_categories () і display_categories (). Основна відмінність між ними полягає в тому, що в разі використання цих функцій інформація витягується з таблиць книг, а не категорій. Функція display_books () створює посилання на кожну книгу даної категорії, використовуючи при цьому сценарій, що відображає книги певних категорій (було розглянуто вище). При цьому, як і раніше, кожна посилання супроводжується параметром у вигляді суфікса. Цей суфікс в цей раз є номер ISBN конкретної книги. В кінці фрагмента цього сценарію міститься код для відображення більшої кількості функціональних можливостей. Вони з'являються на сторінці в тому випадку, якщо в систему входить адміністратор і являють собою інструменти адміністрування - додавання і видалення книг, категорій і тд.

Функція display_books ($ book_array) має вигляд:

function display_books ($ book_array) {// Виводить всі книги, передані в масиві if (! is_array ($ book_array)) {echo '<br /> На даний момент немає доступних книг в цій категорії <br />'; } Else {// Створити таблицю echo '<table width = \ "100% \" border = 0>'; // Створити рядок таблиці для кожної книги foreach ($ book_array as $ row) {$ url = 'show_book.php? Isbn ='. ($ Row [ 'isbn']); echo '<tr> <td>'; if (@file_exists ( 'images /'.$ row [' isbn '].'. jpg ')) {$ title =' <img src = \ 'images /'.($ row [' isbn ']).' .jpg \ 'border = 0 />'; do_html_url ($ url, $ title); } Else {echo '& nbsp;'; } Echo '</ td> <td>'; $ Title = $ row [ 'title']. ' by '. $ row [' author ']; do_html_url ($ url, $ title); echo '</ td> </ tr>'; } Echo '</ table>'; } Echo '<hr />'; }

Сценарій, який показує інформацію про конкретну книжку

Сценарій, наведений нижче, в якості параметра приймає номер ISBN, після чого витягує і відображає детальні відомості про обраної книзі. Він теж дуже схожий на наведені раніше сценарії, що полегшує супровід і підтримку коду в цілому.

&lt;? Php require ( 'book_sc_fns.php'); // Для купівельної візки необхідно запустити сеанс session_start (); $ Isbn = $ _GET [ 'isbn']; // Витягти з бази даних інформацію про конкретну книжку $ book = get_book_details ($ isbn); do_html_header ($ book [ 'title']); display_book_details ($ book); // Установити url для кнопки "Продовжити" $ target = 'index.php'; if ($ book [ 'catid']) {$ target = 'show_cat.php? catid ='. $ book [ 'catid']; } // Якщо користувач увійшов в систему як адміністратор, вивести // посилання на редагування інформації про книгу if (check_admin_user ()) {display_button ( "edit_book_form.php? Isbn = $ isbn", 'edit-item', 'Редагувати елемент ); display_button ( 'admin.php', 'admin-menu', 'Меню адміністрування'); display_button ($ target, 'continue', 'Продовжити'); } Else {display_button ( "show_cart.php? New = $ isbn", 'add-to-cart', 'Додати'. $ Book [ 'title']. 'В мою візок'); display_button ($ target, 'continue-shopping', 'Продовжити покупки'); } Do_html_footer (); ?>

З самого початку, як і в інших сценаріях, запускається сеанс, а потім за допомогою рядка:

$ Book = get_book_details ($ book);

з бази даних витягується інформація про конкретну книжку. Для виведення даних в HTML форматі використовується наступна форма виклику:

display_book_details ($ book);

Функція display_book_details ($ book) виконує пошук файлу зображення для книги, ім'я якого виглядає як images / $ isbn.jpg. Якщо при цьому такого файлу немає, то зображення не виводиться взагалі. Інша частина сценарію встановлює засоби навігації по наявному функціоналу. Простому користувачеві пропонується використовувати кнопку "Continue Shopping" (продовжити покупки), яка повертає його на вихідну сторінку категорій. Крім цього, пропонується кнопка "Add to Cart" (додати в візок) для додавання книг в купівельну візок. У тому випадку, коли увійшов в систему користувач має права адміністратора, йому пропонується дещо інші, розширені опції для адміністрування.

висновки

У статті на реальних прикладах розглянуто питання реалізації онлайн-каталогу товарів під проект інтернет-магазину засобами PHP, MySQL і веб-сервера Apache. Детально розглянуто макет єдиної торгової системи, що дозволяє обслуговувати клієнтів в режимі онлайн.

Послідовно викладені механізми роботи скриптів, генеруючих стартову сторінку інтернет - магазину з категоріями і книгами, відсортованими за категоріями. Показана робота функцій, що підтримують описану логіку роботи скриптів. При цьому всі функції зібрані в відповідні бібліотеки, і їх робота наочно представлена ​​в IDE EasyEclipse для LAMP на наведених малюнках. Чітка організація коду і пояснення до нього дають можливість легко підтримувати працюють програми, видозмінювати їх і при необхідності, переносити на будь-які інші платформи.

Всі скрипти забезпечені коментарями і мають описову частину, достатню для швидкого засвоєння та подальшої адаптації до існуючих конкретних завдань.

Ресурси для скачування

Схожі теми

  • Реальні проекти на PHP і MySQL. Основа інтернет-торгівлі - реалізація купівельної візки. Частина 1 .
  • Реальні проекти на PHP і MySQL. Основа інтернет-торгівлі - реалізація купівельної візки. Частина 2 .
  • Реальні проекти на PHP і MySQL. Основа інтернет-торгівлі - реалізація купівельної візки. частина 3 .
  • Реальні проекти на PHP і MySQL. Основа інтернет-торгівлі - реалізація купівельної візки. частина 4 .
  • Реальні проекти на PHP і MySQL. Основа інтернет-торгівлі - реалізація купівельної візки. частина 5 .
  • Програмування з використанням PHP і MySQL в розробці Web-додатків. Частина 1 .
  • Програмування з використанням PHP і MySQL в розробці Web-додатків. Частина 2 .
  • Програмування з використанням PHP і MySQL в розробці Web-додатків. частина 3 .
  • Програмування з використанням PHP і MySQL в розробці Web-додатків. частина 4 .
  • Програмування з використанням PHP і MySQL в розробці Web-додатків. частина 5 .
  • Програмування з використанням PHP і MySQL в розробці Web-додатків. частина 6 .
  • Програмування з використанням PHP і MySQL в розробці Web-додатків. частина 7 .
  • Програмування з використанням PHP і MySQL в розробці Web-додатків. частина 8 .
  • Програмування з використанням PHP і MySQL в розробці Web-додатків. частина 9 .
  • Програмування з використанням PHP і MySQL в розробці Web-додатків. частина 10 .
  • Програмування з використанням PHP і MySQL в розробці Web-додатків. частина 11 .
  • Програмування з використанням PHP і MySQL в розробці Web-додатків. частина 12 .
  • Програмування з використанням PHP і MySQL в розробці Web-додатків. частина 13 .
  • Програмування з використанням PHP і MySQL в розробці Web-додатків. частина 14 .
  • Реальні веб-проекти на PHP і MySQL. Розробка диспетчера списків розсилки (ДСР). Частина 1 .
  • Реальні веб-проекти на PHP і MySQL. Розробка диспетчера списків розсилки (ДСР). Частина 2 .

Підпишіть мене на повідомлення до коментарів

Com/developerworks/ru/library/?
Php?
Lt;?
Php?
Lt;?
Php?