Інтернет-магазин комп’ютерної техніки Shop.ua "ІО.Electrical"

Розробка сайту інтернет-магазину комп’ютерної техніки. Структура об’єктів і зв’язків предметної області: головна, таблиці менеджерів, складу, інформація про товар, сторінки користувачів, покупців. Створення резервної копії бази даних, рhp програма.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 06.08.2013
Размер файла 3,4 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Національний технічний університет України

Київський політехнічний інститут

Кафедра автоматизованих систем обробки інформації і управління

КУРСОВА РОБОТА

З дисципліни

Організація баз даних та знань

Тема:

Інтернет-магазин комп'ютерної техніки Shop.ua "ІО.Electrical"

Виконав: Чабанов О.Р.

Група: ІС-03

Керівник: к.т.н., ст. викл.

Попенко В.Д.

Київ 2012

ЗАВДАННЯ

На курсову роботу по дисципліні "Організація баз даних та знань"

Фахове спрямування - "Інформаційні управляючі системи та технології"

Напрям 6.050101 "Комп'ютерні науки" Група ІС-03

Чабанов Олег Руслановіч

Тема курсової роботи: Інтернет магазин комп'ютерної техніки Shop.ua «ІО.Electrical»

  • ЗМІСТ
  • Постановка задачі
  • Вступ
  • Анотація
  • 1. Структура об'єктів і зв'язків предметної області
  • 2. Опис структури проекту
  • 3. Керівництво користувача
    • 3.1 Основна інформація
    • 3.2 Головна сторінка
    • 3.3 Сторінка з таблицею менеджерів
    • 3.4 Сторінка з таблицею товарів
    • 3.5 Сторінка з таблицею складу
    • 3.6 Сторінка користувачів сайту
    • 3.7 Сторінка покупців
    • 3.8 Сторінка попередніх замовлень
    • 3.9 Сторінка замовлень
    • 3.10 Сторінка зі списком товарів для покупки
    • 3.11 Сторінка з інформацією про товар
  • 4. Код MySQL
  • 5. Створення резервної копії бази даних
  • Висновок
  • Використана література
  • Додаток: Сторінки рhp програми де використовуються SQL запити

ПОСТАНОВКА ЗАДАЧІ

Є інтернет-магазин зі своїм складом товару. В інтернет-магазині користувачі мережі “Інтернет” можуть вибрати товар, отримати про нього необхідну інформацію та замовити, менеджер магазину належним чином обробити замовлення, а адміністратор сайту обновлювати та доповнювати дані про товари.

Замовлення відбувається в такій послідовності:

- Користувач заповнює необхідну інформацію для заказу товару (ПІБ, номер телефону, адресу доставки), дані обробляються як передзамовлення

- Менеджер сайту по введеній інформації зв'язується з клієнтом (для утвердження покупки та оплати) після цього оформлює замовлення

- При скасування замовлення менеджер видаляє передзамовлення.

- Товар відправляється зі складу по вказаній адресі клієнта.

ВСТУП

Мета створення

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

Призначення системи

Система призначена для:

- Надання можливості зручного пошуку, отримання інформації та замовлення товарів за допомогою мережі “Інтернет”;

- Автоматизації роботи менеджера по обробці замовлень.

- Надання адміністратору зручної можливості оперування даними товарів.

Вимоги до програми

· Інтуїтивно зрозумілий інтерфейс користувача

· Використання запитів.

· Використання виключних ситуацій з боку сервера (також власних)

· Використання процедур (тригерів)

Програмне забезпечення має працювати з наступними таблицями:

· Покупці

· Менеджери

· Товари

· Склад

· Попередні замовлення

· Замовлення

· Користувачі сайту

Необхідно реалізувати наступні функції:

· Додавання інформації

· Коригування даних

· Видалення даних

· Автоматичного оброблення та зміни даних

· Виведення даних в різноманітних формах

· Інші функції для покращення роботи.

Для розробки програмного забезпечення необхідно використовувати наступні засоби:

· Гіпертекстовий процесор php версії 5.3 та вище.

· HTTP сервер Apache або аналогічний сервер.

· Веб браузер (напр. Google Chrome).

· СУБД mysql версії 5.5.

· IDE для взаємодії з mysql (напр. phpMyAdmin).

Програмно-технічні засоби

Вимоги до апаратного забезпечення:

· Процесор з частотою не менше 1 GHz

· Оперативна пам'ять 512 Мб

· Клавіатура

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

· ОС.

· Веб браузер (напр. Google Chrome).

Зі сторони сервера:

· ОС лінійки Windows або Linux.

· Гіпертекстовий процесор php версії 5.3 та вище.

· HTTP сервер Apache або аналогічний сервер.

· СУБД mysql.

АНОТАЦІЯ

Розглянутий програмний продукт призначений для реалізації покупок через мережу “Інтернет” Він має ряд можливостей для досягнення цієї цілі.

Можна відмітити наступний ряд особливостей:

· Наявність зручного та зрозумілого інтерфейсу

· Дизайнерське оформлення сайту

· Реалізована можливість реєстрації та входу під своїм обліковим записом

· Надання різних можливостей різним групам користувачів

· Наявність пошуку товарів по частині назви

· Зручна навігація по сайту

· Перегляд даних про товар у зручному форматі

· Автоматизація редагування даних

· Вивід повідомлень про некоректність введених даних

· Весь інтерфейс українською мовою(включаючи повідомлення про помилки)

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

Наявні процедури для автоматичного підрахунку рейтингу менеджера та обнуління його статистики успішності продаж.

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

1. Структура об'єктів і зв'язків предметної області

Структура бази даних представлена на схемі 1.1. Представлена у вигляді ER-діаграми.

Схема 1.1 На представленій схемі ER діаграма

2. Опис структури проекту

Структура проекту зображена на рисунку 2.1

Рисунок 2.1

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

Бізнес логіка розділена на 3 частини: клієнтська, менеджерська та адміністраторська взаємодія з програмою. Клієнт може реєструватись, логінитись, шукати товар за частиною його назви, переглядати інформацію про товар, його ціну і наявність на складі та замовляти товар. Менеджер може в явному вигляді редагувати такі таблиці як: покупці, предзамовлення, замовлення, всі інші таблиці він може лише переглядати. Адміністратор може редагувати наступні таблиці: менеджерів, продуктів, складу, користувачів сайту, всі інші лише переглядати.

3. Керівництво користувача

3.1 Основна інформація

Реалізований програмний продукт назначений для замовлення товарів через Інтернет та обробку замовлень. В зв'язку з цим реалізований зручний користувацький інтерфейс та наступні можливості:

Для користувача:

· Вивід необхідної інформації про товар у зручному вигляді.

· Шукати товар за частиною назви. Якщо знайдено декілька відповідних товарів - то всі вони виводяться на вибір покупця.

· Реєстрація та вхід в систему для того, щоб при кожному замовлені повторно не вводити особисту інформацію.

Для менеджерів:

· По натиску на кнопку додати особисту інформацію користувача з таблиці передзамовлень до таблиці користувачів.

· По натиску на кнопку редагувати інформацію користувача відповідно до інформація в таблиці передзамовлень.

· По натиску на кнопку перенести запис із таблиці передзамовлень до таблиці замовлень, причому код менеджера, який натисніть на кнопку буде автоматично додано в таблицю.

