Программная разработка интернет-магазина Deluxe

Основные конструкции языков программирования JavaScript и PHP. Анализ инструмента для визуального проектирования баз данных MySQL Workbench. Методы создания динамических Web-сайтов с применением технологии Ajax на примере интернет-магазина "Deluxe".

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

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

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

<script src="js/show_one_goods.js"></script>

<script src="js/show_basket.js"></script>

<script src="js/add_to_basket.js"></script>

<script src="js/add_to_order.js"></script>

</body>

</html>

// ------------------------------------------------------------------------

// Система: "Интернет-магазин Deluxe"

// Модуль: main.js

// Автор: Ермаков А.А.

// Дата: 22.05.2020

// Версия: 0.5

// ------------------------------------------------------------------------

let link = document.getElementsByClassName ( "nav_link" );

let basket_count = document.getElementsByClassName ( "basket_count" );

let main = document.getElementsByClassName ( "main_block_img" );

let about = document.getElementsByClassName ( "main_block_about" );

let vakancy = document.getElementsByClassName ( "main_block_vakancy" );

let questions = document.getElementsByClassName ( "main_block_questions" );

let add_questions = document.getElementsByClassName ( "add_questions" );

let bayer = document.getElementsByClassName ( "main_block_bayer" );

let delivery = document.getElementsByClassName ( "main_block_delivery" );

let contacts = document.getElementsByClassName ( "main_block_contacts" );

let block_search = document.getElementsByClassName ( "block_search" );

let block_one_goods = document.getElementsByClassName ("block_one_goods" );

let block_order_conteiner = document.getElementsByClassName (

"block_order_conteiner" );

//переход в корзину

let basket_img = document.getElementById("basket_img").onclick = function () {

show_basket();

};

//переход по ссылкам

for ( let i = 0; i < link.length; i++ ) {

link[i].addEventListener ( "click", onClickLink );

}

function onClickLink ( ventObject ) {

let elementTarget = eventObject.currentTarget;

let el = elementTarget.innerHTML;

switchLink ( el );

}

function switchLink ( el_value ) {

switch ( el_value ) {

case 'Главная': {

main[0].style.display = 'flex';

about[0].style.display = 'none';

vakancy[0].style.display = 'none';

questions[0].style.display = 'none';

add_questions[0].style.display = 'none';

bayer[0].style.display = 'none';

delivery[0].style.display = 'none';

contacts[0].style.display = 'none';

block_search[0].style.display = 'none';

block_one_goods[0].style.display = 'none';

block_order_conteiner[0].style.display = 'none';

break;

}

case 'О компании': {

main[0].style.display = 'none';

about[0].style.display = 'flex';

vakancy[0].style.display = 'none';

questions[0].style.display = 'none';

add_questions[0].style.display = 'none';

bayer[0].style.display = 'none';

delivery[0].style.display = 'none';

contacts[0].style.display = 'none';

block_search[0].style.display = 'none';

block_one_goods[0].style.display = 'none';

block_order_conteiner[0].style.display = 'none';

break;

}

case 'Вакансии': {

main[0].style.display = 'none';

about[0].style.display = 'none';

vakancy[0].style.display = 'flex';

questions[0].style.display = 'none';

add_questions[0].style.display = 'none';

bayer[0].style.display = 'none';

delivery[0].style.display = 'none';

contacts[0].style.display = 'none';

block_search[0].style.display = 'none';

block_one_goods[0].style.display = 'none';

block_order_conteiner[0].style.display = 'none';

block_order_conteiner[0].style.display = 'none';

break;

}

case 'Вопрос-ответ': {

main[0].style.display = 'none';

about[0].style.display = 'none';

vakancy[0].style.display = 'none';

questions[0].style.display = 'flex';

add_questions[0].style.display = 'none';

bayer[0].style.display = 'none';

delivery[0].style.display = 'none';

contacts[0].style.display = 'none';

block_search[0].style.display = 'none';

block_one_goods[0].style.display = 'none';

block_order_conteiner[0].style.display = 'none';

break;

}

case 'Задать вопрос': {

main[0].style.display = 'none';

about[0].style.display = 'none';

vakancy[0].style.display = 'none';

questions[0].style.display = 'none';

add_questions[0].style.display = 'flex';

bayer[0].style.display = 'none';

delivery[0].style.display = 'none';

contacts[0].style.display = 'none';

block_search[0].style.display = 'none';

block_one_goods[0].style.display = 'none';

block_order_conteiner[0].style.display = 'none';

break;

}

case 'Покупателю': {

main[0].style.display = 'none';

about[0].style.display = 'none';

vakancy[0].style.display = 'none';

questions[0].style.display = 'none';

add_questions[0].style.display = 'none';

bayer[0].style.display = 'flex';

delivery[0].style.display = 'none';

contacts[0].style.display = 'none';

block_search[0].style.display = 'none';

block_one_goods[0].style.display = 'none';

block_order_conteiner[0].style.display = 'none';

break;

}

case 'Доставка': {

main[0].style.display = 'none';

about[0].style.display = 'none';

vakancy[0].style.display = 'none';

questions[0].style.display = 'none';

add_questions[0].style.display = 'none';

bayer[0].style.display = 'none';

delivery[0].style.display = 'flex';

contacts[0].style.display = 'none';

block_search[0].style.display = 'none';

block_one_goods[0].style.display = 'none';

block_one_goods[0].style.display = 'none';

block_order_conteiner[0].style.display = 'none';

break;

}

case 'Контакты': {

main[0].style.display = 'none';

about[0].style.display = 'none';

vakancy[0].style.display = 'none';

questions[0].style.display = 'none';

add_questions[0].style.display = 'none';

bayer[0].style.display = 'none';

delivery[0].style.display = 'none';

contacts[0].style.display = 'flex';

block_search[0].style.display = 'none';

block_one_goods[0].style.display = 'none';

block_order_conteiner[0].style.display = 'none';

break;

}

default: {

console.log ( 'Что-то пошло не так' );

break;

}

}

}

// search

let btnSearch = document.getElementsByClassName ( "btn_search" );

let inputSearch = document.getElementsByClassName ( "input_search" );

let searchTitle = document.getElementById ( "search_title" );

btnSearch[0].addEventListener ( "click", search );

//выпадающий список

let select = document.getElementById ( "select" );

select.addEventListener ( "change", change_option );

//берем id категории

let id_option = 0; //индекс элемента option

function change_option () {

id_option = select.selectedIndex;

}

//поиск

function search () {

main[0].style.display = 'none';

about[0].style.display = 'none';

vakancy[0].style.display = 'none';

questions[0].style.display = 'none';

add_questions[0].style.display = 'none';

bayer[0].style.display = 'none';

delivery[0].style.display = 'none';

contacts[0].style.display = 'none';

block_search[0].style.display = 'flex';

block_one_goods[0].style.display = 'none';

block_order_conteiner[0].style.display = 'none';

getResponse ();

}

//вывод из базы по запросу

