Программная разработка интернет-магазина 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} ¬e=${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">×</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">×</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.2015MySQL как одна из самых распространенных на современном этапе систем управления базами данных, оценка ее преимуществ и недостатков. Порядок разработки интернет-магазина, составление и листинг программы, анализ ее функциональности и возможности, значение.
курсовая работа [223,3 K], добавлен 13.03.2015Основные преимущества торговли в интернете. Современные тенденции развития языков программирования. Особенности и возможности языка PHP, основные области применения. Проектирование БД с помощью SQLServer. Разработка структуры интернет–магазина футболок.
курсовая работа [2,0 M], добавлен 23.05.2013Проектирование книжного интернет-магазина для реализации книжной продукции через Интернет. Анализ и обоснование выбора языков программирования и средств разработки сайта. Затраты внедрение сайта, его программное обеспечение, тестирование и отладка.
дипломная работа [2,1 M], добавлен 06.06.2013