· Автоматично збільшити кількість вдалих або невдалих угод менеджера при оплаті або відмові від оплати товару відповідно.

Для адміністратора сайту:

· По натиску на кнопку розрахувати рейтинг менеджера відповідно до його вдалих та невдалих угод.

· По натиску на кнопку обнулити статистику угод менеджера.

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

3.2 Головна сторінка

Зовнішній вид головної сторінки для користувача, який не увійшов в систему, представлений на рис. 3.2.1.

Рисунок 3.2.1

Дана сторінка містить назву магазину, його логотип форму для пошуку, форму для логіну, посилання на сторінку реєстрації та список класів і видів товарів у вигляді гіперпосилань на сторінку з відповідними товарами .

Якщо увійшов адміністратор сайту то головна сторінка прийме вигляд представлений на рис. 3.2.2

Рисунок 3.2.2

Після натискання на кнопку “Сторінка адміністратора” відбудеться перехід на сторінку вибору таблиці представленої на рис 3.2.3.

Рисунок 3.2.3

3.3 Сторінка з таблицею менеджерів

Дана сторінка назначена для перегляду та редагуванню інформації про менеджерів.

Зовнішній вид сторінки представлений на рис 3.3.1.

Рисунок 3.3.1

Для додавання нового менеджера достатньо натиснути на кнопку “Додати рядок” після чого з'явиться форма в яку необхідно ввести логін, пароль, та прізвище менеджера. Логін та пароль будуть зберігатись у таблиці користувачів, а фамілія попаде в таблицю менеджерів. При натиску на кнопку “Редагувати” значення в полях відповідного рядка можна буде змінювати. Після натиску на кнопку “Підтвердити” інформація в базі буде оновлена. Для видалення відповідного рядку достатньо натиснути на кнопку “Видалити”. Для розрахунку рейтингу усіх менеджерів треба натиснути на кнопку “Розрахувати рейтинг”. Для обнуління статистики вдалих та невдалих угод натиснути на кнопку “Обнулити рейтинг”.

3.4 Сторінка з таблицею товарів

Дана сторінка представлена на рис. 3.4.1. Вона містить поле з картинкою товару та поля з прокруткою для перегляду значних за об'ємом текстових даних.

Рисунок 3.4.1

Присутня кнопка “Додати на склад”, після натиску на яку товар буде автоматично занесений в таблицю складу. При додаванні нового рядка адміністратору відкривається форма представлена на рис. 3.4.2.

Рисунок 3.4.2

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

3.5 Сторінка з таблицею складу

Дана сторінка представлена на рис. 3.5.1 Вона містить кнопки редагування та видалення. Кнопка додавання записів відсутня, оскільки воно відбувається автоматично з таблиці товарів.

Рисунок 3.5.1

3.6 Сторінка користувачів сайту

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

Рисунок 3.6.1

3.7 Сторінка покупців

Зовнішній вигляд сторінки представлений на рис. 3.7.1. Менеджер має можливість додавати, редагувати та видаляти записи.

3.8 Сторінка попередніх замовлень

Вигляд сторінки представлений на рис. 3.8.1 Вона містить крім стандартних кнопок редагування, ще кнопки “Додати до покупців”,“Редагувати покупця” та “Додати до замовлень”.

Рисунок 3.7.1

Рисунок 3.8.1

Кнопка “Додати до покупців” доступна, якщо відсутній код покупця, тобто інформації про покупця немає у відповідній таблиці. Після натиску на неї особисті дані будуть передані в таблицю покупців, де створиться новий запис.

Кнопка “Редагувати покупця” служить для того щоб редагувати дані покупця у відповідній таблиці, опираючись на інформацію з попереднього замовлення.

Кнопка “Додати до замовлень” переносить необхідну інформацію у таблицю замовлень, включаючи код менеджера, який натиснув на кнопку та видаляє запис із попередніх замовлень.

3.9 Сторінка замовлень

Дана сторінка містить інформацію про замовлення та кнопки редагування і видалення записів. Вона представлена на рис 3.9.1

Рисунок 3.9.1

В цій таблиці також відображається ціна замовлення, яка розраховується як ціна товару помножена на замовлену кількість. Перед тим як змінити статус оплати, необхідно вказати, що товар відправлений, ввівши у відповідне поле 1. Статус оплати може бути або “credit”, або “cash”, або “canceled”. При введенні одного з двох перших значень, кількість успішних угод менеджера автоматично збільшується, а останнього - кількість невдалих угод.

3.10 Сторінка зі списком товарів для покупки

Дана сторінка представлена на рис. 3.10.1.

Рисунок 3.10.1

Вона містить список товарів у зручній для покупця формі, де вказані код товару, назва, картинка, короткий опис, наявність на складі та ціна. У лівій частині відображений список фірм, по натиску на якусь із них відбудеться фільтрований по цій фірмі вивід товарів. Також присутня кнопка купити, після натиску на яку відкривається сторінка з формою для введення особистих даних користувача, яка представлена на рис. 3.10.2.

Рисунок 3.10.2

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

3.11 Сторінка з інформацією про товар

Дана сторінка представлена на рис. 3.11.1. Вона додатково містить блок для виводу додаткових даних про товар, таку як повний опис або характеристику товару, та кнопки для вибору яку саме інформацію виводити.

Рисунок 3.11.1

4. Код MySQL

//#Створення бази даних інтернет магазину.

//#Створення бази даних інтернет магазину.

CREATE DATABASE internet_shop DEFAULT CHARACTER SET utf8

COLLATE utf8_general_ci;

//#Створення користувачів різних типів магазину.

CREATE USER 'shop_admin'@'%' IDENTIFIED BY 'administrator';

CREATE USER 'guest'@'%' IDENTIFIED BY 'g';

CREATE USER 'user'@'%' IDENTIFIED BY 'u';

CREATE USER 'maneger'@'%' IDENTIFIED BY 'm';

//#Надання користувачам прав на базу даних інтернет магазину.

GRANT ALL PRIVILEGES ON internet_shop.* TO 'shop_admin'@'%'

WITH GRANT OPTION;

GRANT INSERT,SELECT ON internet_shop.user TO 'guest'@'%';

GRANT INSERT,SELECT ON internet_shop.customer TO 'guest'@'%';

GRANT SELECT ON internet_shop.product TO 'guest'@'%';

GRANT SELECT ON internet_shop.storage_item TO 'guest'@'%';

GRANT INSERT ON internet_shop.preorder TO 'guest'@'%';

GRANT SELECT ON internet_shop.user TO 'user'@'%';

GRANT INSERT ON internet_shop.preorder TO 'user'@'%';

GRANT SELECT ON internet_shop.customer TO 'user'@'%';

GRANT SELECT ON internet_shop.storage_item TO 'user'@'%';

GRANT SELECT ON internet_shop.product TO 'user'@'%';

GRANT SELECT ON internet_shop.product TO 'maneger'@'%';

GRANT SELECT ON internet_shop.storage_item TO 'maneger'@'%';

GRANT SELECT ON internet_shop.maneger TO 'maneger'@'%';

GRANT SELECT,INSERT,UPDATE,DELETE ON internet_shop.customer