async function getResponse () {

let response_goods = await fetch ( 'search_goods.php' );

let content_g = await response_goods.json ();

let response_category = await fetch ( 'search_category.php' );

let content_c = await response_category.json ();

//html поиска по запросу

function html_search_create () {

html += "<div class='block_search_item'>";

html += `<a class="catalog_item_name"

href="#">${content_g[key].name}</a>`;

html += `<a class="catalog_item_category"

href="#">${content_c[content_g[key].id_categories

- 1].category}</a>`;

html += `<a class="link_one_goods" linkOneGoods="${content_g[key].id}"

href="#"><img class="catalog_item_img" src=

"${content_g[key].image}" alt=""></a>`;

html += `<div class="catalog_item_price">Цена: ${content_g[key].price}

руб.</div></div>`;

}

let data = document.querySelector ( '#data' );

let html = "";

searchTitle.innerHTML = `Поиск[${inputSearch[0].value}]`;

let key;

let word = inputSearch[0].value;

let regexp = RegExp(word, "ig");

for (key in content_g) {

if (word == "") {

if (id_option == 0) {

html_search_create ();

} else if ( content_g[key].id_categories == id_option ) {

html_search_create ();

}

} else if (id_option == 0 && regexp.test(content_g[key].name)) {

html_search_create ();

} else if ( regexp.test ( content_g[key].name) && content_g[key].id_categories ==

id_option ) {

html_search_create ();

}

}

data.innerHTML = html;

get_link_one_goods ();

}

//подсчет символов в textarea

let countSymbols = document.getElementById ( "countSymbols" );

let textarea = document.getElementById ( "quest" );

textarea.onkeyup = function () {

countSymbols.innerHTML = textarea.value.length;

}

//текущий куки

