Розробка інформаційної системи для обліку та продажу програмних продуктів
Розробка комплексу інтерактивних програмних засобів для обліку і продажу товарів в Інтернет-магазині. Консультативні та довідкові функції інформаційної системи. Створення і реалізація структурної моделі бази даних. Вимоги до ресурсів сервера і ПК клієнта.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | украинский |
Дата добавления | 14.02.2015 |
Размер файла | 891,6 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
exit;
}
}
/ / Вихід користувача
if ($ _GET [' do '] == ' logout ' ) {
logout ();
redirect ();
}
/ / Масив метаданих
$ meta = array ();
/ / Отримання динамічною частини шаблону # content
$ view = empty ($ _GET [' view '] ) ? ' hits ': $ _GET [' view '];
switch ($ view ) {
case (' hits ' ):
/ / Лідери продажів
$ eyestoppers = eyestopper (' hits ');
$ meta [' title '] = TITLE;
$ meta [' description '] = TITLE;
$ meta [' keywords '] = TITLE. ", Продаж, дніпропетровськ ";
break;
case (' new ' ):
/ / Новинки
$ eyestoppers = eyestopper (' new ');
$ meta [' title '] = " Новинки | ". TITLE;
$ meta [' description '] = " Новинки | ". TITLE;
break;
case (' sale ' ):
/ / Розпродаж
$ eyestoppers = eyestopper (' sale ');
$ meta [' title '] = " Розпродаж | ". TITLE;
$ meta [' description '] = " Новинки | ". TITLE;
break;
case (' page ' ):
/ / Окрема сторінка
$ page_id = abs ( ( int ) $ _GET [' page_id '] );
$ get_page = get_page ($ page_id );
$ meta [' title '] = " {$ get_page [' title '] } | ". TITLE;
$ meta [' description '] = " {$ get_page [' description '] } | ". TITLE;
break;
case (' news ' ):
/ / Окрема новина
$ news_id = abs ( ( int ) $ _GET [' news_id '] );
$ news_text = get_news_text ($ news_id );
break;
case (' archive ' ):
/ / Всі новини ( архів новин )
/ / Параметри для навігації
$ perpage = 2; / / Кількість товарів на сторінку
if ( isset ($ _GET [' page '] )) {
$ page = ( int ) $ _GET [' page '];
if ($ page < 1 ) $ page = 1;
} else {
$ page = 1;
}
$ count_rows = count_news (); / / Загальне у новин
$ pages_count = ceil ($ count_rows / $ perpage ); / / К -ть сторінок
if (! $ pages_count ) $ pages_count = 1; / / Мінімум 1 сторінка
if ($ page > $ pages_count ) $ page = $ pages_count; / / Якщо запитана сторінка більше максимуму
$ start_pos = ($ page - 1 ) * $ perpage; / / Початкова позиція для запиту
$ all_news = get_all_news ($ start_pos, $ perpage );
break;
case (' informer ' ):
/ / Текст інформера
$ informer_id = abs ( ( int ) $ _GET [' informer_id '] );
$ text_informer = get_text_informer ($ informer_id );
break;
case (' cat ' ):
/ / Товари категорії
$ category = abs ( ( int ) $ _GET [' category '] );
/ * ===== Сортування ===== * /
/ / Масив параметрів сортування
/ / Ключі - те, що передаємо GET - параметром
/ / Значення - те, що показуємо користувачеві і частина SQL -запиту, який передаємо в модель
$ order_p = array (
' pricea ' => array (' від дешевих до дорогих ', ' price ASC ' ),
' priced ' => array (' від дорогих до дешевих ', ' price DESC ' ),
' datea ' => array (' за датою додавання - до останніх ', ' date ASC ' ),
' dated ' => array (' за датою додавання - з останніх ', ' date DESC ' ),
' namea ' => array (' від А до Я ', ' name ASC ' ),
' named ' => array (' від Я до А ', ' name DESC ' )
);
$ order_get = clear ($ _GET [' order '] ); / / Отримуємо можливий параметр сортування
if ( array_key_exists ($ order_get, $ order_p )) {
$ order = $ order_p [$ order_get ] [ 0 ];
$ order_db = $ order_p [$ order_get ] [ 1 ];
} else {
/ / За замовчуванням сортування за першому елементу масиву order_p
$ order = $ order_p [' namea '] [0];
$ order_db = $ order_p [' namea '] [ 1 ];
}
/ * ===== Сортування ===== * /
/ / Параметри для навігації
$ perpage = 3; / / Кількість товарів на сторінку
if ( isset ($ _GET [' page '] )) {
$ page = ( int ) $ _GET [' page '];
if ($ page < 1 ) $ page = 1;
} else {
$ page = 1;
}
$ count_rows = count_rows ($ category ); / / Загальне у товарів
$ pages_count = ceil ($ count_rows / $ perpage ); / / К -ть сторінок
if (! $ pages_count ) $ pages_count = 1; / / Мінімум 1 сторінка
if ($ page > $ pages_count ) $ page = $ pages_count; / / Якщо запитана сторінка більше максимуму
$ start_pos = ($ page - 1 ) * $ perpage; / / Початкова позиція для запиту
$ brand_name = brand_name ($ category ); / / Хлібні крихти
$ products = products ($ category, $ order_db, $ start_pos, $ perpage ); / / Отримуємо масив з моделі
$ meta [' title '] = $ brand_name [ 0 ] [' brand_name '];
if ($ brand_name [ 1 ] ) $ meta [' title ']. = " - {$ brand_name [ 1 ] [' brand_name '] } ";
$ meta [' title ']. = "|". TITLE;
$ meta [' description '] = " {$ brand_name [ 0 ] [' brand_name '] }, {$ brand_name [ 1 ] [' brand_name '] } ";
break;
case (' addtocart ' ):
/ / Додавання в корзину
$ goods_id = abs ( ( int ) $ _GET [' goods_id '] );
addtocart ($ goods_id );
$ _SESSION [' Total_sum '] = total_sum ($ _SESSION [' cart '] );
/ / В товару в кошику + захист від введення неіснуючого ID товару
total_quantity ();
redirect ();
break;
case (' cart ' ):
/ * Корзина * /
/ / Отримання способів доставки
$ dostavka = get_dostavka ();
/ / Перерахунок товарів в кошику
if ( isset ($ _GET [' id '], $ _GET [' qty '] )) {
$ goods_id = abs ( ( int ) $ _GET [' id '] );
$ qty = abs ( ( int ) $ _GET [' qty '] );
$ qty = $ qty - $ _SESSION [' cart '] [$ goods_id ] [' qty '];
addtocart ($ goods_id, $ qty );
$ _SESSION [' Total_sum '] = total_sum ($ _SESSION [' cart '] ); / / Сума замовлення
total_quantity (); / / В товару в кошику + захист від введення неіснуючого ID товару
redirect ();
}
/ / Видалення товару з кошика
if ( isset ($ _GET [' delete '] )) {
$ id = abs ( ( int ) $ _GET [' delete '] );
if ($ id ) {
delete_from_cart ($ id );
}
redirect ();
}
if ($ _POST [' order_x '] ) {
add_order ();
redirect ();
}
break;
case (' reg ' ):
/ / Реєстрація
break;
case (' search ' ):
/ / Пошук
$ result_search = search ();
/ / Параметри для навігації
$ perpage = 9; / / Кількість товарів на сторінку
if ( isset ($ _GET [' page '] )) {
$ page = ( int ) $ _GET [' page '];
if ($ page < 1 ) $ page = 1;
} else {
$ page = 1;
}
$ count_rows = count ($ result_search ); / / Загальне у товарів
$ pages_count = ceil ($ count_rows / $ perpage ); / / К -ть сторінок
if (! $ pages_count ) $ pages_count = 1; / / Мінімум 1 сторінка
if ($ page > $ pages_count ) $ page = $ pages_count; / / Якщо запитана сторінка більше максимуму
$ start_pos = ($ page - 1 ) * $ perpage; / / Початкова позиція для запиту
$ endpos = $ start_pos + $ perpage; / / До якого товару буде висновок на сторінці
if ($ endpos > $ count_rows ) $ endpos = $ count_rows;
break;
case (' filter ' ):
/ / Вибір за параметрами
$ startprice = ( int ) $ _GET [' startprice '];
$ endprice = ( int ) $ _GET [' endprice '];
$ brand = array ();
if ($ _GET [' brand '] ) {
foreach ($ _GET [' brand '] as $ value ) {
$ value = ( int ) $ value;
$ brand [$ value ] = $ value;
}
}
if ($ brand ) {
$ category = implode (', ', $ brand );
}
$ products = filter ($ category, $ startprice, $ endprice );
break;
case (' product ' ):
/ / Окремий товар
$ goods_id = abs ( ( int ) $ _GET [' goods_id '] );
if ($ goods_id ) {
$ goods = get_goods ($ goods_id );
if ($ goods ) $ brand_name = brand_name ($ goods [' goods_brandid '] );
/ / Хлібні крихти
}
break;
default:
/ / Якщо з адресного рядка отримано ім'я неіснуючого виду
$ view = ' hits ';
$ eyestoppers = eyestopper (' hits ');
}
/ / Підключення виду
require_once $ _SERVER [' DOCUMENT_ROOT ']. ' / views / ishop / index.php '; / / Http://provod.com.uaviews/ishop/index.php
Лістинг файлу controller.php
<? php
defined (' ISHOP ' ) or die (' Access denied ');
/ * === Роздруківка масиву === * /
function print_arr ($ arr ) {
echo " <pre> ";
print_r ($ arr );
echo " </ pre > ";
}
/ * === Роздруківка масиву === * /
/ * === Фільтрація вхідних даних === * /
function clear ($ var ) {
$ var = mysql_real_escape_string ( strip_tags ($ var ));
return $ var;
}
/ * === Фільтрація вхідних даних === * /
/ * === Редірект === * /
function redirect ($ http = false ) {
if ($ http ) $ redirect = $ http;
else $ redirect = isset ($ _SERVER [' HTTP_REFERER '] ) ? $ _SERVER [' HTTP_REFERER ']: PATH;
header ( "Location: $ redirect " );
exit;
}
/ * === Редірект === * /
/ * === Вихід користувача === * /
function logout () {
unset ($ _SESSION [' auth '] );
}
/ * === Вихід користувача === * /
/ * === Додавання в кошик === * /
function addtocart ($ goods_id, $ qty = 1 ) {
if ( isset ($ _SESSION [' cart '] [$ goods_id ])) {
/ / Якщо в масиві cart вже є додається товар
$ _SESSION [' Cart '] [$ goods_id ] [' qty '] + = $ qty;
return $ _SESSION [' cart '];
} else {
/ / Якщо товар кладеться в кошик вперше
$ _SESSION [' Cart '] [$ goods_id ] [' qty '] = $ qty;
return $ _SESSION [' cart '];
}
}
/ * === Додавання в кошик === * /
/ * === Видалення з кошика === * /
function delete_from_cart ($ id ) {
if ($ _SESSION [' cart '] ) {
if ( array_key_exists ($ id, $ _SESSION [' cart '] )) {
$ _SESSION [' Total_quantity '] - = $ _SESSION [' cart '] [$ id ] [' qty '];
$ _SESSION [' Total_sum '] - = $ _SESSION [' cart '] [$ id ] [' qty '] * $ _SESSION [' cart '] [$ id ] [' price '];
unset ($ _SESSION [' cart '] [$ id ] );
}
}
}
/ * === Видалення з кошика === * /
/ * === В товару в кошику + захист від введення неіснуючого ID товару === * /
function total_quantity () {
$ _SESSION [' Total_quantity '] = 0;
foreach ($ _SESSION [' cart '] as $ key => $ value ) {
if ( isset ($ value [' price '] )) {
/ / Якщо отримана ціна товару з БД - підсумовуємо кіл-у
$ _SESSION [' Total_quantity '] + = $ value [' qty '];
} else {
/ / Інакше - видаляємо такий ID із сесій ( кошика)
unset ($ _SESSION [' cart '] [$ key ] );
}
}
}
/ * === В товару в кошику + захист від введення неіснуючого ID товару === * /
/ * === Посторінкова навігація === * /
function pagination ($ page, $ pages_count, $ modrew = 1 ) {
if ($ modrew == 0 ) {
/ / Якщо функція викликається на сторінці без ЧПУ
if ($ _SERVER [' QUERY_STRING '] ) {/ / якщо є параметри у запиті
$ uri = " ? ";
foreach ($ _GET as $ key => $ value ) {
/ / Формуємо рядок параметрів без номера сторінки... номер передається параметром функції
if ($ key ! = ' page ' ) $ uri. = " {$ key } = {$ value } & ";
}
}
} else {
/ / Якщо функція викликана на сторінці з ЧПУ
$ uri = $ _SERVER [' REQUEST_URI '];
$ params = explode ( "/", $ uri );;
$ uri = null;
foreach ($ params as $ param ) {
if (! empty ($ param ) AND ! preg_match ( "# page = # " ??, $ param )) {
$ uri. = " / $ param ";
}
}
$ uri. = "/";
}
/ / Формування посилань
$ back = ''; / / Посилання НАЗАД
$ forward = ''; / / Посилання ВПЕРЕД
$ startpage = ''; / / Посилання У ПОЧАТОК
$ endpage = ''; / / Посилання У КІНЕЦЬ
$ page2left = ''; / / Друга сторінка зліва
$ page1left = ''; / / Перша сторінка зліва
$ page2right = ''; / / Друга сторінка праворуч
$ page1right = ''; / / Перша сторінка праворуч
if ($ page > 1 ) {
$ back = " < a class = ' nav_link ' href = ' {$ uri } page =". ($ page -1). " '> << / a > ";
}
if ($ page <$ pages_count ) {
$ forward = " < a class = ' nav_link ' href = ' {$ uri } page =". ($ page +1). " ' >> </ a > ";
}
if ($ page > 3 ) {
$ startpage = " <a class='nav_link' href='{$uri}page=1'> « < / a > ";
}
if ($ page < ($ pages_count - 2 )) {
$ endpage = " <a class='nav_link' href='{$uri}page={$pages_count}'> » </ a > ";
}
if ($ page - 2 > 0 ) {
$ page2left = " < a class = ' nav_link ' href = ' {$ uri } page =". ($ page -2). " '> ". ($ Page -2). " </ a > ";
}
if ($ page - 1> 0 ) {
$ page1left = " < a class = ' nav_link ' href = ' {$ uri } page =". ($ page -1). " '> ". ($ Page -1). " </ a > ";
}
if ($ page + 2 < = $ pages_count ) {
$ page2right = " < a class = ' nav_link ' href = ' {$ uri } page =". ($ page +2 ). " '> ". ($ Page +2 ). " </ a > ";
}
if ($ page + 1 < = $ pages_count ) {
$ page1right = " < a class = ' nav_link ' href = ' {$ uri } page =". ($ page +1). " '> ". ($ Page +1). " </ a > ";
}
/ / Формуємо висновок навігації
echo ' <div class="pagination"> '. $ startpage. $ back. $ page2left. $ page1left. ' <a class="nav_active"> '. $ page. ' </ a >'. $ page1right. $ page2right. $ forward. $ endpage. '< / div >';
}
/ * === Посторінкова навігація === * /
Лістинг файлу model.php
<? php
defined (' ISHOP ' ) or die (' Access denied ');
/ * ==== Каталог - отримання масиву === * /
function catalog () {
$ query = " SELECT * FROM brands ORDER BY parent_id, brand_name ";
$ res = mysql_query ($ query ) or die ( mysql_query ( ));
/ / масив категорій
$ cat = array ();
while ($ row = mysql_fetch_assoc ($ res )) {
if (! $ row [' parent_id '] ) {
$ cat [$ row [' brand_id '] ] [ ] = $ row [' brand_name '];
} else {
$ cat [$ row [' parent_id '] ] [' sub '] [$ row [' brand_id '] ] = $ row [' brand_name '];
}
}
return $ cat;
}
/ * ==== Каталог - отримання масиву === * /
/ * === Сторінки === * /
function pages () {
$ query = " SELECT page_id, title FROM pages ORDER BY position ";
$ res = mysql_query ($ query );
$ pages = array ();
while ($ row = mysql_fetch_assoc ($ res )) {
$ pages [] = $ row;
}
return $ pages;
}
/ * === Сторінки === * /
/ * === Окрема сторінка === * /
function get_page ($ page_id ) {
$ query = " SELECT title, keywords, description, text FROM pages WHERE page_id = $ page_id ";
$ res = mysql_query ($ query );
$ get_page = array ();
$ get_page = mysql_fetch_assoc ($ res );
return $ get_page;
}
/ * === Окрема сторінка === * /
/ * === Назви новин === * /
function get_title_news () {
$ query = " SELECT news_id, title, date FROM news ORDER BY date DESC LIMIT 2";
$ res = mysql_query ($ query );
$ news = array ();
while ($ row = mysql_fetch_assoc ($ res )) {
$ news [] = $ row;
}
return $ news;
}
/ * === Назви новин === * /
/ * === Окрема новина === * /
function get_news_text ($ news_id ) {
$ query = " SELECT title, text, date FROM news WHERE news_id = $ news_id ";
$ res = mysql_query ($ query );
$ news_text = array ();
$ news_text = mysql_fetch_assoc ($ res );
return $ news_text;
}
/ * === Окрема новина === * /
/ * === Архів новин === * /
function get_all_news ($ start_pos, $ perpage ) {
$ query = " SELECT news_id, title, anons, date FROM news ORDER BY date DESC LIMIT $ start_pos, $ perpage ";
$ res = mysql_query ($ query );
$ all_news = array ();
while ($ row = mysql_fetch_assoc ($ res )) {
$ all_news [] = $ row;
}
return $ all_news;
}
/ * === Архів новин === * /
/ * === Кількість новин === * /
function count_news () {
$ query = " SELECT COUNT ( news_id ) FROM news ";
$ res = mysql_query ($ query );
$ count_news = mysql_fetch_row ($ res );
return $ count_news [0];
}
/ * === Кількість новин === * /
/ * === Інформери - отримання масиву === * /
function informer () {
$ query = " SELECT * FROM links
INNER JOIN informers ON
links.parent_informer = informers.informer_id
ORDER BY informer_position, links_position ";
$ res = mysql_query ($ query ) or die ( mysql_query ( ));
$ informers = array ();
$ name = ''; / / Прапор імені інформера
while ($ row = mysql_fetch_assoc ($ res )) {
if ($ row [' informer_name '] ! = $ name ) {
/ / якщо такого інформера в масиві ще немає
$ informers [$ row [' informer_id '] ] [ ] = $ row [' informer_name ']; / / Додаємо інформер в масив
$ name = $ row [' informer_name '];
}
$ informers [$ row [' parent_informer '] ] [' sub '] [$ row [' link_id '] ] = $ row [' link_name ']; / / Заносимо сторінки в інформер
}
return $ informers;
}
/ * === Інформери - отримання масиву === * /
/ * === Отримання тексту інформера === * /
function get_text_informer ($ informer_id ) {
$ query = " SELECT link_id, link_name, text, informers.informer_id, informers.informer_name
FROM links
LEFT JOIN informers ON informers.informer_id = links.parent_informer
WHERE link_id = $ informer_id ";
$ res = mysql_query ($ query );
$ text_informer = array ();
$ text_informer = mysql_fetch_assoc ($ res );
return $ text_informer;
}
/ * === Отримання тексту інформера === * /
/ * === Айстоппери - новинки, лідери продажів, розпродаж === * /
function eyestopper ($ eyestopper ) {
$ query = " SELECT goods_id, name, img, price FROM goods
WHERE visible = '1 ' AND $ eyestopper = '1 ' ";
$ res = mysql_query ($ query ) or die ( mysql_error ( ));
$ eyestoppers = array ();
while ($ row = mysql_fetch_assoc ($ res )) {
$ eyestoppers [] = $ row;
}
return $ eyestoppers;
}
/ * === Айстоппери - новинки, лідери продажів, розпродаж === * /
/ * === Отримання запланованого товарів для навігації === * /
function count_rows ($ category ) {
$ query = " ( SELECT COUNT ( goods_id ) as count_rows
FROM goods
WHERE goods_brandid = $ category AND visible = '1 ' )
UNION
( SELECT COUNT ( goods_id ) as count_rows
FROM goods
WHERE goods_brandid IN
(
SELECT brand_id FROM brands WHERE parent_id = $ category
) AND visible = '1 ') ";
$ res = mysql_query ($ query ) or die ( mysql_error ( ));
while ($ row = mysql_fetch_assoc ($ res )) {
if ($ row [' count_rows '] ) $ count_rows = $ row [' count_rows '];
}
return $ count_rows;
}
/ * === Отримання запланованого товарів для навігації === * /
/ * === Отримання масиву товарів по категорії === * /
function products ($ category, $ order_db, $ start_pos, $ perpage ) {
$ query = " ( SELECT goods_id, name, img, anons, price, hits, new, sale, date
FROM goods
WHERE goods_brandid = $ category AND visible = '1 ' )
UNION
(SELECT goods_id, name, img, anons, price, hits, new, sale, date
FROM goods
WHERE goods_brandid IN
(
SELECT brand_id FROM brands WHERE parent_id = $ category
) AND visible = '1 ' ) ORDER BY $ order_db LIMIT $ start_pos, $ perpage ";
$ res = mysql_query ($ query ) or die ( mysql_error ( ));
$ products = array ();
while ($ row = mysql_fetch_assoc ($ res )) {
$ products [] = $ row;
}
return $ products;
}
/ * === Отримання масиву товарів по категорії === * /
/ * === Отримання назв для хлібних крихт === * /
function brand_name ($ category ) {
$ query = " ( SELECT brand_id, brand_name FROM brands
WHERE brand_id =
(SELECT parent_id FROM brands WHERE brand_id = $ category )
)
UNION
(SELECT brand_id, brand_name FROM brands WHERE brand_id = $ category ) ";
$ res = mysql_query ($ query );
$ brand_name = array ();
while ($ row = mysql_fetch_assoc ($ res )) {
$ brand_name [] = $ row;
}
return $ brand_name;
}
/ * === Отримання назв для хлібних крихт === * /
/ * === Вибір за параметрами === * /
function filter ($ category, $ startprice, $ endprice ) {
$ products = array ();
if ($ category OR $ endprice ) {
$ predicat1 = " visible = '1 '";
if ($ category ) {
$ predicat1. = " AND goods_brandid IN ($ category )";
$ predicat2 = " UNION
(SELECT goods_id, name, img, price, hits, new, sale
FROM goods
WHERE goods_brandid IN
(
SELECT brand_id FROM brands WHERE parent_id IN ($ category )
) AND visible = '1 '";
if ($ endprice ) $ predicat2. = " AND price BETWEEN $ startprice AND $ endprice ";
$ predicat2. = " )";
}
if ($ endprice ) {
$ predicat1. = " AND price BETWEEN $ startprice AND $ endprice ";
}
$ query = " ( SELECT goods_id, name, img, price, hits, new, sale
FROM goods
WHERE $ predicat1 )
$ predicat2 ORDER BY name ";
$ res = mysql_query ($ query ) or die ( mysql_error ( ));
if ( mysql_num_rows ($ res )> 0 ) {
while ($ row = mysql_fetch_assoc ($ res )) {
$ products [] = $ row;
}
} else {
$ products [' notfound '] = " <div class='error'> За вказаними параметрами нічого не знайдено </ div > ";
}
} else {
$ products [' notfound '] = " <div class='error'> Ви не вказали параметри підбору </ div > ";
}
return $ products;
}
/ * === Вибір за параметрами === * /
/ * === Сума замовлення в кошику + атрибути товару === * /
function total_sum ($ goods ) {
$ total_sum = 0;
$ str_goods = implode (', ', array_keys ($ goods ));
$ query = " SELECT goods_id, name, price, img
FROM goods
WHERE goods_id IN ($ str_goods ) ";
$ res = mysql_query ($ query ) or die ( mysql_error ( ));
while ($ row = mysql_fetch_assoc ($ res )) {
$ _SESSION [' Cart '] [$ row [' goods_id '] ] [' name '] = $ row [' name '];
$ _SESSION [' Cart '] [$ row [' goods_id '] ] [' price '] = $ row [' price '];
$ _SESSION [' Cart '] [$ row [' goods_id '] ] [' img '] = $ row [' img '];
$ total_sum + = $ _SESSION [' cart '] [$ row [' goods_id '] ] [' qty '] * $ row [' price '];
}
return $ total_sum;
}
/ * === Сума замовлення в кошику + атрибути товару === * /
/ * === Реєстрація === * /
function registration () {
$ error = ''; / / Прапор перевірки порожніх полів
$ login = trim ($ _POST [' login '] );
$ pass = trim ($ _POST [' pass '] );
$ name = trim ($ _POST [' name '] );
$ email = trim ($ _POST [' email '] );
$ phone = trim ($ _POST [' phone '] );
$ address = trim ($ _POST [' address '] );
if ( empty ($ login ) ) $ error. = ' <li> Не вказаний логін </ li >';
if ( empty ($ pass ) ) $ error. = ' <li> Не вказаний пароль </ li >';
if ( empty ($ name ) ) $ error. = ' <li> Не вказано ПІБ </ li >';
if ( empty ($ email ) ) $ error. = ' <li> Не вказаний Email </ li >';
if ( empty ($ phone ) ) $ error. = ' <li> Не вказаний телефон </ li >';
if ( empty ($ address ) ) $ error. = ' <li> не вказано адреси </ li >';
if ( empty ($ error )) {
/ / Якщо всі поля заповнені
/ / Перевіряємо чи немає такого користувача в БД
$ query = " SELECT customer_id FROM customers WHERE login = '". clear ($ login ). " ' LIMIT 1 ";
$ res = mysql_query ($ query ) or die ( mysql_error ( ));
$ row = mysql_num_rows ($ res ); / / 1 - такий юзер є, 0 - немає
if ($ row ) {
/ / Якщо такий логін вже є
$ _SESSION [' Reg '] [' res '] = " <div class='error'> Користувач з таким логіном вже зареєстрований на сайті. Введіть інший логін. </ Div > ";
$ _SESSION [' Reg '] [' name '] = $ name;
$ _SESSION [' Reg '] [' email '] = $ email;
$ _SESSION [' Reg '] [' phone '] = $ phone;
$ _SESSION [' Reg '] [' addres '] = $ address;
} else {
/ / Якщо все ок - реєструємо
$ login = clear ($ login );
$ name = clear ($ name );
$ email = clear ($ email );
$ phone = clear ($ phone );
$ address = clear ($ address );
$ pass = md5 ($ pass );
$ query = " INSERT INTO customers ( name, email, phone, address, login, password )
VALUES ( '$ name ', '$ email ', '$ phone ', '$ address ', '$ login ', '$ pass ') ";
$ res = mysql_query ($ query ) or die ( mysql_error ( ));
if ( mysql_affected_rows ( )> 0 ) {
/ / Якщо запис додана
$ _SESSION [' Reg '] [' res '] = " <div class='success'> Реєстрація пройшла успішно. </ Div > ";
$ _SESSION [' Auth '] [' user '] = $ _POST [' name '];
$ _SESSION [' Auth '] [' customer_id '] = mysql_insert_id ();
$ _SESSION [' Auth '] [' email '] = $ email;
} else {
$ _SESSION [' Reg '] [' res '] = " <div class='error'> Помилка ! </ Div > ";
$ _SESSION [' Reg '] [' login '] = $ login;
$ _SESSION [' Reg '] [' name '] = $ name;
$ _SESSION [' Reg '] [' email '] = $ email;
$ _SESSION [' Reg '] [' phone '] = $ phone;
$ _SESSION [' Reg '] [' addres '] = $ address;
}
}
} else {
/ / Якщо не заповнені обов'язкові поля
$ _SESSION [' Reg '] [' res '] = " <div class='error'> Чи не заповнені обов'язкові поля: <ul> $ error </ ul > </ div > ";
$ _SESSION [' Reg '] [' login '] = $ login;
$ _SESSION [' Reg '] [' name '] = $ name;
$ _SESSION [' Reg '] [' email '] = $ email;
$ _SESSION [' Reg '] [' phone '] = $ phone;
$ _SESSION [' Reg '] [' addres '] = $ address;
}
}
/ * === Реєстрація === * /
/ * === Авторизація === * /
function authorization () {
$ login = mysql_real_escape_string ( trim ($ _POST [' login '] ));
$ pass = trim ($ _POST [' pass '] );
if ( empty ($ login ) OR empty ($ pass )) {
/ / Якщо порожні поля логін / пароль
$ _SESSION [' Auth '] [' error '] = " Поля логін / пароль повинні бути заповнені ! ";
} else {
/ / Якщо отримані дані з полів логін / пароль
$ pass = md5 ($ pass );
$ query = " SELECT customer_id, name, email FROM customers WHERE login = '$ login ' AND password = '$ pass ' LIMIT 1 ";
$ res = mysql_query ($ query ) or die ( mysql_error ( ));
if ( mysql_num_rows ($ res ) == 1 ) {
/ / Якщо авторизація успішна
$ row = mysql_fetch_row ($ res );
$ _SESSION [' Auth '] [' customer_id '] = $ row [0];
$ _SESSION [' Auth '] [' user '] = $ row [ 1 ];
$ _SESSION [' Auth '] [' email '] = $ row [ 2 ];
} else {
/ / Якщо невірний логін / пароль
$ _SESSION [' Auth '] [' error '] = " Логін / пароль введені невірно ! ";
}
}
}
/ * === Авторизація === * /
/ * === Способи доставки === * /
function get_dostavka () {
$ query = " SELECT * FROM dostavka ";
$ res = mysql_query ($ query );
$ dostavka = array ();
while ($ row = mysql_fetch_assoc ($ res )) {
$ dostavka [] = $ row;
}
return $ dostavka;
}
/ * === Способи доставки === * /
/ * === Додавання замовлення === * /
function add_order () {
/ / Отримуємо загальні дані для всіх ( авторизовані і не дуже)
$ dostavka_id = ( int ) $ _POST [' dostavka '];
if (! $ dostavka_id ) $ dostavka_id = 1;
$ prim = trim ($ _POST [' prim '] );
if ($ _SESSION [' auth '] [' user '] ) $ customer_id = $ _SESSION [' auth '] [' customer_id '];
if (! $ _SESSION [' auth '] [' user '] ) {
$ error = ''; / / Прапор перевірки порожніх полів
$ name = trim ($ _POST [' name '] );
$ email = trim ($ _POST [' email '] );
$ phone = trim ($ _POST [' phone '] );
$ address = trim ($ _POST [' address '] );
if ( empty ($ name ) ) $ error. = ' <li> Не вказано ПІБ </ li >';
if ( empty ($ email ) ) $ error. = ' <li> Не вказаний Email </ li >';
if ( empty ($ phone ) ) $ error. = ' <li> Не вказаний телефон </ li >';
if ( empty ($ address ) ) $ error. = ' <li> не вказано адреси </ li >';
if ( empty ($ error )) {
/ / Додаємо гостя в замовники ( але без даних авторизації )
$ customer_id = add_customer ($ name, $ email, $ phone, $ address );
if (! $ customer_id ) return false; / / Припиняємо виконання у разі виникнення помилки додавання гостя - замовника
} else {
/ / Якщо не заповнені обов'язкові поля
$ _SESSION [' Order '] [' res '] = " <div class='error'> Чи не заповнені обов'язкові поля: <ul> $ error </ ul > </ div > ";
$ _SESSION [' Order '] [' name '] = $ name;
$ _SESSION [' Order '] [' email '] = $ email;
$ _SESSION [' Order '] [' phone '] = $ phone;
$ _SESSION [' Order '] [' addres '] = $ address;
$ _SESSION [' Order '] [' prim '] = $ prim;
return false;
}
}
$ _SESSION [' Order '] [' email '] = $ email;
save_order ($ customer_id, $ dostavka_id, $ prim );
}
/ * === Додавання замовлення === * /
/ * === Додавання замовника - гостя === * /
function add_customer ($ name, $ email, $ phone, $ address ) {
$ name = clear ($ _POST [' name '] );
$ email = clear ($ _POST [' email '] );
$ phone = clear ($ _POST [' phone '] );
$ address = clear ($ _POST [' address '] );
$ query = " INSERT INTO customers ( name, email, phone, address )
VALUES ( '$ name ', '$ email ', '$ phone ', '$ address ') ";
$ res = mysql_query ($ query );
if ( mysql_affected_rows ( )> 0 ) {
/ / Якщо гість доданий в замовники - отримуємо його ID
return mysql_insert_id ();
} else {
/ / Якщо сталася помилка при додаванні
$ _SESSION [' Order '] [' res '] = " <div class='error'> Сталася помилка при реєстрації замовлення </ div > ";
$ _SESSION [' Order '] [' name '] = $ name;
$ _SESSION [' Order '] [' email '] = $ email;
$ _SESSION [' Order '] [' phone '] = $ phone;
$ _SESSION [' Order '] [' addres '] = $ address;
$ _SESSION [' Order '] [' prim '] = $ address;
return false;
}
}
/ * === Додавання замовника - гостя === * /
/ * === Збереження замовлення === * /
function save_order ($ customer_id, $ dostavka_id, $ prim ) {
$ prim = clear ($ prim );
$ query = " INSERT INTO orders (` customer_id `, ` date `, ` dostavka_id `, ` prim `)
VALUES ($ customer_id, NOW ( ), $ dostavka_id, '$ prim ') ";
mysql_query ($ query ) or die ( mysql_error ( ));
if ( mysql_affected_rows ( ) == -1 ) {
/ / Якщо не вийшло зберегти замовлення - видаляємо замовника
mysql_query ( " DELETE FROM customers
WHERE customer_id = $ customer_id AND login = '' " );
return false;
}
$ order_id = mysql_insert_id (); / / ID збереженого замовлення
foreach ($ _SESSION [' cart '] as $ goods_id => $ value ) {
$ val. = " ($ order_id, $ goods_id, {$ value [' qty '] }, ' {$ value [' name '] }', {$ value [' price '] } ), ";
}
$ val = substr ($ val, 0, -1 ); / / Видаляємо останню кому
$ query = " INSERT INTO zakaz_tovar ( orders_id, goods_id, quantity, name, price )
VALUES $ val ";
mysql_query ($ query ) or die ( mysql_error ( ));
if ( mysql_affected_rows ( ) == -1 ) {
/ / Якщо не вивантажився замовлення - видаляємо замовника ( customers ) і замовлення ( orders )
mysql_query ( " DELETE FROM orders WHERE order_id = $ order_id " );
mysql_query ( " DELETE FROM customers
WHERE customer_id = $ customer_id AND login = '' " );
return false;
}
if ($ _SESSION [' auth '] [' email '] ) $ email = $ _SESSION [' auth '] [' email '];
else $ email = $ _SESSION [' order '] [' email '];
mail_order ($ order_id, $ email );
/ / Якщо замовлення вивантажився
unset ($ _SESSION [' cart '] );
unset ($ _SESSION [' total_sum '] );
unset ($ _SESSION [' total_quantity '] );
$ _SESSION [' Order '] [' res '] = " <div class='success'> Спасибо за Ваше замовлення. Найближчим часом з Вами зв'яжеться менеджер для узгодження замовлення. </ Div > ";
return true;
}
/ * === Збереження замовлення === * /
/ * === Відправка повідомлень про замовлення на email === * /
function mail_order ($ order_id, $ email ) {
/ / mail ( to, subject, body, header );
/ / Тема листа
$ subject = " Замовлення в інтернет- магазині";
/ / Заголовки
$ headers. = " Content- type: text / plain; charset = utf - 8 \ r \ n ";
$ headers. = " From: ISHOP ";
/ / Тіло листа
$ mail_body = " Дякуємо Вам за замовлення! \ r \ nНомер Вашого замовлення - {$ order_id }
\ r \ n \ r \ nЗаказанние товари: \ r \ n ";
/ / Атрибути товару
foreach ($ _SESSION [' cart '] as $ goods_id => $ value ) {
$ mail_body. = " Найменування: {$ value [' name '] }, Ціна: {$ value [' price '] }, Кількість: {$ value [' qty '] } шт. \ r \ n ";
}
$ mail_body. = "\ r \ nІтого: {$ _SESSION [' total_quantity '] } на суму: {$ _SESSION [' total_sum '] } ";
/ / Відправлення листів
mail ($ email, $ subject, $ mail_body, $ headers );
mail ( ADMIN_EMAIL, $ subject, $ mail_body, $ headers );
}
/ * === Відправка повідомлень про замовлення на email === * /
/ * === Пошук === * /
function search () {
$ search = clear ($ _GET [' search '] );
$ result_search = array (); / / результат пошуку
if ( mb_strlen ($ search, ' UTF- 8') < 4 ) {
$ result_search [' notfound '] = " <div class='error'> Пошуковий запит повинен містити не менше 4 -х символів </ div > ";
} else {
$ query = " SELECT goods_id, name, img, price, hits, new, sale
FROM goods
WHERE MATCH ( name ) AGAINST (' {$ search } * ' IN BOOLEAN MODE ) AND visible = '1 '";
$ res = mysql_query ($ query ) or die ( mysql_error ( ));
if ( mysql_num_rows ($ res )> 0 ) {
while ($ row_search = mysql_fetch_assoc ($ res )) {
$ result_search [] = $ row_search; }
} else {
$ result_search [' notfound '] = " <div class='error'> За Вашим запитом нічого не знайдено </ div > ";
}
}
return $ result_search;
}
/ * === Пошук === * /
/ * === Окремий товар === * /
function get_goods ($ goods_id ) {
$ query = " SELECT * FROM goods WHERE goods_id = $ goods_id AND visible = '1 '";
$ res = mysql_query ($ query );
$ goods = array ();
$ goods = mysql_fetch_assoc ($ res );
if ($ goods [' img_slide '] ) {
$ goods [' img_slide '] = explode ( "|", $ goods [' img_slide '] );
}
return $ goods;
}
/ * === Окремий товар === * /
Размещено на Allbest.ru
Подобные документы
Вибір методів та засобів створення інформаційної системи для обліку і перегляду продукції на складі. Розробка моделі даних для реляційної бази даних, прикладного програмного забезпечення. Тестування програмного додатку, виявлення можливих проблем.
курсовая работа [1,1 M], добавлен 22.09.2015Проектування програми з метою автоматизації обліку продажу квитків на автостанції та отримання потрібної інформації. Розробка структур та вибір методів обробки даних. Алгоритми функціонування програмних модулів, забезпечення якісних показників їх роботи.
курсовая работа [1,2 M], добавлен 07.01.2012Створення інформаційної системи для магазинів, які займаються реалізацією музичної продукції. Проектування моделі "сутність-зв'язок" (ER-модель) та на її основі розробка реляційної моделі бази даних. Інструкція для користувача програмним продуктом.
курсовая работа [2,4 M], добавлен 08.09.2012Проектування бази даних предметної області "Магазин будівельних матеріалів". Аналіз сукупності вхідних і вихідних даних, шляхи удосконалення інформаційної системи обліку товару. Організація інформаційної бази, розробка логічної і фізичної моделі.
курсовая работа [559,2 K], добавлен 09.05.2016Розробка інформаційної системи, що містить дані про товари, їх поставку і доставку за допомогою моделі "Сутність-зв'язок". Вибір засобів її реалізації Структурна схема реляційної бази даних та таблиці БД. Інструкція для користувача програмним продуктом.
курсовая работа [2,4 M], добавлен 19.06.2013Автоматизування процесу надходження та продажу товарів магазину за допомогою розробки баз даних (на прикладі магазину з продажу матеріалів для творчості). Вимоги до інформаційного забезпечення. Властивості концептуальної моделі програмного забезпечення.
курсовая работа [1,6 M], добавлен 29.12.2013Використання баз даних та програмних систем для автоматизованої інформаційної системи обліку та обслуговування електричних силових підстанцій. Розробка такого програмного забезпечення для спрощення та пришвидшення дій енергопостачальної компанії.
дипломная работа [449,2 K], добавлен 25.06.2017Обґрунтування потреби, поняття, класифікація, проектування та етапи розробки веб-сайту. Вибір програмних засобів, розробка інтерфейса і бази даних. Динамічна мова розмітки гіпертекстових документів DHTML. Розміщення категорій товарів в on-line магазині.
дипломная работа [1,5 M], добавлен 04.08.2009Автоматизовані інформаційні системи: поняття та внутрішня структура, розробка її інфологічної, даталогічної та програмувальної моделі. Застосування мови UML до проектування інформаційної системи. Етапи налагодження та тестування розробленої програми.
курсовая работа [1,4 M], добавлен 26.09.2015Розробка автоматизованого робочого місця начальника курсу ВВНЗ в програмному середовищі Borland Delphi. Реалізація головного меню програми та додаткової панелі управління. Таблиця з інформацією про спортсмена. Алгоритм роботи інформаційної системи.
курсовая работа [777,6 K], добавлен 19.05.2014