TO 'maneger'@'%';

GRANT SELECT,INSERT,UPDATE,DELETE ON internet_shop.order TO

'maneger'@'%';

GRANT SELECT,INSERT,UPDATE,DELETE ON internet_shop.preorder

TO 'maneger'@'%';

GRANT EXECUTE ON *.* TO 'maneger'@'%';

//#Створення таблиці покупців

CREATE TABLE internet_shop.customer (

customer_id INT(5) AUTO_INCREMENT,

lastname VARCHAR(50) CHARACTER SET utf8 COLLATE

utf8_general_ci NOT NULL,

`name` VARCHAR(50) CHARACTER SET utf8 COLLATE

utf8_general_ci NOT NULL,

contact_phone VARCHAR(20) CHARACTER SET utf8 COLLATE

utf8_general_ci NOT NULL,

adress VARCHAR(50) CHARACTER SET utf8 COLLATE utf8_general_ci

NOT NULL,

PRIMARY KEY(customer_id)

) ENGINE = INNODB CHARACTER SET utf8 COLLATE

utf8_general_ci;

//#Створення індексу для таблиці покупців на поле прізвище покупця.

CREATE INDEX cus_fullname_index ON

internet_shop.customer(lastname,`name`);

//#Створення таблиці менеджерів

CREATE TABLE internet_shop.maneger (

maneger_id INT(5) AUTO_INCREMENT,

fullname VARCHAR(50) CHARACTER SET utf8 COLLATE

utf8_general_ci NOT NULL,

succes_orders INT(5) DEFAULT 0,

canceled_orders INT(5) DEFAULT 0,

rate INT(3) DEFAULT 0,

PRIMARY KEY(maneger_id)

) ENGINE = INNODB CHARACTER SET utf8 COLLATE

utf8_general_ci;

//#Створення таблиці товарів. Ієрархічна таблиця, де первинний батько

- клас товару, далі вид товару, фірма виробник і кінцевий нащодок -

назва самого товару.

//#Наприклад: Комп'ютери - ноутбуки - Asus - Eee PC 1011PX-

VLK018W.

CREATE TABLE internet_shop.product(

product_id INT(5) AUTO_INCREMENT,

father_id INT(5),

title VARCHAR(50) CHARACTER SET utf8 COLLATE utf8_general_ci

NOT NULL,

picture BLOB,

small_description TINYTEXT CHARACTER SET utf8 COLLATE

utf8_general_ci,

full_description TEXT CHARACTER SET utf8 COLLATE

utf8_general_ci,

characteristic TEXT CHARACTER SET utf8 COLLATE utf8_general_ci,

PRIMARY KEY(product_id)

) ENGINE = INNODB CHARACTER SET utf8 COLLATE

utf8_general_ci;

//#Створення індексу для таблиці товарів на поле назву товару.

CREATE INDEX product_title_index ON internet_shop.product(title);

//#Створення таблиці складу для збереження товарів на складі та їх

кількості

CREATE TABLE internet_shop.storage_item(

storage_item_id INT(5) AUTO_INCREMENT,

product_id INT(5),

arrival_date DATE,

product_number int(3),

price FLOAT,

PRIMARY KEY(storage_item_id),

FOREIGN KEY (product_id) REFERENCES

internet_shop.product(product_id)

) ENGINE = INNODB CHARACTER SET utf8 COLLATE

utf8_general_ci;

//#Таблиця попередніх замовлень

CREATE TABLE internet_shop.preorder(

preorder_id INT(5) AUTO_INCREMENT,

customer_id INT(5),

lastname VARCHAR(50) CHARACTER SET utf8 COLLATE

utf8_general_ci NOT NULL,

`name` VARCHAR(50) CHARACTER SET utf8 COLLATE

utf8_general_ci NOT NULL,

contact_phone VARCHAR(20) CHARACTER SET utf8 COLLATE

utf8_general_ci NOT NULL,

adress VARCHAR(50) CHARACTER SET utf8 COLLATE utf8_general_ci

NOT NULL,

storage_item_id INT(5),

product_number INT(5) DEFAULT 1,

PRIMARY KEY(preorder_id),

FOREIGN KEY (storage_item_id) REFERENCES

internet_shop.storage_item(storage_item_id)

) ENGINE = INNODB CHARACTER SET utf8 COLLATE

utf8_general_ci;

//#Таблиця замовлень.

CREATE TABLE internet_shop.order(

order_id INT(5) AUTO_INCREMENT,

storage_item_id INT(5),

maneger_id INT(5),

customer_id INT(5),

sent TINYINT(1) DEFAULT 0,

product_number INT(5) DEFAULT 1,

payment VARCHAR(8) CHARACTER SET utf8 COLLATE

utf8_general_ci,

price FLOAT,

PRIMARY KEY(order_id),

FOREIGN KEY (storage_item_id) REFERENCES

internet_shop.storage_item(storage_item_id),

FOREIGN KEY (maneger_id) REFERENCES

internet_shop.maneger(maneger_id),

FOREIGN KEY (customer_id) REFERENCES

internet_shop.customer(customer_id)

) ENGINE = INNODB CHARACTER SET utf8 COLLATE

utf8_general_ci;

//#Таблиця логінів та паролей користувачів

CREATE TABLE internet_shop.user(

user_id INT(5),

login VARCHAR(50) CHARACTER SET utf8 COLLATE utf8_general_ci

NOT NULL,

password VARCHAR(50) CHARACTER SET utf8 COLLATE

utf8_general_ci NOT NULL,

status VARCHAR(10) CHARACTER SET utf8 COLLATE utf8_general_ci

NOT NULL

) ENGINE = INNODB CHARACTER SET utf8 COLLATE

utf8_general_ci;

#Процедура для наступної функції (динамічні твердження не

дозволяються у функціях та триггерах).

CREATE PROCEDURE(IN login_var VARCHAR(50), OUT )

#Функція для перевірки наявності запису з вказаним логіном в таблиці

користувачів

DELIMITER //

CREATE FUNCTION internet_shop.check_login(login_var

VARCHAR(50)) RETURNS TINYINT(1)

BEGIN

DECLARE existence TINYINT(1);

SET @login_var = login_var;

SET @s = 'SELECT customer_id INTO ? WHERE EXIST(SELECT user_id

FROM internet_shop.user WHERE login=?)';

PREPARE stmt FROM @s;

EXECUTE stmt USING @existence,@login_var;

SET existence = @existence;

RETURN existence;

END//

DELIMITER ;

//#Процедура додавання нового менеджера з обробкою виключення

щодо пустого поля імені

DROP PROCEDURE internet_shop.add_maneger;

DELIMITER //

CREATE PROCEDURE internet_shop.add_maneger(IN name

VARCHAR(50))

BEGIN

DECLARE EXIT HANDLER FOR SQLEXCEPTION

BEGIN

SET @message = 'Пусте поле імені!';

END;

INSERT INTO internet_shop.maneger(fullname) VALUES (name);

SET @message = 'Процедура виконалась успішно.';

END//

DELIMITER ;

CALL internet_shop.add_maneger(NULL);

SELECT @message;

//#Процедура для реалізації наступного тригеру для INSERT та

UPDATE.

DROP PROCEDURE internet_shop.father_field_procedure;