function getCookie ( x ) {

let matches = document.cookie.match ( new RegExp("(?:^|; )" +

x.replace ( /([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1' ) + "=([^;]*)" ) );

return matches ? decodeURIComponent ( matches[1] ) : undefined;

}

// ------------------------------------------------------------------------

// Система: "Интернет-магазин Deluxe"

// Модуль: add_to_basket.js

// Автор: Ермаков А.А.

// Дата: 22.05.2020

// Версия: 0.5

// ------------------------------------------------------------------------

let btn_add_to_basket = document.getElementById ( "btn_add_to_basket" );

btn_add_to_basket.addEventListener ( "click", funAddToBasket );

//добавляем товар в корзину

function funAddToBasket () {

let count_goods = count.value;

let id_goods_b = id_goods_bas.value;

let id_user_b = id_user.value;

fetch('add_to_basket.php', {

method: 'post',

headers: {

"Content-type": "application/x-www-form-urlencoded; charset=UTF-8"

},

body: `count=${count_goods}&id_user=${id_user_b}&id_goods=${id_goods_b}`

});

getCountInBasket ();

}

//запрос количество товаров в корзине

async function getCountInBasket () {

let summ = document.getElementById ( "summ" );

let response_count = await fetch ( 'search_basket.php' );

let content_count = await response_count.json ();

let response_g = await fetch ( 'search_goods.php' );

let content_g = await response_g.json ();

let key;

let total_summ = 0;

let c = 0; //счетчик количества товаров в корзине по id

for (key in content_count) {

if ( content_count[key].id_user == getCookie ( 'id' ) ) {

c += parseInt(content_count[key].count );

//подсчет суммы

total_summ += parseInt ( content_g[content_count[key].id_goods -

1].price) *

parseInt(content_count[key].count );

}

}

basket_count[0].value = c;

summ.innerHTML = total_summ + " руб.";

}

getCountInBasket ();

// ------------------------------------------------------------------------

// Система: "Интернет-магазин Deluxe"

// Модуль: add_to_order.js

// Автор: Ермаков А.А.

// Дата: 22.05.2020

// Версия: 0.5

// ------------------------------------------------------------------------

let btn_send_order = document.getElementsByClassName ( "btn_send_order" );

btn_send_order[0].addEventListener ( "click", funAddToOrder );

let order_delivery_address = document.getElementById (

"order_delivery_address" );

let order_note = document.getElementById ( "order_note" );

//добавляем заявку

async function funAddToOrder () {

let response_basket = await fetch ( 'search_basket.php' );

let content_basket = await response_basket.json ();

for ( key in content_basket ) {

if (content_basket[key].id_user == getCookie ( 'id' ) ) {

let count_goods = content_basket[key].count;

let id_user = content_basket[key].id_user;

let id_goods = content_basket[key].id_goods;

let payment = 1; //1 - наличными 0 - картой

let delivery = 1; //1 - доставка на дом 0 - самовывоз

if ( radio1[0].checked ) {

payment = 1;

} else {

payment = 0;

}

if ( radio2[0].checked) {

delivery = 1;

} else {

delivery = 0;

}

let delivery_address = order_delivery_address.value;

let note = order_note.value;

fetch ('add_to_order.php', {

method: 'post',

headers: {

"Content-type": "application/x-www-form-urlencoded; charset=UTF-8"

},

body: `count=${count_goods}&id_user=${id_user}&id_goods=${id_goods}

&payment=${payment}&delivery=${delivery}&delivery_address=

${delivery_address} &note=${note}`

} );

}

}

}

// ------------------------------------------------------------------------

// Система: "Интернет-магазин Deluxe"

// Модуль: modal_form.js

// Автор: Ермаков А.А.

// Дата: 22.05.2020

// Версия: 0.5

// ------------------------------------------------------------------------

let conteiner = document.getElementsByClassName ( "conteiner" )[0];

let btn = document.getElementsByClassName ( "btn_registr" )[0];

let span = document.getElementsByClassName ( "close" )[0];

span.onclick = function () {

conteiner.style.display = "block";

}

// ------------------------------------------------------------------------

// Система: "Интернет-магазин Deluxe"

// Модуль: show_basket.js

// Автор: Ермаков А.А.

// Дата: 22.05.2020

// Версия: 0.5

// ------------------------------------------------------------------------

let order_name = document.getElementById ( "order_name" );

let order_surname = document.getElementById ( "order_surname" );

let order_phone = document.getElementById ( "order_phone" );

let order_email = document.getElementById ( "order_email" );

let label_delivery = document.getElementById ( "label_delivery" );

let label_total = document.getElementById ( "label_total" );

let radio1 = document.getElementsByClassName ( "block_order_radio1" );

let radio2 = document.getElementsByClassName ( "block_order_radio2" );

for ( let i = 0; i < radio2.length; i++ ) {

radio2[i].addEventListener ( "change", changeRadio2 );

}

//отображение стоимости доставки

function changeRadio2() {

if ( radio2[0].checked ) {

label_delivery.innerHTML = "250 руб.";

label_total.innerHTML = summa_total + 250 + " руб.";

} else {

label_delivery.innerHTML = "0 руб.";

label_total.innerHTML = summa_total + " руб.";

}

};

let summa_total = 0;

function show_basket () {

main[0].style.display = 'none';

about[0].style.display = 'none';

vakancy[0].style.display = 'none';

questions[0].style.display = 'none';

add_questions[0].style.display = 'none';

bayer[0].style.display = 'none';

delivery[0].style.display = 'none';

contacts[0].style.display = 'none';

block_search[0].style.display = 'none';

block_one_goods[0].style.display = 'none';

block_order_conteiner[0].style.display = 'none';

block_order_conteiner[0].style.display = 'flex';

get_basket_by_id ();

}

let arr_IdBasket = [];

//отображение товаров из корзины

async function get_basket_by_id (c_id ) {

let response_basket = await fetch ( 'search_basket.php' );

let content_bas = await response_basket.json ();

let response_goods = await fetch ( 'search_goods.php' );

let goods = await response_goods.json ();

//html содержимого корзины

function html_basket_fill () {

html += `<tr>`;

html += `<td class="td_order_table">${number}</td>`;

html += `<td class="td_order_table">${goods[content_bas[key].id_goods -

1].article}</td>`;

html += `<td class="td_order_table">${goods[content_bas[key].id_goods -

1].name}<br>Цвет: ${goods[content_bas[key].id_goods - 1].color}</td>`;

html += `<td class="td_order_table">${goods[content_bas[key].id_goods -

1].dimensions}</td>`;

html += `<td class="td_order_table">${goods[content_bas[key].id_goods -

1].price} руб.</td>`;

html += `<td class="td_order_table"><input class="input_number"

type="number" style="width: 50px;" min="1" value =

"${content_bas[key].count}"></td>`;

html += `<td class="td_order_table">${summa} руб.</td>`;

html += `<td><input class="input_checkbox" type="checkbox"></td>`;

html += `</tr>`;

}

let data = document.querySelector ( '.tbody_order_table' );

let html = "";

let key;

let number = 0;

let summa = 0;

summa_total = 0;

arr_IdBasket = [];

for (key in content_bas) {

if (content_bas[key].id_user == getCookie ( 'id' )) {

number++;

summa = parseInt(goods[content_bas[key].id_goods - 1].price) *

parseInt ( content_bas[key].count );

summa_total += summa;

arr_IdBasket.push(content_bas[key].id);

html_basket_fill ();

}

}

data.innerHTML = html;

label_total.innerHTML = summa_total + 250 + " руб.";

//заполнение текстовых полей в заявке

let response_users = await fetch ( 'search_user.php' );

let user = await response_users.json ();

for (key in user) {

if (user[key].id == getCookie ( 'id' )) {

order_name.value = user[key].name;

order_surname.value = user[key].surname;

order_phone.value = user[key].phone;

order_email.value = user[key].email;

}

}

}

//пересчет заявки (изменение количества и суммы)

let btn_recalculate = document.getElementById ( "btn_recalculate" );

btn_recalculate.addEventListener ( "click", recalculate );

let input_number = document.getElementsByClassName ("input_number");

let input_checkbox = document.getElementsByClassName("input_checkbox");

function recalculate() {

//проверяем галочки на удаление или изменение количества

for ( let i = 0; i < arr_IdBasket.length; i++ ) {

if ( input_checkbox[i].checked ) {

fetch ( 'delete_from_basket.php', {

method: 'post',

headers: {

"Content-type": "application/x-www-form-urlencoded; charset=UTF-8"

},

body: `id_basket=${arr_IdBasket[i]}`

});

} else {

fetch ( 'update_basket.php', {

method: 'post',

headers: {

"Content-type": "application/x-www-form-urlencoded; charset=UTF-8"

},

body: `id_basket=${arr_IdBasket[i]}&count=${input_number[i].value}`

});

}

}

get_basket_by_id();

getCountInBasket();

}

// ------------------------------------------------------------------------

// Система: "Интернет-магазин Deluxe"

// Модуль: show_categories.js

// Автор: Ермаков А.А.

// Дата: 22.05.2020

// Версия: 0.5

// ------------------------------------------------------------------------

let sideLink = document.getElementsByClassName ( "sidebar_item" );

let categ_id = 0;

for ( let i = 0; i < sideLink.length; i++ ) {

sideLink[i].addEventListener ( "click", showGoods );

}

//отображение модуля всех товаров

function showGoods ( el ) {

main[0].style.display = 'none';

about[0].style.display = 'none';

vakancy[0].style.display = 'none';

questions[0].style.display = 'none';

add_questions[0].style.display = 'none';

bayer[0].style.display = 'none';

delivery[0].style.display = 'none';

contacts[0].style.display = 'none';

block_search[0].style.display = 'flex';

block_one_goods[0].style.display = 'none';

block_order_conteiner[0].style.display = 'none';

let element = el.currentTarget;

let cur_category = element.getAttribute ( "linkCateg" );

categ_id = cur_category;

showCategory ( categ_id );

}

//отображение товаров по категориям

async function showCategory ( c_id ) {

let response_goods = await fetch ( 'search_goods.php' );

let goods = await response_goods.json ();

let response_category = await fetch ( 'search_category.php' );

let content_c = await response_category.json ();

//html поиска по запросу

function html_search_create () {

html += "<div class='block_search_item'>";

html += `<a class="catalog_item_name" href="#">${goods[key].name}</a>`;

html += `<a class="catalog_item_category" href="#">${content_c[c_id -

1].category}</a>`;

html += `<a class="link_one_goods" linkOneGoods="${goods[key].id}"

href="#"><img class="catalog_item_img" src="${goods[key].image}"

alt=""></a>`;

html += `<div class="catalog_item_price">Цена: ${goods[key].price}

руб.</div></div>`;

}

let data = document.querySelector ( '#data' );

let html = "";

searchTitle.innerHTML = sideLink[c_id - 1].innerHTML;

let key;

for ( key in goods ) {

if ( goods[key].id_categories == c_id ) {

html_search_create ();

}

}

data.innerHTML = html;

get_link_one_goods ();

}

// ------------------------------------------------------------------------

// Система: "Интернет-магазин Deluxe"

// Модуль: show_one_goods.js

// Автор: Ермаков А.А.

// Дата: 22.05.2020

// Версия: 0.5

// ------------------------------------------------------------------------

let linkOneGoods;//ссылка на отдельный товар

//собираем все элементы link_one_goods

function get_link_one_goods () {

linkOneGoods = document.getElementsByClassName ( "link_one_goods" );

for ( let i = 0; i < linkOneGoods.length; i++ ) {

linkOneGoods[i].addEventListener ( "click", showOneGoods );

}

}

get_link_one_goods ();

let one_goods_img = document.getElementsByClassName ( "one_goods_img" );

let one_goods_name = document.getElementById ( "one_goods_name" );

let one_goods_article = document.getElementById ( "one_goods_article" );

let one_goods_weight = document.getElementById ( "one_goods_weight" );

let one_goods_dimensions = document.getElementById( "one_goods_dimensions" );

let one_goods_color = document.getElementById ( "one_goods_color" );

let one_goods_price = document.getElementById ( "one_goods_price" );

let one_goods_description = document.getElementById("one_goods_description");

let id_goods = 0;//id товара

for ( let i = 0; i < linkOneGoods.length; i++ ) {

linkOneGoods[i].addEventListener ( "click", showOneGoods );

}

function showOneGoods(el) {

main[0].style.display = 'none';

about[0].style.display = 'none';

vakancy[0].style.display = 'none';

questions[0].style.display = 'none';

add_questions[0].style.display = 'none';

bayer[0].style.display = 'none';

delivery[0].style.display = 'none';

contacts[0].style.display = 'none';

block_search[0].style.display = 'none';

block_one_goods[0].style.display = 'flex';

block_order_conteiner[0].style.display = 'none';

let element = el.currentTarget;

let cur_goods = element.getAttribute("linkOneGoods");

id_goods = cur_goods;

getOneGoods ( id_goods );

}

//отображение одного товара отдельно

async function getOneGoods ( g_id ) {

let response_goods = await fetch ('search_goods.php' );

let goods = await response_goods.json ();

one_goods_img[0].src = goods[g_id - 1].image;

one_goods_name.innerHTML = goods[g_id - 1].name;

one_goods_article.innerHTML = goods[g_id - 1].article;

one_goods_weight.innerHTML = goods[g_id - 1].weight;

one_goods_dimensions.innerHTML = goods[g_id - 1].dimensions;

one_goods_color.innerHTML = goods[g_id - 1].color;

one_goods_price.innerHTML = goods[g_id - 1].price + " руб.";

one_goods_description.innerHTML = goods[g_id - 1].description;

let id_goods = document.getElementById ( "id_goods_bas" );

id_goods.value = g_id; //id товара

let id_user = document.getElementById ( "id_user" );

id_user.value = getCookie ( 'id' ); //id текущего пользователя

}

// ------------------------------------------------------------------------

// Система: "Интернет-магазин Deluxe"

// Модуль: db.php

// Автор: Ермаков А.А.

// Дата: 22.05.2020

// Версия: 0.5

// ------------------------------------------------------------------------

<?php

$conn = new mysqli('localhost', 'root', 'root', 'furniture');

//получение всех категорий

function get_categories ()

{

global $conn;

$result = $conn->query ( "SELECT * FROM categories" );

return $result;

}

//получение категории по id

function get_category_by_id ( $id )

{

global $conn;

$result = $conn->query ("SELECT category FROM categories WHERE id = $id");

foreach ($result as $res) {

return $res;

}

}

//получение всех адресов магазинов

function get_markets ()

{

global $conn;

$result = $conn->query ( "SELECT * FROM markets" );

return $result;

}

//получение всех товаров

function get_all_goods ()

{

global $conn;

$result = $conn->query ( "SELECT * FROM goods" );

return $result;

}

//получение всех вопросов

function get_all_questions ()

{

global $conn;

$result = $conn->query ( "SELECT * FROM questions" );

return $result;

}

//$conn->close ();

?>

// ------------------------------------------------------------------------

// Система: "Интернет-магазин Deluxe"

// Модуль: update_quest.php

// Автор: Ермаков А.А.

// Дата: 22.05.2020

// Версия: 0.5

// ------------------------------------------------------------------------

<?php

$conn = new mysqli ( 'localhost', 'root', 'root', 'furniture');

if ( isset( $_POST['submit'] ) ) {

$title = filter_var ( trim ( $_POST['title'] ), FILTER_SANITIZE_STRING );

$question = filter_var(trim($_POST['question']), FILTER_SANITIZE_STRING );

$name = filter_var ( trim ( $_POST['name'] ), FILTER_SANITIZE_STRING );

$email = filter_var(trim($_POST['email']), FILTER_SANITIZE_STRING);

$date = date ( "Y/m/d" );

if ( !empty ( $title ) && !empty ( $question ) && !empty ( $name )) {

$conn->query ( "INSERT INTO `questions` ( `title`, `question`, `name`,

`email`, `date`) VALUES ('$title', '$question', '$name',

'$email', '$date' )");

$conn->close();

header ( 'Location: ../main.php' );

exit ();

} else {

echo 'Заполните поля';

}

}

?>

// ------------------------------------------------------------------------

// Система: "Интернет-магазин Deluxe"

// Модуль: add_to_basket.php

// Автор: Ермаков А.А.

// Дата: 22.05.2020

// Версия: 0.5

// ------------------------------------------------------------------------

<?php

$conn = new mysqli('localhost', 'root', 'root', 'furniture');

$count = filter_var ( trim( $_POST['count']), FILTER_SANITIZE_STRING );

$id_user = filter_var( trim( $_POST['id_user']), FILTER_SANITIZE_STRING );

$id_goods = filter_var( trim( $_POST['id_goods']), FILTER_SANITIZE_STRING );

$conn->query ( "INSERT INTO `basket` ( `count`, `id_user`, `id_goods` )

VALUES ('$count', '$id_user', '$id_goods' )" );

$conn->close ();

header ( 'Location: main.php' );

exit();

?>

// ------------------------------------------------------------------------

// Система: "Интернет-магазин Deluxe"

// Модуль: add_to_order.php

// Автор: Ермаков А.А.

// Дата: 22.05.2020

// Версия: 0.5

// ------------------------------------------------------------------------

<?php

$conn = new mysqli ( 'localhost', 'root', 'root', 'furniture' );

$count = filter_var ( trim ( $_POST['count']), FILTER_SANITIZE_STRING );

$id_user = filter_var ( trim ( $_POST['id_user']), FILTER_SANITIZE_STRING );

$id_goods = filter_var ( trim ( $_POST['id_goods']), FILTER_SANITIZE_STRING);

$payment = filter_var( trim ( $_POST['payment']), FILTER_SANITIZE_STRING );

$delivery = filter_var ( trim ( $_POST['delivery']), FILTER_SANITIZE_STRING);

$delivery_address = filter_var ( trim ( $_POST['delivery_address'] ),

FILTER_SANITIZE_STRING);

$note = filter_var ( trim ( $_POST['note']), FILTER_SANITIZE_STRING );

$date = date ( "Y/m/d" );

$conn->query ( "INSERT INTO `orders` ( `count`, `payment`, `delivery`,

`delivery_address`, `date`, `note`, `id_user`, `id_goods`)

VALUES ('$count', '$payment', '$delivery',

'$delivery_address', '$date', '$note', '$id_user',

'$id_goods')" );

$conn->close ();

header ( 'Location: main.php' );

exit ();

?>

// ------------------------------------------------------------------------

// Система: "Интернет-магазин Deluxe"

// Модуль: authorisation.php

// Автор: Ермаков А.А.

// Дата: 22.05.2020

// Версия: 0.5

// ------------------------------------------------------------------------

<?php

$conn = new mysqli ( 'localhost', 'root', 'root', 'furniture' );

if ( isset( $_POST['submit']) ) {

$login = filter_var ( trim ( $_POST['login']), FILTER_SANITIZE_STRING );

$pass = filter_var( trim ( $_POST['pass']), FILTER_SANITIZE_STRING );

if ( !empty( $login ) && !empty ( $pass )) {

$data = $conn->query ( "SELECT `id`, `name` FROM users WHERE login = '$login' AND pass = SHA ( '$pass' )" );

if ( mysqli_num_rows ( $data ) == 1 ) {

$row = mysqli_fetch_assoc ( $data );

setcookie ( 'id', $row['id'], time () + (60 * 60 * 24 * 30 ));

setcookie ( 'name', $row['name'], time () + (60 * 60 * 24 * 30 ));

header ( 'Location: main.php' );

//echo $_COOKIE['name'];

//$conn->close ();

//exit ();

} else {

echo 'Извините, такого пользователя нет';

}

} else {

echo 'Заполните все поля';

}

}

?>

// ------------------------------------------------------------------------

// Система: "Интернет-магазин Deluxe"

// Модуль: registration.php

// Автор: Ермаков А.А.

// Дата: 22.05.2020

// Версия: 0.5

// ------------------------------------------------------------------------

<?php

$conn = new mysqli ( 'localhost', 'root', 'root', 'furniture' );

if ( isset ( $_POST['submit'] ) ) {

$login = filter_var ( trim ( $_POST['login']), FILTER_SANITIZE_STRING );

$name = filter_var( trim ( $_POST['name']), FILTER_SANITIZE_STRING );

$surname = filter_var( trim ($_POST['surname']), FILTER_SANITIZE_STRING );

$email = filter_var( trim ( $_POST['email']), FILTER_SANITIZE_STRING );

$phone = filter_var (trim ($_POST['phone']), FILTER_SANITIZE_STRING );

$pass1 = filter_var( trim ( $_POST['pass1']), FILTER_SANITIZE_STRING );

$pass2 = filter_var ( trim ( $_POST['pass2']), FILTER_SANITIZE_STRING );

if (!empty($login) && !empty($name) && !empty($surname) && !empty($email)

&& !empty($phone) && !empty($pass1) && !empty($pass2)) {

$data = $conn->query("SELECT * FROM users WHERE login = '$login'");

if ( mysqli_num_rows ( $data ) == 0 ) {

$conn->query ( "INSERT INTO `users` (`login`, `name`, `surname`,

`email`, `phone`, `pass`) VALUES ('$login', '$name',

'$surname', '$email', '$phone', SHA ( '$pass2' ))" );

$conn->close ();

header ( 'Location: main.php' );

exit ();

} else {

echo 'Логин уже существует';

}

}

}

?>

// ------------------------------------------------------------------------

// Система: "Интернет-магазин Deluxe"

// Модуль: form_author.php

// Автор: Ермаков А.А.

// Дата: 22.05.2020

// Версия: 0.5

// ------------------------------------------------------------------------

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<title>Авторизация</title>

<link rel="stylesheet" href="css/author.css">

</head>

<body> <br>

<div class="conteiner">

<form class="form" action="authorisation.php" method="POST">

<a href="main.php" class="close">&times;</a>

<h2>Авторизация</h2>

<input id="login" class="form_control" type="text" name="login"

placeholder="Логин">

<input id="pass" class="form_control" type="password" name="pass"

placeholder="Пароль">

<button class="btn_registr" type="submit"

name="submit">Авторизоваться</button>

</form>

</div>

<script src="js/modal_form.js"></script>

</body></html>

// ------------------------------------------------------------------------

// Система: "Интернет-магазин Deluxe"

// Модуль: form_registr.php

// Автор: Ермаков А.А.

// Дата: 22.05.2020

// Версия: 0.5

// ------------------------------------------------------------------------

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<title>Регистрация</title>

<link rel="stylesheet" href="css/registr.css">

</head>

<body> <br>

<div class="conteiner">

<form class="form" action="registration.php" method="POST">

<a href="main.php" class="close">&times;</a>

<h2>Регистрация</h1>

<input id="login" class="form_control" type="text" name="login"

placeholder="Логин">

<input id="name" class="form_control" type="text" name="name"

placeholder="Имя">

<input id="surname" class="form_control" type="text" name="surname"

placeholder="Фамилия">

<input id="email" class="form_control" type="text" name="email"

placeholder="Адрес электронной почты">

<input id="phone" class="form_control" type="text" name="phone"

placeholder="Телефон">

<input id="pass1" class="form_control" type="password" name="pass1"

placeholder="Пароль">

<input id="pass2" class="form_control" type="password" name="pass2"

placeholder="Подтвердите пароль">

<button class="btn_registr" name="submit"

type="submit">Зарегистрироваться</button>

</form>

</div>

<script src="js/modal_form.js"></script>

</body>

</html>

// ------------------------------------------------------------------------

// Система: "Интернет-магазин Deluxe"

// Модуль: search_basket.php

// Автор: Ермаков А.А.

// Дата: 22.05.2020

// Версия: 0.5

// ------------------------------------------------------------------------

<?php

//поиск всех товаров в корзине по запросу

$conn = new mysqli ( 'localhost', 'root', 'root', 'furniture' );

$result = $conn->query ( "SELECT * FROM basket" );

// storing in array

$data = array ();

while ( $row = mysqli_fetch_assoc ( $result )) {

$data[] = $row;

}

echo json_encode ( $data );?>

// ------------------------------------------------------------------------

// Система: "Интернет-магазин Deluxe"

// Модуль: search_category.php

// Автор: Ермаков А.А.

// Дата: 22.05.2020

// Версия: 0.5

// ------------------------------------------------------------------------

<?php

//поиск всех категорий по запросу

$conn = new mysqli ( 'localhost', 'root', 'root', 'furniture' );

$result = $conn->query ( "SELECT * FROM categories" );

// storing in array

$data = array ();

while ( $row = mysqli_fetch_assoc ( $resul t)) {

$data[] = $row;

}

echo json_encode( $data );

?>

// ------------------------------------------------------------------------

// Система: "Интернет-магазин Deluxe"

// Модуль: search_goods.php

// Автор: Ермаков А.А.

// Дата: 22.05.2020

// Версия: 0.5

// ------------------------------------------------------------------------

<?php

//поиск всех товаров по запросу

$conn = new mysqli ( 'localhost', 'root', 'root', 'furniture' );

$result = $conn->query ( "SELECT * FROM goods" );

// storing in array

$data = array ();

while ( $row = mysqli_fetch_assoc ( $result )) {

$data[] = $row;

}

echo json_encode ( $data );

?>

// ------------------------------------------------------------------------

// Система: "Интернет-магазин Deluxe"

// Модуль: search_user.php

// Автор: Ермаков А.А.

// Дата: 22.05.2020

// Версия: 0.5

// ------------------------------------------------------------------------

<?php

//поиск всех юзеров по запросу

$conn = new mysqli ( 'localhost', 'root', 'root', 'furniture' );

$result = $conn->query ( "SELECT * FROM users" );

// storing in array

$data = array ();

while ( $row = mysqli_fetch_assoc ( $result )) {

$data[] = $row;

}

echo json_encode ( $data );

?>

// ------------------------------------------------------------------------

// Система: "Интернет-магазин Deluxe"

// Модуль: update_basket.php

// Автор: Ермаков А.А.

// Дата: 22.05.2020

// Версия: 0.5

// ------------------------------------------------------------------------

<?php

$conn = new mysqli ( 'localhost', 'root', 'root', 'furniture' );

$id_basket = filter_var( trim( $_POST['id_basket']), FILTER_SANITIZE_STRING);

$count = filter_var ( trim ( $_POST['count']), FILTER_SANITIZE_STRING);

$conn->query ( "UPDATE basket SET count = $count WHERE id = $id_basket" );

$conn->close ();

header ( 'Location: main.php' );

exit ();

?>

// ------------------------------------------------------------------------

// Система: "Интернет-магазин Deluxe"

// Модуль: delete_from_basket.php

// Автор: Ермаков А.А.

// Дата: 22.05.2020

// Версия: 0.5

// ------------------------------------------------------------------------

<?php

$conn = new mysqli ( 'localhost', 'root', 'root', 'furniture' );

$id_basket = filter_var( trim( $_POST['id_basket']), FILTER_SANITIZE_STRING);

$conn->query ( "DELETE FROM basket WHERE id = $id_basket" );

$conn->close ();

header ( 'Location: main.php' );

exit ();

?>

// ------------------------------------------------------------------------

// Система: "Интернет-магазин Deluxe"

// Модуль: main.css

// Автор: Ермаков А.А.

// Дата: 22.05.2020

// Версия: 0.5

// ------------------------------------------------------------------------

body {

margin: 0;

background: url('../images/background1.jpg') center repeat-y;

font-family: "ProximaNova", "Trebuchet MS";

}

/* basket */

.basket_conteiner {

background-color: white;

}

.basket_items {

margin: 0 auto;

max-width: 960px;

height: 55px;

display: flex;

justify-content: space-between;

align-items: center;

background-color: white;

}

.basket_empty {

width: 50%;

text-align: center;

}

#div11 {

display: flex;

justify-content: space-between;

border-bottom: 1px solid rgb(197, 189, 189);

padding-bottom: 7px;

}

#div12 {

padding-top: 7px;

}

#div12_a2 {

border-left: 1px solid black;

padding-left: 5px;

}

#basket_img {

height: 42px;

}

.count_img {

display: flex;

text-decoration: none;

}

.basket_count {

width: 22px;

height: 20px;

background-color: rgb(250, 31, 31);

border: solid 1px white;

border-radius: 12px;

align-self: start;

margin-left: -10px;

color: white;

text-align: center;

font-size: 15px;

font-weight: 700;

outline: none;

user-select: none;

}

/* header */

header {

/* position: relative; */

height: auto;

background-color: rgb(250, 244, 187);

}

.header_conteiner {

justify-content: space-between;

display: flex;

margin: 0 auto;

max-width: 960px;

}

.logo_img {

height: 60px;

}

.logo_name {

padding: 0 0 5px 15px;

font-style: italic;

}

.nav {

display: flex;

align-items: flex-end;

bottom: 0;

}

.nav_items {

display: flex;

margin-bottom: 15px;

}

.nav_link {

margin-left: 20px;

text-decoration: none;

font-weight: 700;

color: black;

}

/* main conteiner */

.main_conteiner {

display: flex;

margin: 0 auto;

background-color: rgb(231, 208, 177);

height: auto;

max-width: 960px;

}

/* sidebar */

.sidebar {

width: 20%;

}

.sidebar_categories {

margin: 5px;

display: flex;

flex-direction: column;

min-height: 100px;

background-color: rgb(121, 66, 4, 0.8);

align-self: flex-start;

/* box-shadow: 0 0 5px 2px; */

}

.sidebar_item {

padding: 3px 5px;

text-decoration: none;

color: azure;

}

#s_b {

padding: 5px;

border-bottom: 1px solid black;

}

#s_b:hover {

background: rgb(34, 20, 1);

transition: background 0.1s linear;

}

