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

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

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык украинский
Дата добавления 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


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

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