DELIMITER //

CREATE PROCEDURE internet_shop.father_field_procedure(IN

new_father_id INT(5))

BEGIN

DECLARE some_product_number INT(5);

DECLARE no_parrent CONDITION FOR SQLSTATE '23000';

DECLARE existence TINYINT(1) DEFAULT 0;

DECLARE id INT(5);

DECLARE done INT DEFAULT 0;

DECLARE ids CURSOR FOR SELECT product_id FROM

internet_shop.product;

DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done =

1;

DECLARE EXIT HANDLER FOR no_parrent

BEGIN

SIGNAL SQLSTATE '42000' SET MESSAGE_TEXT = 'Відсутній клас

товару з вказаним кодом!';

END;

IF new_father_id != 0 THEN

OPEN ids;

REPEAT

FETCH ids INTO id;

IF id = new_father_id THEN

SET existence = 1;

END IF;

UNTIL done END REPEAT;

CLOSE ids;

ELSE

SET existence = 1;

END IF;

IF existence = 0 THEN

SIGNAL no_parrent;

END IF;

END//

DELIMITER ;

#//Тринер для перевірки батьківського поля у таблиці товарів, при

додаванні чи зміні запису

DROP TRIGGER internet_shop.father_field_trigger;

DELIMITER //

CREATE TRIGGER internet_shop.father_field_trigger_ins BEFORE

INSERT ON internet_shop.product

FOR EACH ROW

BEGIN

CALL internet_shop.father_field_procedure(new.father_id);

END//

DELIMITER ;

DELIMITER //

CREATE TRIGGER internet_shop.father_field_trigger_upd BEFORE UPDATE ON internet_shop.product

FOR EACH ROW

BEGIN

CALL internet_shop.father_field_procedure(new.father_id);

END//

DELIMITER ;

INSERT INTO internet_shop.product(father_id,title) values(15,'asdfg');

SELECT * FROM log;

#Тригер для перевірки правильного встановлення віх значень в полях таблиці замовлень до оновлення

#ISNULL(var) ~ var IS NULL

INSERT INTO internet_shop.orders(storage_item_id,maneger_id,customer_id,sent,price) VALUES(1,1,1,1,30);

INSERT INTO internet_shop.orders(storage_item_id,customer_id,sent,price) VALUES(2,2,2,10);

UPDATE internet_shop.orders SET payment = 'cash' WHERE order_id = 1;

UPDATE internet_shop.orders SET payment = 'canceled' WHERE order_id = 2;

UPDATE internet_shop.orders SET price = 40, maneger_id = 2 WHERE order_id = 2;

DROP TRIGGER internet_shop.check_order_trigger;

DELIMITER //

CREATE TRIGGER internet_shop.check_order_trigger BEFORE UPDATE ON internet_shop.order

FOR EACH ROW

BEGIN

DECLARE correct INT(2) DEFAULT 0;

IF STRCMP(new.payment,old.payment) != 0 THEN

IF ISNULL(old.order_id) THEN

SET correct = 1;

ELSEIF ISNULL(old.storage_item_id) THEN

SET correct = 2;

ELSEIF ISNULL(old.maneger_id) THEN

SET correct = 3;

ELSEIF ISNULL(old.customer_id) THEN

SET correct = 4;

ELSEIF ISNULL(old.sent) AND old.sent=0 THEN

SET correct = 5;

ELSEIF ISNULL(old.product_number) AND old.product_number<1 THEN

SET correct = 6;

ELSEIF ISNULL(old.price) AND old.price<1 THEN

SET correct = 7;

END IF;

CASE correct

WHEN 1 THEN SIGNAL SQLSTATE '42000' SET MESSAGE_TEXT = 'Введіть дані в поле коду корзини покупця!';

WHEN 2 THEN SIGNAL SQLSTATE '42000' SET MESSAGE_TEXT = 'Введіть дані в поле коду товару!';

WHEN 3 THEN SIGNAL SQLSTATE '42000' SET MESSAGE_TEXT = 'Введіть дані в поле коду менеджера!';

WHEN 4 THEN SIGNAL SQLSTATE '42000' SET MESSAGE_TEXT = 'Введіть дані в поле коду покупця!';

WHEN 5 THEN SIGNAL SQLSTATE '42000' SET MESSAGE_TEXT = 'Для встановлення оплати товар має дути надісланим!';

WHEN 6 THEN SIGNAL SQLSTATE '42000' SET MESSAGE_TEXT = 'Введіть кількість товарів, яка має бути більшою за 1!';

WHEN 7 THEN SIGNAL SQLSTATE '42000' SET MESSAGE_TEXT = 'Введіть коректну ціну!';

ELSE SET @message="Оновлення інформації виконалось успішно.";

END CASE;

END IF;

END//

DELIMITER ;

#Тригер для підвищення кількості вдалих або ні угод менеджера та зменшення кількості товарів на складі після покупки

DROP TRIGGER internet_shop.maneger_deals_trigger;

DELIMITER //

CREATE TRIGGER internet_shop.maneger_deals_trigger AFTER UPDATE ON internet_shop.order

FOR EACH ROW

BEGIN

DECLARE correct TINYINT(1) DEFAULT 0;

IF new.payment IS NOT NULL THEN

IF STRCMP(new.payment,'cash') = 0 OR STRCMP(new.payment,'credit') = 0 THEN

UPDATE internet_shop.maneger SET succes_orders = succes_orders + 1 WHERE maneger_id=new.maneger_id;

UPDATE internet_shop.storage_item SET product_number=new.product_number WHERE storage_item_id=new.storage_item_id;

ELSEIF STRCMP(new.payment,'canceled') = 0 THEN

UPDATE internet_shop.maneger SET canceled_orders = canceled_orders + 1 WHERE maneger_id=new.maneger_id;

ELSE

SET correct = 1;

END IF;

END IF;

IF correct = 1 THEN

SET @message = 'Введене значення в поле платні некоректне!';

END IF;

END//

DELIMITER ;

#Тригер для розрахування вартості товару

DROP TRIGGER internet_shop.price_count;

DELIMITER //

CREATE TRIGGER internet_shop.price_count BEFORE INSERT ON internet_shop.order

FOR EACH ROW

BEGIN

DECLARE price_var INT(5);

DECLARE product_number_var INT(5);

SELECT price, product_number INTO price_var, product_number_var FROM internet_shop.storage_item WHERE storage_item_id = new.storage_item_id;

SET new.price = price_var*product_number_var;

END//

DELIMITER ;

#Процедура для автоматичного додавання користувача.

DROP PROCEDURE internet_shop.auto_add_customer;

DELIMITER //

CREATE PROCEDURE internet_shop.auto_add_customer(IN lastname_var VARCHAR(50), IN name_var VARCHAR(50), IN contact_phone_var INT(10), adress_var VARCHAR(50))

BEGIN

SET @s = 'INSERT INTO internet_shop.customer(lastname,`name`,contact_phone,adress) values(?,?,?,?)';

PREPARE stmt FROM @s;

SET @lastname_var = lastname_var;

SET @name_var = name_var;

SET @contact_phone_var = contact_phone_var;

SET @adress_var = adress_var;

EXECUTE stmt USING @lastname_var,@name_var,@contact_phone_var,@adress_var;