.sidebar_address {

padding: 10px;

}

.sidebar_address_title {

font-weight: 700;

}

.sidebar_address_text {

margin-bottom: 30px;

}

/* main content */

.main_content {

margin-left: 10px;

width: 77%;

display: flex;

flex-direction: column;

}

.block_search {

display: none;

flex-direction: column;

}

.input_search {

width: 90%;

}

.main_block_img {

display: flex;

flex-direction: column;

padding: 10px 0;

}

.main_img {

width: 100%;

}

.advantages_block {

display: flex;

}

.advantages_item {

margin-left: 20px;

width: 25%;

}

.advantages_text {

text-align: left;

}

/* all catalog */

.all_catalog_conteiner {

display: flex;

flex-wrap: wrap;

}

.all_catalog_conteiner_inner {

display: flex;

width: 33%;

text-align: center;

}

.catalog_item {

display: flex;

flex-direction: column;

margin: 10px 20px;

}

.catalog_item_img {

margin: 3px;

width: 100%;

height: 150px;

border: 2px solid rgba(194, 123, 31, 0.938);;

}

/* footer */

.footer {

background-color: rgb(73, 66, 66);

}

.footer_inner {

margin: 0 auto;

width: 960px;

display: flex;

}

.footer_menu {

margin: 20px 30px;

display: grid;

width: 70%;

grid-template-columns: auto auto auto;

}

