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

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

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

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

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

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

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

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

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

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

В процесі побудови купівельної візки будуть реалізовані наступні модулі:

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

Побудова онлайн-каталогу товарів

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

Відстеження обраного товару

Загалом, можна реалізувати два методи відстеження товарів, які вибирають відвідувачі. Один з них - це приміщення обираних елементів в базу даних, другий - маніпулювання змінної сеансу. Використання змінної сеансу для відстеження обираних товарів набагато простіше в реалізації, тому що не використовує в своїй роботі постійного звернення до бази даних. Крім цього, такий підхід дозволяє уникати захаращення бази непотрібними даними в процесі роботи. Окремі відвідувачі можуть просто переглядати магазин, щось вибирати, але нічого не купувати. І якщо кожен раз їх дії будуть вносити зміни в базу даних, то процес стане надмірно накладним для реальної роботи. Тому розробка і маніпулювання змінними сеансу будуть найкращим вибором для вирішення цих питань. При цьому, коли користувач завершує відвідини магазину і виконує остаточний розрахунок, інформація буде міститися в БД у вигляді запису, яка реєструє транзакцію. Крім цього, ці дані можуть відображатися в якому - небудь зручному місці в браузері, для того щоб користувач міг бачити в будь-який момент часу суму для розрахунку по закупкам.

Платіжна система

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

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

Розробка інтерфейсу адміністрування

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

Підводячи підсумки сказаного

Таким чином, узагальнюючи, можна сказати, що автор статті зробить спробу побудови системи, що має два основних уявлення - призначене для користувача і адміністративне. Логіка користувальницької гілки полягає в тому, що клієнт спочатку відкриває головну сторінку, на якій перераховані всі категорії книг на сайті. Ця сторінка дає йому можливість перейти далі до певної категорії книг, а потім і до інформації по окремим, обраної книзі. Тут же буде представлена ​​можливість користувачу додати обрану книгу в візок. В рамках роботи з візком можна буде так само зробити остаточний розрахунок і покинути магазин, або повернутися на титульну сторінку.

Логіка адміністративної гілки полягає в тому, що вона дозволяє адміністратору входити в систему і додавати нові книги і категорії. При цьому, найпростіший спосіб реалізувати можливість редагування і видалення книг і категорій полягає в тому, щоб відобразити адміністратору відмінну від користувальницької версію сайту. У цьому випадку адміністратор повинен мати можливість переглядати категорії і книги, але замість доступу до купівельної візку він може переходити до певної книзі або категорії, а потім редагувати або видаляти її.

У цьому контексті потрібно мати можливість розробити хоча б частину сценаріїв, одночасно придатних для роботи як користувачів, так і адміністраторів. В цьому випадку, трьома китами, що утворюють основний кістяк системи, будуть каталог, купівельна візок + обробка замовлення і адміністрування сайту. Для цього потрібно буде створити набір бібліотек функцій так, щоб об'єднати фрагменти коду, що відповідають за виведення HTML вмісту і за логіку всіх інших подібних фрагментів тим самим, відокремлюючи логіку від вмісту. Такий підхід значно спростить створення і супровід коду.

Вид титульної сторінки сайту визначає скрипт:

<? Php require ( 'book_sc_fns.php'); // Для купівельної візки необхідно запустити сеанс session_start (); do_html_header ( 'Ради бачити Вас в магазині Книголюб!'); echo '<p> Будь ласка, виберіть категорію: </ p>'; // Витягти категорії з бази даних $ cat_array = get_categories (); // Показати у вигляді посилань на відповідні сторінки категорій display_categories ($ cat_array); // Якщо користувач увійшов в систему як адміністратор, вивести // посилання на додавання, видалення і редагування категорій if (isset ($ _ SESSION [ 'admin_user'])) {display_button ( 'admin.php', 'admin-menu', ' Меню адміністрування '); } Do_html_footer (); ?>

при цьому, сама сторінка буде відображатися так, як на рис. 1.

Малюнок 1.

Функції, що реалізують вид верхнього і нижнього колонтитула мають вигляд:

<? Php function do_html_header ($ title = '') {// Виводить HTML-заголовок // Оголосити змінні сеансу if (! $ _ SESSION [ 'items']) $ _SESSION [ 'items'] = '0'; if (! $ _ SESSION [ 'total_price']) $ _SESSION [ 'total_price'] = '0.00'; ?&gt; <Html> <head> <title> <? Php echo $ title; ?> </ Title> <style> h2 {font-family: Arial, Helvetica, sans-serif; font-size: 22px; color = red; margin = 6px} body {font-family: Arial, Helvetica, sans-serif; font-size: 13px} li, td {font-family: Arial, Helvetica, sans-serif; font-size: 13px} hr {color: # FF0000; width = 70%; text-align = center} a {color: # 000000} </ style> </ head> <body> <table width = '100%' border = 0 cellspacing = 0 bgcolor = '# cccccc'> <tr> <td rowspan = 2> <a href ='index.php'> <img src = 'images / Book-O-Rama.gif' alt = 'Магазин КНИГОЛЮБ' border = 0 align = 'left' valign = 'bottom' height = 55 width = 325> </a> </ td> <td align = 'right' valign = 'bottom'> <? php if (isset ($ _ SESSION [ 'admin_user'])) echo '& nbsp;'; else echo 'Всього книг ='. $ _ SESSION [ 'items']; ?&gt; </ Td> <td align = 'right' rowspan = 2 width = 135> <? Php if (isset ($ _ SESSION [ 'admin_user'])) display_button ( 'logout.php', 'log-out', 'Вихід'); else display_button ( 'show_cart.php', 'view-cart', 'Показати візок'); ?&gt; </ Tr> <tr> <td align = right valign = top> <? Php if (isset ($ _ SESSION [ 'admin_user'])) echo '& nbsp;'; else echo 'Загальна сума = $'. number_format ($ _ SESSION [ 'total_price'], 2); ?> </ Td> </ tr> </ table> <? Php if ($ title) do_html_heading ($ title); } Function do_html_footer () {// Виводить завершальні HTML-дескриптори?> </ Body> </ html> <? Php // Далі йде продовження коду з бібліотеки функцій}

Створення бази даних

для створення необхідної бази даних можна (маючи на руках код SQL) виконати наступну команду: mysql -u root -p <book_sc.sql, при цьому потрібно буде ввести пароль суперкористувача:

create database book_sc; use book_sc; create table customers (customerid int unsigned not null auto_increment primary key, name char (60) not null, address char (80) not null, city char (30) not null, state char (20), zip char (10), country char (20) not null); create table orders (orderid int unsigned not null auto_increment primary key, customerid int unsigned not null, amount float (6,2), date date not null, order_status char (10), ship_name char (60) not null, ship_address char (80 ) not null, ship_city char (30) not null, ship_state char (20), ship_zip char (10), ship_country char (20) not null); create table books (isbn char (13) not null primary key, author char (80), title char (100), catid int unsigned, price float (4,2) not null, description varchar (255)); create table categories (catid int unsigned not null auto_increment primary key, catname char (60) not null); create table order_items (orderid int unsigned not null, isbn char (13) not null, item_price float (4,2) not null, quantity tinyint unsigned not null, primary key (orderid, isbn)); create table admin (username char (16) not null primary key, password char (40) not null); grant select, insert, update, delete on book_sc. * to book_sc @ localhost identified by 'password';

При такій реалізації бази даних необхідно врахувати ряд вимог, які викликані доступом до бази даних в режимі онлайн. У базі повинно бути реалізовано:

  1. додаткові поля під адреси клієнтів;
  2. адреса доставки замовлення клієнта. Контактна адреса клієнта не завжди збігається з адресою доставки і це необхідно враховувати;
  3. таблиця категорій (categories), а в таблицю книг (books) додано поле ідентифікатора категорії (catid). При цьому, сортування книг по категоріях буде спрощувати перегляд сайту;
  4. в таблицю order_items додано поле items_price, яке зберігає ціну товару. Таким чином, враховується можливість зміни ціни товару. Але ціну товару необхідно знати на той момент, коли клієнт замовляє товар;
  5. таблиця admin для зберігання вхідного імені та пароля адміністратора;
  6. для кожної книги існує поле опису, що містить коротку анотацію;
  7. механізм зберігання на InnoDB змінений так, щоб можна було використовувати зовнішні ключі і транзакції;

Тестове наповнення бази допоможе зробити наступний SQL-код:

USE book_sc; INSERT INTO books VALUES ( '273567490', 'Alexander Derevianko,' PHP and MySQL Web Development ', 1,49.99,' PHP & MySQL Web Development teaches the reader to develop dynamic, secure e-commerce web sites. You will learn to integrate and implement these technologies by following real-world examples and working sample projects. '); INSERT INTO books VALUES ( '0672318040', 'Matt Zandstra', 'Sams Teach Yourself PHP4 in 24 Hours', 1,24.99, 'Consisting of 24 one-hour lessons, Sams Teach Yourself PHP4 in 24 Hours is divided into five sections that guide you through the language from the basics to the advanced functions. '); INSERT INTO books VALUES ( '0672319241', 'Sterling Hughes and Andrei Zmi', 'PHP Developer \' s Cookbook ', 1,39.99,' Provides a complete, solutions-oriented guide to the challenges most often faced by PHP developers \ r \ nWritten specifically for experienced Web developers, the book offers real-world solutions to real-world needs \ r \ n '); INSERT INTO categories VALUES (1, 'Internet'); INSERT INTO categories VALUES (2, 'Self-help'); INSERT INTO categories VALUES (5, 'Fiction'); INSERT INTO categories VALUES (4, 'Gardening'); INSERT INTO admin VALUES ( 'admin', 'admin');

Після цього, лицьова сторінка буде виглядати так, як на рис. 2.

Малюнок 2.

висновки

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

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

Схожі теми

  • Реальні проекти на 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 .

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

Com/developerworks/ru/library/?
Gt; <Html> <head> <title> <?
Php echo $ title; ?
SESSION [ 'items']; ?
Gt; </ Td> <td align = 'right' rowspan = 2 width = 135> <?
Gt; </ Tr> <tr> <td align = right valign = top> <?
Number_format ($ _ SESSION [ 'total_price'], 2); ?