END//

DELIMITER ;

CALL internet_shop.auto_add_customer('Івічук','Семен','вул. Артема 7 кв.15',0445456784);

#Процедура для автоматичного оновлення даних користувача.

DROP PROCEDURE internet_shop.auto_update_customer;

DELIMITER //

CREATE PROCEDURE internet_shop.auto_update_customer(IN customer_id_var INT(5),IN lastname_var VARCHAR(50), IN name_var VARCHAR(50), IN contact_phone_var INT(10), adress_var VARCHAR(50))

BEGIN

SET @s = 'UPDATE internet_shop.customer SET lastname = ?,`name`=?,contact_phone = ?,adress = ? WHERE customer_id = ?';

PREPARE stmt FROM @s;

SET @lastname_var = lastname_var;

SET @name_var = name_var;

SET @contact_phone_var = contact_phone_var;

SET @adress_var = adress_var;

SET @customer_id_var = customer_id_var;

EXECUTE stmt USING @lastname_var,@name_var,@contact_phone_var,@adress_var,@customer_id_var;

END//

DELIMITER ;

CALL internet_shop.auto_update_customer(2,'Smith','John',888888,'work');

#Процедура для автоматичного додавання замовлень.

DROP PROCEDURE internet_shop.auto_add_order;

DELIMITER //

CREATE PROCEDURE internet_shop.auto_add_order(IN maneger_id_var INT(5),IN customer_id_var INT(5), IN storage_item_id_var INT(5), IN product_number_var INT(5))

BEGIN

SET @s = 'INSERT INTO internet_shop.order(maneger_id,customer_id, storage_item_id,product_number) values(?,?,?,?)';

PREPARE stmt FROM @s;

SET @maneger_id_var = maneger_id_var;

SET @customer_id_var = customer_id_var;

SET @storage_item_id_var = storage_item_id_var;

SET @product_number_var = product_number_var;

EXECUTE stmt USING @maneger_id_var,@customer_id_var,@storage_item_id_var,@product_number_var;

END//

DELIMITER ;

#Функція для підрахунку рейтингу за кількістю вдалих та невдалих угод.

DELIMITER //

CREATE FUNCTION count_rate(succes INT(5),canceled INT(5),avg_succes INT(5),avg_canceled INT(5))

RETURNS INT(5)

DETERMINISTIC

BEGIN

DECLARE rate INT(5);

SET rate = succes - avg_succes - canceled + avg_canceled;

RETURN rate;

END//

DELIMITER ;

#Процедура для автоматичного розрахунку рейтингу менеджера.

DROP PROCEDURE internet_shop.auto_maneger_rate;

DELIMITER //

CREATE PROCEDURE internet_shop.auto_maneger_rate()

BEGIN

DECLARE rate INT(5);

DECLARE avg_succes INT(5);

DECLARE avg_canceled INT(5);

DECLARE id INT(5);

DECLARE succes INT(5);

DECLARE canceled INT(5);

DECLARE done INT DEFAULT 0;

DECLARE meneg CURSOR FOR SELECT maneger_id,2*succes_orders,2*canceled_orders FROM internet_shop.maneger;

DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;

SET @s = 'UPDATE internet_shop.maneger SET rate = ? WHERE maneger_id = ?';

PREPARE stmt FROM @s;

SELECT AVG(succes_orders) INTO avg_succes FROM internet_shop.maneger;

SELECT AVG(canceled_orders) INTO avg_canceled FROM internet_shop.maneger;

OPEN meneg;

REPEAT

FETCH meneg INTO id,succes,canceled;

SELECT count_rate(succes,canceled,avg_succes,avg_canceled) INTO rate;

SET @rate = rate;

SET @id = id;

EXECUTE stmt USING @rate,@id;

UNTIL done END REPEAT;

CLOSE meneg;

END//

DELIMITER ;

CALL internet_shop.auto_maneger_rate();

#Процедура обнулення вдалих та невдалиг угод менеджера

DELIMITER //

CREATE PROCEDURE internet_shop.auto_null_deals()

BEGIN

UPDATE internet_shop.maneger SET succes_orders = 0, canceled_orders = 0;

END//

DELIMITER ;

CALL internet_shop.auto_null_deals();

5. Створення резервної копії бази даних

5.1 За допомогою phpmyadmin

Входимо в phpMyAdmin. У вікні, ви побачите свої бази даних.

Натискаємо кнопку «експорт».

У наступному вікні внизу сторінки вибираємо вид архіву, натискаємо ОК, і вказуємо, куди зберегти архів.

5.2 Резервне копіювання бази даних за допомогою плагіна WordPress Database Backup

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

Інструменти - Архівація бази даних і налаштуйте заплановану архівацію. Резервні копії бази даних будуть приходити на зазначений e-mail.

ВИСНОВОК

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

· Перегляд інформації про товари у зручній формі та використання пошуку і фільтрів

· Автоматизована обробка запитів від покупців

· Автоматизоване адміністрування сайту

· Розрахунок рейтингу менеджерів

В програмі присутні тригери, процедури та функції для автоматизації роботи. Також наявні динамічні SQL і різноманітні виключні ситуації і їх обробники. Хоча MySQL не містить ієрархічних запитів, проте присутня ієрархічна таблиця та функції і вибірки, які можуть реалізувати роботу з даною таблицею в необхідній мірі. Також наявна робота з транзакціями. Відповідно можна стверджувати, що дана програма в достатній мірі реалізує можливість замовлення товарів та обробку замовлень через мережу “Інтернет”.

база даний інтернет магазин

ВИКОРИСТАНА ЛІТЕРАТУРА

1. MySQL. Просто и понятно

2. Все о PHP, MySQL и не только

3. Работа с БД на PHP

4. Базы данных: MySQL

5. Все прo SQL базы данных

ДОДАТОК

Сторінки рhp програми де використовуються SQL запити

login.php

<?php

require_once 'users.php';

session_start();

$user = $_SESSION['user'];

$user->db_connect();

$login = $_POST['login'];

$password = $_POST['password'];

if(!strlen($login))

$head = "location: Index.php?log_err=empty_login";

else if(!strlen($password))

$head = "location: Index.php?log_err=empty_password";

else

{

$sql = "SELECT user_id,status FROM user WHERE login='".$login."' AND password='".$password."'";

$result = mysql_query($sql);

if(!@mysql_num_rows($result))

$head = "location: Index.php?log_err=user_not_exist";

else

{

$user_data = mysql_fetch_array($result);

if(!strcmp($user_data['status'],'user'))

$user = new defined_user($login,$password,$user_data['user_id']);

else if(!strcmp($user_data['status'],'maneger'))

$user = new maneger($login,$password,$user_data['user_id']);

else if(!strcmp($user_data['status'],'admin'))

$user = new admin($login,$password,$user_data['user_id']);

$_SESSION['user'] = $user;

$_SESSION['status'] = $user_data['status'];

$head = "location: Index.php";

}

}

mysql_close();

header($head);

?>

users.php

<?php

$firm_id; #Глобальна змінна - код фірми

#Абстрактний клас від якого начлідуються всі види користувачів

abstract class users