.footer_link {

margin: 5px 10px;

color: rgb(241, 233, 233);

text-decoration: none;

font-size: 18px;

}

.footer_img {

width: 170px;

}

.footer_address {

color: white;

}

/* main_block_about */

.main_block_about {

display: none;

flex-direction: column;

line-height: 1.5;

}

.sertificates {

display: flex;

}

.sertif_img {

margin: 20px 30px;

height: 200px;

}

/* main_block_vakancy */

.main_block_vakancy {

display: none;

flex-direction: column;

line-height: 1.5;

}

/* main_block_questions */

.main_block_questions {

display: none;

flex-direction: column;

}

.main_block_questions span {

float: right;

}

.quest_answ {

display: flex;

flex-direction: column;

}

/* questions */

.question_title {

font-weight: bold;

}

.question_date {

float: right;

}

#add_q {

color: #800080;

text-decoration: underline;

margin: 0;

}

/* add_questions */

.add_questions {

display: none;

flex-direction: column;

}

.block_question_title {

margin-bottom: 20px;

padding-bottom: 10px;

border-bottom: 1px solid black;

}

.question_title {

float: right;

width: 70%;

}

.textarea {

display: flex;

flex-direction: column;

}

.count_symbols {

display: flex;

justify-content: space-between;

}

.add_questions .full_name,

.add_questions .email {

float: right;

width: 400px;

}

/* bayer */

.main_block_bayer {

display: none;

flex-direction: column;

line-height: 1.5;

}

/* main_block_delivery */

.main_block_delivery {

display: none;

flex-direction: column;

line-height: 1.5;

}

/* main_block_contacts */

.main_block_contacts {

display: none;

flex-direction: column;

}

/* block_one_goods */

.block_one_goods {

display: none;

flex-direction: column;

line-height: 1.5;

}

.one_goods_item {

display: flex;

padding-bottom: 10px;

border-bottom: 1px solid grey;

}

.one_goods_item_inner {

margin: 0 20px;

align-self: flex-end;

}

.one_goods_img {

width: 28%;

height: 150px;

}

.one_goods_description {

border-bottom: 1px solid grey;

}

#attention {

font-weight: 700;

}

#one_goods_mark {

font-style: italic;

border-bottom: 1px solid grey;

}

/* search */

.block_search_inner {

display: flex;

flex-wrap: wrap;

text-align: center;

}

#data {

display: flex;

flex-wrap: wrap;

}

.block_search_item {

width: 27%;

margin: 10px 20px;

display: flex;

flex-direction: column;

}

.block_search_img {

padding: 10px 10px;

}

/* block_order */

.block_order_conteiner {

display: none;

flex-direction: column;

}