{

abstract function db_connect(); #Функція для під'єднання до субд mysql

abstract function greeting($log_err); #Функція яка виводить привітання або форму для залогінення

#Визначає назву та код усіх класів і видів товарів

function product_types(&$product_classes_id,&$product_classes_num,&$product_classes,&$product_types_num)

{

$this->db_connect();

$sql_class = "select product_id,title from product where father_id=0";

$res_class = mysql_query($sql_class);

$product_classes_num = mysql_num_rows($res_class);

for($i=0;$i<$product_classes_num;$i++)

{

$j = 0;

$fetch = mysql_fetch_array($res_class);

$product_classes[$i][$j] = $fetch['title'];

$product_classes_id[$i][$j] = $fetch['product_id'];

$sql_types = "select product_id,title from product where father_id=".$product_classes_id[$i][$j];

$res_types = mysql_query($sql_types);

$product_types_num[$i] = mysql_num_rows($res_types);

while($j < $product_types_num[$i])

{

$j++;

$fetch = mysql_fetch_array($res_types);

$product_classes[$i][$j] = $fetch['title'];

$product_classes_id[$i][$j] = $fetch['product_id'];

}

}

}

#Виводить класи і види товарів

function out_product_types()

{

$this->product_types($product_classes_id,$product_classes_num,$product_classes,$product_types_num);

echo "<tr>";

for($i=0;$i<$product_classes_num;$i++)

{

if(($i+1 % 4) == 0)

echo "</tr><tr>";

echo "<td valign='top' align='left'>";

echo "<b><u>".$product_classes[$i][0]."</u></b>";

for($j=1;$j<=$product_types_num[$i];$j++)

{

echo "<br><a style='text-decoration: none' href=product_list.php?type=".$product_classes_id[$i][$j].">".$product_classes[$i][$j]."</a>";

}

echo "</td>";

}

echo "</tr>";

}

#Визначає назви і коди фірм певного виду товарів

function firms($product_type_id,&$firm_title,&$firm_id)

{

$this->db_connect();

$sql = "SELECT title,product_id FROM product WHERE father_id=".$product_type_id;

$result = mysql_query($sql);

for($i = 0;$i<mysql_num_rows($result);$i++)

{

$firm_inf = mysql_fetch_array($result);

$firm_title[$i] = $firm_inf['title'];

$firm_id[$i] = $firm_inf['product_id'];

}

}

#Виводить назви фірм як гіперпосилання з їх кодами

function out_firms($product_type_id)

{

global $firm_id;

$this->firms($product_type_id,$firm_title,$firm_id);

$number_of_firms = count($firm_id);

for($i=0;$i<$number_of_firms;$i++)

{

echo "<a style='text-decoration: none' href='product_list.php?type=".$product_type_id."&firm_id=".$firm_id[$i]."'>".$firm_title[$i]."</a><br>";

}

}

#Виводить список продуктів у зручному для користувача вигляді(Назва, код, картинка, короткий опис, ціна, наявність на складі)

function out_product_list($product_type_id,$firm_id)

{

if($_GET['firm_id'])

$firm_id = array($_GET['firm_id']);

else

global $firm_id;

$this->db_connect();

$number_of_firms = count($firm_id);

for($i=0;$i<$number_of_firms;$i++)

{

$sql = "SELECT product_id,title,small_description FROM product WHERE father_id=".$firm_id[$i];

$result = mysql_query($sql);

for($j=0;$j<mysql_num_rows($result);$j++)

{

$product = mysql_fetch_array($result);

$product_id = $product['product_id'];

$title = $product['title'];

$small_description = $product['small_description'];

$result1 = mysql_query("SELECT price FROM storage_item WHERE product_id=".$product_id);

if(@mysql_num_rows($result1))

{

$storage_item = mysql_fetch_array($result1);

$price = $storage_item['price'];

$availability = "Є в наявності";

}

else

$availability = "Немає в наявності";

echo "<tr><td rowspan='6' valign='top'><img width='256' heigth='256' src=image.php?product_id=".$product_id."></td>";

echo "<td><a style='font-size: 40px' href='item.php?type=".$product_type_id."&id=".$product_id."'>".$title."</a></td></tr>";

echo "<tr><td style='color: grey'>Код товару: ".$product_id."</td></tr>";

echo "<tr><td style='font-family: serif; font-size: 25px'>".$small_description."</td></tr>";

echo "<tr><td style='font-family: serif; font-size: 25px; color: #10df10'>".$availability."</td></tr>";

if(@mysql_num_rows($result1))

{

echo "<tr><td style='font-family: serif; font-size: 45px; color: #10df10'>".$price."грн</td></tr>";

echo "<tr><td><input type='button' class='button_color button_text' style='height: 30px' value='Купити' onClick=window.location.href='buy.php?product_id=".$product_id."'></td></tr>";

}

echo "<tr><td><br><br></td></tr><tr><td><br><br></td></tr>";

}

}

}

#Функція для знаходження та виводу товарів по слову пошуку

function find($find_str)

{

$this->db_connect();

$sql = "SELECT product_id,title,small_description FROM product WHERE title LIKE '%".$find_str."%' AND small_description IS NOT NULL";

$result = mysql_query($sql);

if(@mysql_num_rows($result))

{

for($j=0;$j<mysql_num_rows($result);$j++)

{

$product = mysql_fetch_array($result);

$product_id = $product['product_id'];

$title = $product['title'];

$small_description = $product['small_description'];

$result1 = mysql_query("SELECT price FROM storage_item WHERE product_id=".$product_id);

if(@mysql_num_rows($result1))

{

$storage_item = mysql_fetch_array($result1);

$price = $storage_item['price'];

$availability = "Є в наявності";

}

else

$availability = "Немає в наявності";

echo "<tr><td rowspan='6' valign='top'><img width='256' heigth='256' src=image.php?product_id=".$product_id."></td>";

echo "<td><a style='font-size: 40px' href='item.php?type=".$product_type_id."&id=".$product_id."'>".$title."</a></td></tr>";

echo "<tr><td style='color: grey'>Код товару: ".$product_id."</td></tr>";

echo "<tr><td style='font-family: serif; font-size: 25px'>".$small_description."</td></tr>";

echo "<tr><td style='font-family: serif; font-size: 25px; color: #10df10'>".$availability."</td></tr>";

if(@mysql_num_rows($result1))

{

echo "<tr><td style='font-family: serif; font-size: 45px; color: #10df10'>".$price."грн</td></tr>";

echo "<tr><td><input type='button' class='button_color button_text' style='height: 30px' value='Купити' onClick=window.location.href='buy.php?product_id=".$product_id."'></td></tr>";

}

echo "<tr><td><br><br></td></tr><tr><td><br><br></td></tr>";

}

}

else

echo "<p style='font-style: italic; font-size: 40px; font-family: serif; color: #3333ff;'>Жодного товару не знайдено.</p>";

}

}

#Незалогінений користувач

class guest extends users

{

function db_connect()

{

mysql_connect('localhost','guest','g');

mysql_select_db('internet_shop');

mysql_query("SET NAMES 'utf8'");

}

#Блок для логіну та реєстрації і вивід повідомлень про некоректність введених даних

function greeting($log_err)

{

include_once 'login_block.txt';

if(!strcmp($log_err,'empty_login'))

echo "<font class='color_text'>Введіть логін</font>";

else if(!strcmp($log_err,'empty_password'))

echo "<font class='color_text'>Введіть пароль</font>";

else if(!strcmp($log_err,'user_not_exist'))

echo "<font class='color_text'>Неправильний логін або пароль</font>";

echo "</div></div><hr style='background-color: white; border: none'>";

}

}