.title_order_table {

font-weight: 700;

}

td:last-child {

vertical-align: top;

text-align: center;

}

table tr td {

border-bottom: 1px dashed grey;

}

.td_order_table {

vertical-align: top;

}

.form_order {

display: flex;

flex-direction: column;

}

#btn_recalculate {

float: right;

}

.block_order_payment {

display: flex;

flex-direction: column;

}

.block_order_delivery {

display: flex;

flex-direction: column;

margin-bottom: 20px;

border-bottom: 1px dashed grey;

}

.block_order_total {

display: flex;

margin-bottom: 30px;

}

.block_order_total span span {

font-weight: 700;

}

.block_order_personals {

display: flex;

flex-direction: column;

width: 70%;

}

// ------------------------------------------------------------------------

// Система: "Интернет-магазин Deluxe"

// Модуль: exit.php

// Автор: Ермаков А.А.

// Дата: 22.05.2020

// Версия: 0.5

// ------------------------------------------------------------------------

<?php

setcookie ( 'user', $user['name'], time() - 3600, "/" );

header ( 'Location: /' );

?>

4. МЕТОДИКА ТЕСТИРОВАНИЯ И ТЕСТОВЫЕ НАБОРЫ ДАННЫХ

Для тестирования программы проделаем следующие действия:

1. Зарегистрируемся под пользователем Ермаков Андрей Анатольевич, с логином andrei и паролем 12345, email - andrei@mail.ru, телефон - 2777777;

2. Попытаемся найти необходимый товар и зададим интересующий вопрос;

3. Добавим товар “диван Анжелика” в корзину в количестве 1 шт.;

4. Оформим заявку на покупку товара “диван Анжелика”, с доставкой на дом, наличным расчетом, по адресу Пограничников 38 и с комментарием - предварительный созвон.

Результаты тестирования представлены в таблице 2.

Таблица 2 - результаты тестирования

Ожидаемые результаты

Фактические результаты

1

Появление в таблице “users” базы данных “furniture” новой записи со следующими данными:

name: Андрей

surname: Ермаков

login: andrei

pass: 12345

email: andrei@mail.ru

phone: 2777777

name: Андрей

surname: Ермаков

login: andrei

pass: 8cb2237d0679ca88db6464eac60d

a96345513964

email: andrei@mail.ru

phone: 2777777

2

Задав вопрос, в таблице “questions” базы данных “furniture” должна появиться новая запись со следующими данными:

title: Кухонный гарнитур

question: Здравствуйте! Имеется ли

инструкция по сборке

кухонного гарнитура?

name: Андрей

email: andrei@mail.ru

title: Кухонный гарнитур

question: Здравствуйте! Имеется ли

инструкция по сборке

кухонного гарнитура?

name: Андрей

email: andrei@mail.ru

date: 2020-05-23

3

Добавив товар в корзину, в таблице “basket” базы данных “furniture” должна появиться новая запись со следующими данными:

count: 1

id_user: 29

id_goods: 1

count: 1

id_user: 29

id_goods: 1

4

Оформив заявку на покупку, в таблице “orders” базы данных “furniture” должна появиться новая запись со следующими данными:

count: 1

payment: true

delivery: true

delivery_adress: Пограничников 38

note: предварительный

созвон

id_user: 29

id_goods: 1

count: 1

payment: true

delivery: true

delivery_adress: Пограничников 38

note: предварительный

созвон

id_user: 29

id_goods: 1

date: 2020-05-23

В результате тестирования программы мы получили следующие данные:

1. Несоответствие введенного пароля с записанным в таблицу. Это связано с тем, что при сохранении пароля происходит его хэширование.

2. Несоответствие количества вводимых данных и записанных. Это из-за того, что дата в таблицу добавляется автоматически.

3. Полное соответствие.

4. Несоответствие количества вводимых данных и записанных. Это из-за того, что дата в таблицу добавляется автоматически.

5. РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ

Для уже зарегистрированных пользователей предусмотрено окно аутентификации, которое активируется при нажатии на ссылку “Вход”. На рисунке 5 представлено окно аутентификации пользователя.

Рисунок 5 - Окно аутентификации.

После нажатия на ссылку “Регистрация”, в окне регистрации предлагается ввести свои данные: имя, фамилия, логин, адрес электронной почты, телефон и пароль (пароль необходимо подтвердить). На рисунке 6 представлено окно регистрации.

Рисунок 6 - Окно регистрации.

После нажатия на кнопку “Зарегистрироваться”. Попадаем на главную страницу интернет-магазина “Deluxe”. На рисунке 7 представлен интерфейс главной страницы.

Рисунок 7 - Интерфейс главной страницы.

В верхней части главной страницы расположена информация о текущем пользователе и о состоянии его корзины. Также в верхней части расположено меню для навигации по магазину. При переходе по ссылке “О компании”, попадаем в соответствующий раздел. На рисунке 8 представлен раздел “О компании”.

Рисунок 8 - Раздел “О компании”.

При переходе по ссылке “Вакансии”, попадаем в раздел вакансии, от куда можно загрузить бланк заполнения для кандидата. На рисунке 9 представлен раздел “Вакансии”.

Рисунок 9 - Раздел “Вакансии”.

В разделе “Вопрос-ответ” можно почитать переписку других пользователей, а также задать свой вопрос. На рисунке 10 представлен раздел “Вопрос-ответ”.

Рисунок 10 - Раздел “Вопрос-ответ”

В разделе “Покупателю” представлена информация для ознакомления. На рисунке 11 представлен раздел “Покупателю”.

Рисунок 11 - Раздел “Покупателю”.

В разделе “Доставка” можно ознакомиться с подробной информацией о доставке товара. На рисунке 12 представлен раздел “Доставка”.

Рисунок 12 - Раздел “Доставка”.

В разделе “Контакты” можно посмотреть всю информацию о филиалах магазина на карте: адрес, телефон и часы работы. На рисунке 13 представлен раздел “Контакты”.

Рисунок 13 - Раздел “Контакты”.

На сайте можно легко найти товар. Для поиска товара можно воспользоваться перемещением по категориям товаров, которые расположены на боковой панели, либо воспользоваться строкой поиска и ввести нужное слово. Для проверки поиска в строку поиска введем неполное слово “див”. На рисунке 14 представлены результаты поиска.

Рисунок 14 - Результаты поиска по слову “див”.

При поиске также можно сократить количество найденых товаров, выбрав в выпадающем списке категорию. В этом случае поиск будет осуществляться по двум критериям. На рисунке 15 представлен пример поиска по двум критериям.

Рисунок 15 - Пример поиска по двум критериям.

Чтобы посмотреть подробную информацию о товаре, нужно нажать на товар. В окне браузера отобразится соответствующий раздел. На рисунке 16 представлена полная информация о конкретном товаре.

Рисунок 16 - Полная информация о конкретном товаре.