#Користувач залогінений як покупець

class defined_user extends users

{

var $login;

var $password;

var $id;

function db_connect()

{

mysql_connect('localhost','user','u');

mysql_select_db('internet_shop');

mysql_query("SET NAMES 'utf8'");

}

function defined_user($login,$password,$id)

{

$this->login = $login;

$this->password = $password;

$this->id = $id;

}

function greeting($log_err)

{

echo "<div class='top_right_div'><h3>";

echo "<font class=color_text>Ви увійшли як користувач:".$this->login."</font></h3>";

echo "<form action='logout.php' method='post'>";

echo "<input type='submit' class='button_color button_text' value='Вийти'>";

echo "</form>";

echo "</div></div><hr style='background-color: white; border: none'>";

}

}

#Користувач залогінений як менеджер

class maneger extends users

{

var $login;

var $password;

var $id;

function db_connect()

{

mysql_connect('localhost','maneger','m');

mysql_select_db('internet_shop');

mysql_query("SET NAMES 'utf8'");

}

function maneger($login,$password,$id)

{

$this->login = $login;

$this->password = $password;

$this->id = $id;

}

function greeting($log_err)

{

echo "<div class='top_right_div'><h3>";

echo "<font class=color_text>Ви увійшли як менеджер:".$this->login."</font></h3>";

echo "<table><tr>";

echo "<td>";

echo "<input type='button' class='button_color button_text' value='Сторінка менеджера' onClick=window.location.href='admin_room.php'>";

echo "</td>";

echo "<td>";

echo "<input type='button' class='button_color button_text' value='Вийти' onClick=window.location.href='logout.php'>";

echo "</td>";

echo "</tr></table>";

echo "</div></div><hr style='background-color: white; border: none'>";

}

}

#Користувач залогінений як адміністратор

class admin extends users

{

var $login;

var $password;

var $id;

function db_connect()

{

mysql_connect('localhost','shop_admin','administrator');

mysql_select_db('internet_shop');

mysql_query("SET NAMES 'utf8'");

}

function admin($login,$password,$id)

{

$this->login = $login;

$this->password = $password;

$this->id = $id;

}

function greeting($log_err)

{

echo "<div class='top_right_div'><h3>";

echo "<font class=color_text>Ви увійшли як адміністратор:".$this->login."</font></h3>";

echo "<table><tr>";

echo "<td>";

echo "<input type='button' class='button_color button_text' value='Сторінка адміністратора' onClick=window.location.href='admin_room.php'>";

echo "</td>";

echo "<td>";

echo "<input type='button' class='button_color button_text' value='Вийти' onClick=window.location.href='logout.php'>";

echo "</td>";

echo "</tr></table>";

echo "</div></div><hr style='background-color: white; border: none'>";

}

}

#Клас для перевірки коректності введених даних

class check

{

#Перевірка введених даних для таблиці покупців

function customer_check($lastname,$name,$contact_phone,$adress)

{

if(!strlen($lastname))

return "Введіть фамілію";

else if(!strlen($name))

return "Введіть ім'я";

else if(strlen($contact_phone) != 10 ||!is_numeric($contact_phone))

return "Невірно вказаний номер телефону(10 цифр)";

else if(!strlen($adress))

return "Введіть адресу";

else

return "";

}

#Перевірка введених даних для таблиці менеджерів

function maneger_check($fullname,$succes_orders,$canceled_orders)

{

if(!strlen($fullname))

return "Введіть повне ім'я";

else if(!strlen($succes_orders) || !is_numeric($succes_orders))

return "Некоректно вказана або не вказана кількість вдалих угод";

else if(!strlen($canceled_orders) || !is_numeric($canceled_orders))

return "Некоректно вказана або не вказана кількість невдалих угод";

}

#Перевірка введених даних для таблиці продуктів

function product_check($title)

{

if(!strlen($title))

return "Введыть назву";

}

#Перевірка введених даних для таблиці складу

function storage_item_check($product_id,$arrival_date,$product_number,$price)

{

if(!strlen($product_id) || !is_numeric($product_id))

return "Введіть коректний номер продукту";

else if(!strlen($arrival_date))

return "Введіть дату";

else if(!strlen($product_number) || !is_numeric($product_number))

return "Невірно вказана кількість товарів";

else if(!strlen($price) || !is_numeric($price))

return "Невірно вказана ціна";

else

return "";

}

#Перевірка введених даних для таблиці передзамовлень

function preorder_check($lastname,$name,$contact_phone,$adress,$storage_item_id,$product_number)

{

if(!strlen($lastname))

return "Введіть прізвище";

else if(!strlen($name))

return "Введіть ім'я";

else if(strlen($contact_phone) != 10 || !is_numeric($contact_phone))

return "Введіть коректний номер телефону(10 цифр)";

else if(!strlen($adress))

return "Введіть адресу";

else if(!strlen($storage_item_id) || !is_numeric($storage_item_id))

return "Введіть коректний код товару на складі";

else if(!strlen($product_number) || !is_numeric($product_number))

return "Введіть коректну кількість замовленої продукції";

else

return "";

}

}

?>

maneger.php

<?php

require_once 'users.php';

session_start();

if($_GET['auto_maneger_rate'] == 1)

{

$user = $_SESSION['user'];

$user->db_connect();

$sql = "CALL internet_shop.auto_maneger_rate();";

mysql_query($sql);

header("location: maneger.php");

}

else if($_GET['auto_maneger_rate'] == 2)

{

$user = $_SESSION['user'];

$user->db_connect();

$sql = "CALL internet_shop.auto_null_deals();";

mysql_query($sql);

$sql = "CALL internet_shop.auto_maneger_rate();";

mysql_query($sql);

header("location: maneger.php");

}

?>

<script language="javascript">

function cancel_edit()

{

var table = document.getElementById("table");

table.innerHTML = "";

}

function addRowForm()

{

var add_table = document.getElementById("table");

var head = "<tr><td>Логін</td><td>Пароль</td><td>Повне ім'я</td></tr>";

var data_input = "<form action='add_row.php' method='post'><tr>";

data_input = data_input + "<td><input type='text' name='login'></td>";

data_input = data_input + "<td><input type='password' name='password'></td>";

data_input = data_input + "<td><input type='text' name='fullname'></td>";

data_input = data_input + "</tr>";

data_input = data_input + "<tr><td><input type = 'submit' class='button_color button_text' value = 'Додати'></td>";

data_input = data_input + "<td><input type = 'button' class='button_color button_text' value = 'Відміна' onClick = 'cancel_edit();'></td>"

add_table.innerHTML = head + data_input;

}

function submit_editing(i)

{

var cur_element;

cur_element = document.getElementsByName("maneger_id"+i);

var maneger_id = cur_element[0].value;

cur_element = document.getElementsByName("fullname"+i);

var fullname = cur_element[0].value;

cur_element = document.getElementsByName("succes_orders"+i);

var succes_orders = cur_element[0].value;

cur_element = document.getElementsByName("canceled_orders"+i);

var canceled_orders = cur_element[0].value;

window.location.href = "edit_table.php?maneger_id="+maneger_id+"&fullname="+fullname+"&succes_orders="+succes_orders+"&canceled_orders="+canceled_orders;

}