Если по интересующему товару возник вопрос, то его можно задать перейдя в раздел “Вопрос-ответ” и нажав на ссылку “Задать вопрос”. В результате откроется форма заполнения, где нужно указать заголовок, сам вопрос, полное имя и адрес электронной почты. При написании вопроса существует ограничение по количеству введенных символов (1000). Для удобства пользователя при вводе будет идти подсчет символов и отображение их количества. Для отправки вопроса нужно нажать на кнопку “Задать вопрос”. На рисунке 17 представлен пример отправки вопроса.

Рисунок 17 - Пример отправки вопроса.

После ответа компании вопрос помещается в общий список вопросов, расположенный в разделе “Вопрос-ответ”. На рисунке 18 представлен ответ на заданный нами вопрос.

Рисунок 18 - Ответ на заданный нами вопрос.

Предположим, что при просмотре товаров, нас заинтересовал диван “Анжелика”. Чтобы добавить данный товар в корзину, необходимо в разделе “информация о конкрктном товаре” указать количество и нажать на кнопку “В корзину”. В верхней части страницы отобразится количество товаров в корзине и их общая сумма. На рисунке 19 представлена информация после добавления товара в корзину.

Рисунок 19 - Информация после добавления товара в корзину.

Для просмотра содержимого корзины нужно нажать на иконку корзины. На рисунке 20 представлено содержимое окна корзины.

Рисунок 20 - Содержимое окна корзины.

В качестве проверки, добавим еще один товар. Предположим это будет “Диван Мини”. На рисунке 21 представлена информация после добавления второго товара в корзину.

Рисунок 21 - информация после добавления второго товара в корзину.

В окне корзины можно редактировать количество товаров или удалить товар. Для примера удалим “диван Мини”. Для этого нужно поставить соответствующую галочку напротив товара и нажать кнопку “Пересчитать”. На рисунке 22 представлена информация после удаления “диван Мини”.

Рисунок 22 - Информация после удаления “диван Мини”.

Добавим в корзину одно “кресло Анжелика”. На рисунке 23 представлена информация после добавления товара “кресло Анжелика”.

Рисунок 23 - Информация после добавления товара “кресло Анжелика”.

Теперь изменим количество товара “кресло Анжелика” на 2. Для этого напротив товара укажим количество и нажмем кнопку “Пересчитать”. На ресунке 24 представлена информация о товаре после изменения количества на 2.

Рисунок 24 - Информация о товаре после изменения количества на 2.

Чтобы оформить заказ, необходимо в окне корзины заполнить специальную форму и нажать на кнопку “Оформить заказ”. В форме нужно указать имя, фамилия, телефон, адрес электронной почты, адрес доставки и примечание. Для авторизованного пользователя информация о имени, фамилии, телефон и адрес электронной почты заполняется автоматически. Также необходимо выбрать способ оплаты и указать способ доставки. На рисунке 25 указана форма заполнения заявки.

Рисунок 25 - Форма заполнения заявки.

6. РУКОВОДСТВО ПРОГРАММИСТА

6.1 Перечень программных модулей и конфигурационных файлов

1. main.js - содержит процедуры и функции, необходимые для функционирования элементов главной страницы. Сюда относятся функции для загрузки всех товаров на сайт, каткгорий, а также функции для поиска по сайту. Также здесь происходит установка куки по имени и id текущего пользователя.

2. main.php - в этом модуле находится вся структура сайта, написанная на HTML с вставками PHP-кода.

3. add_to_basket,js - находятся функции для добавления товара в корзину.

4. add_to_order.js - модуль для оформления заявки. Заявка добавляется в таблицу “orders”.

5. modal_form.js - содержит функцию для закрытия модальных форм Авторизации и Регистрации.

6. show_basket.js - содержит функции для отображения корзины и всех добавленных в нее товаров.

7. show_categories.js - отвечает за функции боковой панели, т.е. отображение товаров по категориям.

8. show_one_goods.js - модуль для отображения подробной информации о товаре.

9. db.php - служит для подключения к базе данных, а также содержит запросы на выборку из таблиц “categories”, “goods”, “markets”, “questions”.

10. update_quest.php - содержит функцию для добавления вопроса пользователя в таблицу “questions”.

11. add_to_basket.php - подключение к базе и запрос на добавление товара в корзину.

12. add_to_order.php - подключение к базе и запрос на добавление заявки на покупку.

13. authorization.php - подключение к базе данных и проверка существования пользователя при аутентификации.

14. registration.php - подключение к базе данных и проверка существования пользователя. В противном случае происходит регистрация и добавление нового пользователя в таблицу “users”.


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

  • Разработка интернет-магазина для реального заказчика. Проведение анализа и выбор интернет-технологий для разработки интернет-магазина. Проектирование предметной области. Разработка динамических web-страниц интернет-магазина, управляемых базой данных.

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

  • Этапы проектирования и программная реализация интернет-магазина. Методы разработки его интерфейса - элементов и компонентов программы, которые способны оказывать влияние на взаимодействие пользователя с программным обеспечением. Защита интернет-магазина.

    контрольная работа [28,7 K], добавлен 02.10.2010

  • Преимущества и недостатки электронной коммерции. Описание локального сервера Denwer. Структура файлов и папок. Особенности PHP, MySQL, CSS, HTML. Разработка структуры сайта интернет-магазина по продажи гитар и комплектующих, его программная реализация.

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

  • Критерии оценки сайтов при проведении Интернет-конкурса. Примеры популярных ресурсов с возможностью оценивания. Программная реализация плагина с использованием языков программирования HTML, CSS, PHP, JavaScript. Оценка качества разработанного продукта.

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

  • Общая схема интернет-магазина. Установка CMS Joomla, Virtuemart и Denwer на компьютер. Настройка внешнего вида и функционала интернет-магазина. Доставка товара покупателю и способы его оплаты. Оптимизация работы интернет-магазина с базами данных.

    курсовая работа [505,3 K], добавлен 17.12.2014

  • Анализ объектно-ориентированной технологии программирования на примере языка Java. Методы, инструменты разработки web-приложений. Применение их при создании Интернет-магазина для ООО "Компас". Разработка апплета для его страницы в виде стрелочных часов.

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

  • Факторы, влияющие на пропускную способность в беспроводных сетях. Использование скриптового языка программирования PHP для разработки базы данных интернет-магазина, его основные преимущества. Современные методы и средства тестирования web-приложений.

    дипломная работа [3,5 M], добавлен 10.07.2015

  • MySQL как одна из самых распространенных на современном этапе систем управления базами данных, оценка ее преимуществ и недостатков. Порядок разработки интернет-магазина, составление и листинг программы, анализ ее функциональности и возможности, значение.

    курсовая работа [223,3 K], добавлен 13.03.2015

  • Основные преимущества торговли в интернете. Современные тенденции развития языков программирования. Особенности и возможности языка PHP, основные области применения. Проектирование БД с помощью SQLServer. Разработка структуры интернет–магазина футболок.

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

  • Проектирование книжного интернет-магазина для реализации книжной продукции через Интернет. Анализ и обоснование выбора языков программирования и средств разработки сайта. Затраты внедрение сайта, его программное обеспечение, тестирование и отладка.

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

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