function edit(i)

{

var cur_element;

cur_element = document.getElementsByName("fullname"+i);

cur_element[0].removeAttribute("readonly");

cur_element = document.getElementsByName("succes_orders"+i);

cur_element[0].removeAttribute("readonly");

cur_element = document.getElementsByName("canceled_orders"+i);

cur_element[0].removeAttribute("readonly");

var commit_button;

commit_button = document.createElement("input");

commit_button.setAttribute("type", "button");

commit_button.setAttribute("class", "button_color button_text");

commit_button.setAttribute("name","maneger_edit");

commit_button.setAttribute("value","Підтвердити");

commit_button.setAttribute("onClick","submit_editing("+i+");");

var edit_button = document.getElementsByName("edit"+i)[0];

edit_button.parentNode.replaceChild(commit_button,edit_button);

var cancel_button = document.createElement("input");

cancel_button.setAttribute("type", "button");

cancel_button.setAttribute("class", "button_color button_text");

cancel_button.setAttribute("value","Відміна");

cancel_button.setAttribute("onClick","window.location.href='maneger.php'");

var delete_button = edit_button = document.getElementsByName("delete"+i)[0];

delete_button.parentNode.replaceChild(cancel_button,delete_button);

}

function deleting(i)

{

var cur_element;

cur_element = document.getElementsByName("maneger_id"+i);

var maneger_id = cur_element[0].value;

window.location.href = "delete_row.php?maneger_id="+maneger_id;

}

</script>

<?php

include_once 'site_top.txt';

$_SESSION['user']->greeting($_GET['log_err']);

if($_GET['error'])

echo "<u><p align=center><font class='color_text' size=5>".$_GET['error']."</font></p></u>";

?>

<html>

<head>

</head>

<body>

<meta content="text/html" charset="utf-8">

<link rel="stylesheet" href="styles.css" type="text/css">

<div class="main_div">

<div class="table_title_text"><a class="table_title_text" href="maneger.php">таблиця менеджерів</a></div>

<div class="table_view_div">

<table border="1">

<tr align="center"><td>Код</td><td>Повне ім'я</td><td>Успішні угоди</td><td>Скасовіні угоди</td><td>Рейтинг</td></tr>

<?php

$user = $_SESSION['user'];

$user->db_connect();

$sql = "SELECT * FROM maneger";

$result = mysql_query($sql);

for($i=1;$i<=mysql_num_rows($result);$i++)

{

$row = mysql_fetch_array($result);

echo "<tr><td>";

echo "<input type='text' readonly name='maneger_id".$i."' value='".$row['maneger_id']."'>";

echo "</td><td>";

echo "<input type='text' readonly name='fullname".$i."' value='".$row['fullname']."'>";

echo "</td><td>";

echo "<input type='text' readonly name='succes_orders".$i."' value='".$row['succes_orders']."'>";

echo "</td><td>";

echo "<input type='text' readonly name='canceled_orders".$i."' value='".$row['canceled_orders']."'>";

echo "</td><td>";

echo "<input type='text' readonly name='rates".$i."' value='".$row['rate']."'>";

if(!strcmp($_SESSION['status'],'admin'))

{

echo "</td><td>";

echo "<input type=button class='button_color button_text' name='edit".$i."' value='Редагувати' onClick='edit(".$i.");'>";

echo "</td><td>";

echo "<input type=button class='button_color button_text' name='delete".$i."' value='Видалити' onClick='deleting(".$i.");'>";

}

echo "</td></tr>";

}

mysql_close();

?>

</table>

<?php

if(!strcmp($_SESSION['status'],'admin'))

{

echo "<br>";

echo "<table><tr>";

echo "<td><input type='button' class='button_color button_text' value='Додати рядок' onClick='addRowForm();'></td>";

echo "<td><input type='button' class='button_color button_text' value='Розрахувати рейтинг' onClick=window.location.href='maneger.php?auto_maneger_rate=1'></td>";

echo "<td><input type='button' class='button_color button_text' value='Обнулити рейтинг' onClick=window.location.href='maneger.php?auto_maneger_rate=2'></td>";

echo "</tr></table>";

echo "<br>";

echo "<table id='table'></table>";

}

?>

</div>

<?php

include_once 'site_bottom.txt';

?>

</div>

</body>

</html>

storage_item.php

<?php

require_once 'users.php';

session_start();

if($_GET['product_id'])

{

$user = $_SESSION['user'];

$user->db_connect();

$sql = "INSERT INTO storage_item(product_id) VALUES(".$_GET['product_id'].")";

mysql_query($sql);

header("location: storage_item.php");

}

?>

<script language="javascript">

function cancel_edit()

{

var table = document.getElementById("table");

table.innerHTML = "";

}

function submit_editing(i)

{

var cur_element;

cur_element = document.getElementsByName("storage_item_id"+i);

var storage_item_id = cur_element[0].value;

cur_element = document.getElementsByName("product_id"+i);

var product_id = cur_element[0].value;


Подобные документы

  • Основні підходи до проектування баз даних. Опис сайту Інтернет-магазину, характеристика його підсистем для обробки анкет і запитів користувачів. Розробка концептуальної, інфологічної, даталогічної, фізичної моделей даних. Побудова ER-моделі в CASE-засоби.

    курсовая работа [2,3 M], добавлен 01.02.2013

  • Основні поняття та особливості розробки баз даних в Microsoft Access. Побудова бази даних магазину побутової техніки: створення таблиць та встановлення зв’язків між ними, створення запитів, форм та звітів. Охорона праці і гігієна користувача комп'ютера.

    курсовая работа [2,5 M], добавлен 19.01.2010

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

    отчет по практике [72,0 K], добавлен 07.07.2010

  • Інтернет як система об'єднаних комп'ютерних мереж для зберігання і передачі інформації. Літературні джерела щодо сутності баз даних та їх функціонування. Порівняльний аналіз MySQL, Oracle та Microsoft Access. Створення бази даних за допомогою MySQL.

    курсовая работа [1,5 M], добавлен 05.02.2014

  • Розвиток комп’ютерної техніки. Основи інформатики. Класифікація персональних комп’ютерів. Складові частини інформатики. Інформація, її види та властивості. Кодування інформації. Структурна схема комп’ютера. Системи числення. Позиційна система числення.

    реферат [36,0 K], добавлен 27.10.2003

  • Стандарти технології Fast Ethernet. Перелік функцій користувачів та прав доступу. Розставлення робочих станцій та периферійної техніки у приміщенні клубу. Розрахунок трафіку мережі. Вибір й характеристики обладнання для серверів та комутуючих пристроїв.

    дипломная работа [997,0 K], добавлен 23.07.2014

  • Аналіз технологій розробки систем моніторингу і управління та різноманітності мов програмування. Створення проекту структури Інтернет-магазину, розробка бази даних, UML-діаграми та алгоритму виконання функцій додатку. Результати тестування програми.

    дипломная работа [1,6 M], добавлен 08.06.2015

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.