Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

Разработка промо сайта «Галактика»

Содержание:

ВВЕДЕНИЕ

Данная курсовая работа имеет отношение к сфере торговли. Исследуемое предприятие – компания «Галактика», которая осуществляет торговлю различной техникой по низким ценам. Сфера торговли развивается большими темпами, так как необходимость иметь качественные товары возрастает прямо пропорционально росту ритма и уровню жизни. Глобализация и концентрация знаний и информации в глобальной сети интернет вносят свои коррективы в деятельность торговых компаний. Сегодня клиентам все труднее найти время, чтобы прийти в магазин компании, чтобы получить информацию об имеющихся товарах. И они предпочитают искать ее в сети.

В настоящее время почти каждая торговая компания имеет веб-сайт. Важно заметить, что сайт – это первое место, которое посещают клиенты до прихода в офис или магазин компании, то есть, это именно сайт производит первое впечатление, а, как известно, первое впечатление - самое важное. И именно положительное первое впечатление предоставляет возможность удерживать привлеченных на сайт пользователей, а также мотивировать их задержаться на нем и совершать определенные действия. Поэтому решающим значением для позитивного восприятия сайта станет его дизайн, совокупность элементов оформления, цветовые решения, графика и используемые изображения, используемые шрифты и многое другое. Вначале посетитель видит дизайн сайта, он еще не может оценить его контент, но именно то первое впечатление, сформированное у него в первые несколько секунд посещения, вынуждает его либо остаться на сайте и выполнить определенные действия, либо же оставить его. Вторым впечатлением от сайта будет его юзабилити, то есть удобство использования сайта, а также качество его технического выполнения. Важно отметить, что удобство пользования при проектировании сайта должно стоять на первом месте, ведь существует множество сайтов или с плохим дизайном, более популярных у пользователей из-за своего удобства, надежности и функционала. В тоже время сайты с продуманным решением стиля проигрывают при более близком контакте с пользователем, а исправление структуры сайта или корректировка ошибок может обойтись очень дорого. Поэтому из вышесказанного можно сделать вывод, что одного дизайна недостаточно. Сайт должен выполнять все свои назначенные ему задачи, не вызывая трудностей у пользователя, то есть должен быть простым и удобным в использовании.

Цель данной курсовой работы – разработка информационного промо-сайта торговой компании «Галактика», которая осуществляет торговлю техникой по низким ценам. Данная компания предоставляет следующие виды товаров:

  • Электроника;
  • Бытовая техника;
  • Встраиваемая техника;
  • Климатическая техника;

Задачи курсовой работы:

  • исследовать понятие «промо-сайт»;
  • предложить алгоритм взаимодействия торговой компании с конечным пользователем.
  • создать информационный промо-сайт компании, предоставляющей вышеуказанные услуги для пользователей;

Объектом исследования является компания «Галактика», торгующая техникой по низким ценам.

Предмет исследования – промо-сайт торговой компании.

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

Научная новизна исследования состоит в следующем:

- деятельность торговой компании изучается не в теории, а на практике непосредственно в офисе компании «Галактика» во время прохождения практики;

- механизм взаимодействия менеджера с потенциальным клиентом изучается на практике в процессе общения и покупки товара;

- изученный алгоритм онлайн-взаимодействия менеджера и потенциального клиента внедряется на промо-сайте;

Курсовая работа разбита на разделы.

В разделе 1 необходимо приводится краткое описание промо-сайта, рисунок организационной структуры и его описание. Далее описывается актуальность выбора технических и программных средств, с помощью которых реализуется серверная и клиентские части реализуемой задачи, а также базы данных. С целью определения списка активностей по каждой категории пользователей системы производится описание активностей различных типов пользователей.

Раздел 2 отражает процесс проектирования серверной части приложения, которое начинается с разработки структуры серверного приложения, включая все модули и их связи. Взаимосвязи модулей представлены в виде схемы. Также представлен рисунок дерева вызова программных модулей и таблица с перечнем и назначением модулей, описаны все передаваемые в модули входные и выходные данные.

Раздел 3 отражает процесс проектирования базы данных и должен содержит рисунок ER – модели с указанием ключевых полей и связей между таблицами, описание структуры записей каждой таблицы. Кроме того, в разделе описываются пользовательские функции и основные запросы к базе данных.

Раздел 4 содержит описание структуры сайта и взаимодействие элементов сайта с серверным приложением. Раздел отражает процесс проектирования программного обеспечения клиентской части задачи содержит:

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

1. Техническое задание и выбор средств реализации.=

1.1. Техническое задание

Требования: При помощи языков программирования HTML, PHP и CSS создать промо-сайт компании «Галактика», осуществляющей торговлю техникой по низким ценам. Промо-сайт должен размещать данные о компании, каталог продукции, новости компании, контактные данные компании.

Промо-сайт должен содержать две важные части: пользовательская (доступная пользователям) и административная (доступная администраторам).

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

Промо-сайт должен содержать единый дизайн на всем страницах. Интерфейс должен быть дружественным посетителю и понятным даже неопытным пользователям.

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

Весь дизайн сайта должен быть управляем при помощи таблицы стилей CSS.

Информация, необходимая для сайта, должна содержаться в таблицах базы данных. Данный проект ориентирован для работы с системой управления базами данных.

При реализации проекта должны выполняться следующие условия:

База данных должна включать не менее 8-и таблиц. Используется СУБД MySQL 5.0

В качестве веб-сервера используется Apache 1.3.x.

Количество записей во вспомогательных таблицах – не менее 5

Система должна позволять пользователю редактировать, удалять, добавлять записи во всех таблицах Базы Данных.

Дополнительные требования:

Сайт должен содержать следующие разделы:

  • Главная;
  • О компании;
  • Каталог;
  • Форма обратной связи;
  • Контакты;
  • Новости;

1.2. Выбор средств реализации

Язык разметки гипертекстовых страниц HTML

HTML-документы - это файлы с расширением .html или .htm. Просматривать их можно с помощью любого браузера (например, Safari, Mozilla Firefox, Google Chrome). Браузер считывает HTML-файл и отображает его содержимое, чтобы те, кто пользуются интернетом, могли просмотреть его содержимое.

Обычно среднестатистический веб-сайт включает в себя несколько разных HTML-страниц. Например, главные страницы, информационные страницы, страницы контактов могут иметь различные HTML-документы.

Каждая HTML-страница включает в себя набор так называемых тегов (именуемых элементами), которые можно назвать строительными блоками внутри веб-страниц. Они создают структуру, которая распределяет контент согласно разделам, параграфам, заголовкам и другим блокам содержимого.

«Используя HTML, мы помечаем содержимое тегами, чтобы придать ему структуру. Мы называем соответствующие теги и их содержимое элементом». [19]

Большинство HTML-тегов имеют элемент открытия и закрытия, в которых используется следующий синтаксис <tag> </tag>.

Ниже вы можете увидеть пример HTML- кода, с помощью которого можно структурировать элементы HTML-страницы:

<div>

<h1> Основная рубрика </h1>

<h2> Броский подзаголовок </h2>

<p> Пункт 1 </p>

<img src = "/" alt = "Изображение">

<p>Пункт с гиперссылкой <a href="https://example.com"></a></p>

</div>

Основной элемент — это простая пара тегов (<div> </div>), которую используют для разметки больших блоков контента.

Такие блоки могут содержать заголовок (<h1> </h1>), подзаголовок (<h2> </h2>), абзацы (<p> </p>) и изображения (<img>).

Второй абзац в нашем примере содержит гиперссылку (<a> </a>) с атрибутом href, который указывает целевой URL.

Тег изображения имеет два параметра: src для указания пути к изображению и alt для его описания.

Обзор часто используемых HTML-тегов

Блочные и строчные элементы

Большинство элементов либо блочные, либо строчные. В чём разница?

«Блочные элементы начинаются с новой строки, накладываются друг на друга и занимают всю доступную ширину. Блочные элементы могут быть вложены друг в друга и обёртывать строчные элементы. Обычно мы видим, как блочные элементы используются для больших кусков контента, такого как абзацы». [3]

«Строчные элементы не начинаются с новой строки. Они попадают в обычный поток документа, выстраиваются друг за другом, а их ширина основана на их содержимом. Строчные элементы могут быть вложены друг в друга, однако, они не могут обёртывать блочные элементы. Обычно мы видим строчные элементы в качестве маленьких кусков контента, таких как отдельные слова». [3]

Теги блочного уровня

Три обязательных тега уровня блока, которые каждый HTML-документ должен содержать: <html>, <head> и <body>.

Тег <html> </html> - это элемент самого высокого уровня, который охватывает любую HTML-страницу.

<html>

<head>

<!-- META INFORMATION -->

</head>

<body>

<!-- PAGE CONTENT -->

</body>

</html>

Тег <head> </head> содержит информацию с мета-тегами, такую ​​как заголовок страницы, ее описание и кодировка.

И, наконец, тег <body> </body> включает в себя всё содержимое, отображаемое на странице.

Основы CSS

CSS (Cascading Style Sheets), или каскадные таблицы стилей, используют для описания внешнего вида HTML-страницы, написанной языком разметки. Обычно CSS-стили используют для создания и изменения стиля отображения элементов веб-страниц, написанных на языках HTML и XHTML, но также они могут быть применены к любому виду XML-документа, в том числе XML, SVG и XUL.

Каскадные таблицы стилей формируют правила отображения элементов при помощи свойств и допустимых значений. Для всех элементов можно использовать специфический набор свойств, остальные же свойства не будут оказывать на него влияния.

Объявление стиля состоит из двух частей: тега веб-страницы - селектора, и команды форматирования – самого блока объявления. Селектор посылает информацию браузеру, какой именно элемент нужно форматировать, а в блоке объявления (это код в фигурных скобках) перечисляются списком форматирующие команды — свойства и их значения через двоеточие (см. Рисунок).

css_osnovy

Рисунок 1 - Структура объявления CSS-стиля

Виды каскадных таблиц стилей и их специфика

Внешняя таблица стилей – это текстовый файл с расширением .css, который содержит в себе набор CSS-стилей элементов. Файл создается в текстовом редакторе кода подобно HTML-странице. Внутри файла содержатся только стили, исключая HTML-разметку. Внешняя таблица стилей присоединяется к веб-странице при помощи тега <link>, который расположен внутри раздела <head></head>.

К одной веб-странице можно присоединить несколько внешних таблиц стилей, добавляя несколько тегов <link>, указав параметром тега media назначение данной таблицы стилей. Параметр rel="stylesheet" указывает тип ссылки (это ссылка на таблицу стилей).

<head>

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

<link rel="stylesheet" href="css/assets.css" media="all">

</head>

Атрибут type="text/css" не является обязательным согласно стандарту HTML5, следовательно, его можно не указывать. Если этот атрибут не указан, то по умолчанию используется значение type="text/css".

<head>

<style>

h1,

h2 {

color: red;

font-family: "Times New Roman", Georgia, Serif;

line-height: 1.3em;

}

</style>

</head>

<body>

...

</body>

Внутренние стили можно встраивать в раздел <head></head> HTML-страницы и определить внутри тега <style></style>. Внутренние стили имеют приоритет над внешними таблицами, но уступают встроенным (которые заданы через атрибут style).

Встроенные стили

Когда используются встроенные стили, CSS-код пишется прямо в HTML-файл, непосредственно внутри тега элемента с помощью атрибута style:

Такие стили действуют непосредственно на тот элемент, внутри которого они заданы.

<p style="font-weight: bold; color: red;">Обратите внимание на этот текст.</p>

PHP

Проект выполняется с помощью языка программирования PHP (англ. PHP: Hypertext Preprocessor — «PHP: препроцессор гипертекста»; изначально Personal Home Page Tools — «Инструменты для создания персональных интернет-страниц»; произносится «пи-эйч-пи») - язык программирования общего назначения, в главным образом применяемый для разработки веб-приложений. Сегодня поддерживается подавляющим большинством провайдеров и является одним лидером среди языков программирования, которые применяющихся для разработки динамических веб-сайтов.

«Применение языка, подобного PHP и такой базы данных, как MySQL, позволяет делать сайты динамическими: они могут настраиваться и содержать информацию, изменяющуюся в реальном времени». [11, с. 27]

PHP специально создан для веб-разработок, и его код может внедряться непосредственно в HTML.

Простой ответ, но что же он может означать? Вот пример PHP кода:

<!DOCTYPE HTML>

<html>

<head>

<title>Пример</title>

</head>

<body>

<?php echo "Привет, я - скрипт PHP!"; ?>

</body>

</html>

PHP отличается от языка JavaScript тем, что его скрипты выполняются на сервере и генерируют код HTML, посылаемый клиенту. Если на сервере размещен вышеприведенный скрипт, клиент получает только результат его выполнения, но не может выяснить, какой именно код его создал.

PHP весьма прост для изучения, но, вместе с тем, способен удовлетворить запросы даже профессиональных программистов. Пусть Вас не пугает длинный список возможностей PHP. Вы можете быстро начать его изучать, и уже в течение первых часов сможете создавать простые PHP-программы.

Хотя PHP, главным образом, предназначается для работы в среде интернет-серверов, область его применения не ограничивается только этим.

MYSQL

MySQL - это популярный сервер баз данных, который используется в различных приложениях. Аббревиатура SQL означает «язык структурированных запросов» - (S)tructured (Q)uery (L)anguage, который MySQL использует для взаимодействия с другими программами. Более того, MySQL имеет свои собственные встроенные функции для того, чтобы обеспечить разработчикам дополнительный функционал.

MySQL включает в себя базы данных, таблицы, записи, и поля. Таблицы объединяются в базы данных, записи – в таблицы, сами же записи состоят из полей, которые содержат актуальную информацию. Подобная структура позволяет разработчикам выбирать, каким образом они хотят обращаться к информации в базе данных.

Особую помощь проекту оказала CSS–библиотека BOOTSTRAP, которая отвечает за адаптивный дизайн сайта.

Bootstrap (или же Twitter Bootstrap) – библиотека вмещающая в себе набор стилей, классов и скриптов для создания сайтов. В библиотеке можно найти массу шаблонов, использование которых не составит особого труда.

Bootstrap (также известен как Twitter Bootstrap) — свободный набор инструментов для создания сайтов и веб-приложений. Включает в себя HTML- и CSS-шаблоны оформления для типографики, веб-форм, кнопок, меток, блоков навигации и прочих компонентов веб-интерфейса, включая JavaScript-расширения.

«Адаптивная вёрстка сайта позволяет веб-страницам автоматически подстраиваться под экраны планшетов и смартфонов. Мобильный интернет-трафик растёт с каждым годом и чтобы эффективно обрабатывать этот трафик, нужно предлагать пользователям адаптивные сайты с удобным интерфейсом». [2]

2. Описание модулей серверной части программы и их взаимодействие.

2.1. Описание пользовательской части

2.1.1. Структура пользовательской части промо-сайта

Промо-сайт торговой компании «Галактика» содержит следующие разделы:

  • Главная;
  • О компании;
  • Каталог;
  • Форма обратной связи;
  • Контакты;
  • Новости;
  • Авторизация;
  • Админпанель (доступно только авторизованному администратору);

Организационная структура промо-сайта представлена на Диаграмма 1.

Диаграмма 1 – Организационная диаграмма промо-сайта

2.1.2. Основные программные модули

Основные программные модули пользовательской части сайта и их описание представлены в Таблица 1.

Таблица 1 – Описание программных модулей пользовательской части.

Имя файла

Описание

index.php

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

include/cart.php

Функции работы с корзиной

include/catalog.php

Функции работы с каталогом категорий и товаров

include/contacts.php

Контактные данные компании

include/footer.php

Футер сайта

include/functions.php

Пользовательские функции

include/main.php

Контент главной страницы

include/menu.php

Контент меню

include/new.php

Модуль отображения новости целиком

include/news.php

Модуль отображения списка новостей

include/open_db.php

Модуль октратия и инициализации базы данных

include/order.php

Функции работы с заказами

include/product.php

Модуль отображения товара целиком

include/request.php

Модуль обратной связи

include/search.php

Модуль обображения содержимого поиска

include/user.php

Функции работы с пользователями

Далее будет представлена иерархическая структура пользовательской части промо-сайта с подключение вышеописанных модулей (см. Диаграмма 2).

Диаграмма 2 - Иерархическая структура вызова программных модулей пользовательской части промо-сайта

2.2. Описание административной части

2.2.1. Структура административной части промо-сайта

Административная часть промо-сайта торговой компании «Галактика» содержит следующие разделы:

  • Главная
  • Меню
  • Категории
  • Товары
  • Новости
  • Слайды
  • Заказы
  • Пользователи
  • Изменить пароль
  • Выйти!

Организационная структура административной части промо-сайта представлена на Диаграмма 3.

Диаграмма 3 – Организационная диаграмма административной части промо-сайта

2.1.2. Основные программные модули

Основные программные модули административной части сайта и их описание представлены в Таблица 2.

Таблица 2 – Описание программных модулей административной части

Имя файла

Описание

admin.php

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

include/register.php

Функции работы с регистрацией

include/passwordfunctions.php

Функции работы с паролями

include/login.php

Функции работы с авторизацией

include/adminfunctions.php

Административные функции

include/user.php

Функции работы с пользователями

admin/Category.php

Модуль добавления, редактирования и удаления категорий

admin/Menu.php

Модуль добавления, редактирования и удаления меню

admin/News.php

Модуль добавления, редактирования и удаления новостей

admin/Order.php

Модуль просмотра и обработки заказов

admin/Product.php

Модуль добавления, редактирования и удаления товаров

admin/Slide.php

Модуль добавления, редактирования и удаления слайдов

admin/User.php

Модуль просмотра пользователей и изменения их ролей

Далее будет представлена иерархическая структура административной части промо-сайта с подключением вышеописанных модулей (см. Диаграмма 4).

Диаграмма 4 - Иерархическая структура вызова программных модулей административной части промо-сайта

3. Описание структуры базы данных и ее функций

3.1. Описание структуры базы данных

В базе данных проекта насчитывается 11 таблиц. Их названия и описание полей вместе с описанием индексов и связей представлены в Таблица 3.

Таблица 3 – Таблицы базы данных

Таблица

Поле

Тип

Описание

Индекс

Ключ

Связи

Cart

«Корзина»

id

int(11)

Идентификатор

PRIMARY

user_id

int(11)

Код пользователя

INDEX

Foreign Key

user -> id 

product_id

int(11)

Код товара

INDEX

product -> id 

kol

int(5)

Количество товара

Category

«Категории»

id

int(11)

Идентификатор

PRIMARY

name

varchar(191)

Наименование

image

varchar(191)

Файл изображения

parent_id

int(11)

Код родителя

INDEX

Foreign Key

category -> id

Menu

«Меню»

id

int(11)

Идентификатор

PRIMARY

name

varchar(191)

Наименование

image

varchar(191)

Файл изображения

url

varchar(191)

Ссылка

content

text

Содержимое

News

«Новости»

id

int(11)

Идентификатор

PRIMARY

name

varchar(191)

Наименование

image

varchar(191)

Файл изображения

content

text

Содержимое

Order

«Заказы»

id

int(11)

Идентификатор

PRIMARY

date

timestamp

Дата и время заказа

user_id

int(11)

Код пользователя

INDEX

Foreign Key

user -> id 

fio

varchar(191)

ФИО

phone

varchar(191)

Телефон

email

varchar(191)

E-mail

comment

text

Комментарий

orderstatus_id

int(11)

Код статуса заказа

INDEX

Foreign Key

orderstatus -> id 

Ordуrstatus

«Статусы заказов»

id

int(11)

Идентификатор

PRIMARY

name

varchar(191)

Наименование

Userstatus

«Статусы пользователей»

id

int(11)

Идентификатор

PRIMARY

name

varchar(191)

Наименование

Order_product

«Таблица связка заказов с товарами»

id

int(11)

Идентификатор

PRIMARY

product_id

int(11)

Код товара

INDEX

Foreign Key

product -> id 

order_id

int(11)

Код заказа

INDEX

Foreign Key

order -> id 

kol

int(11)

Количество

Product

«Товары»

id

int(11)

Идентификатор

PRIMARY

name

varchar(191)

Наименование

image

varchar(191)

Имя файла изображения

description

text

Описание

price

double

Цена

category_id

int(11)

Код категории

INDEX

Foreign Key

category -> id 

Slide

«Слайды»

id

int(11)

Идентификатор

PRIMARY

image

varchar(191)

Имя файла изображения

header

varchar(191)

Заголовок

url

varchar(191)

Ссылка

User

«Пользователи»

id

int(11)

Идентификатор

PRIMARY

lastname

varchar(191)

Фамилия

firstname

varchar(191)

Имя

fname

varchar(191)

Отчество

phone

varchar(191)

Телефон

password

varchar(191)

Пароль

email

varchar(191)

E-mail

userstatus_id

int(11)

Код статуса пользователя

Foreign Key

userstatus -> id

В проекте используется реляционные (связанные между собой) таблицы базы данных. Например, каждый товар имеет свою одну категорию. В это же время одна категория содержит в себе много товаров. Такой тип связи называется «один-ко-многим».

Далее рассмотрим тип связи «многие-ко-многим». В нашем проекте есть и такой тип связи. Один заказ может содержать много товаров. Один товар может быть соотнесен к многим заказам. Чтобы реализовать подобный тип связи, необходимо создать третью таблицу-связку, которая будет содержать в одной записи код товара и код заказа.

На данном этапе пришло время создать ER-модель базы данных. Она будет содержать в себе все таблицы и ключевые связи между ними, которые были описаны выше.

Данная ER-диаграмма представлена на Диаграмма 5.

C:\Users\Alex\Desktop\КУРСОВАЯ ПРОМО-САЙТ\База1.png

Диаграмма 5 – ER-диаграмма базы данных проекта

Дамп базы данных проекта доступен в приложении Б.

3.2. Пользовательские функции и запросы к базе данных

В данном разделе будут рассмотрены основные пользовательские функции, которые работают с таблицами базы данных.

Вся работа админпанели построена на принципе CRUD (от сочетания английских слов «create» , «read», «update», «delete»). Это основные функции работы с таблицами – создание, просмотр, редактирование и удаление записей.

Функция index в каждом модуле административной части отвечает за просмотр всех записей в таблице.

Тип запроса к таблице базы данных, применяемый в этой функции – SELECT.

Вот пример запроса к таблице категорий:

SELECT id, name, image, (SELECT name FROM category WHERE id = C.parent_id) AS parent_id FROM category AS C WHERE 1 ORDER BY id

Интересно отметить, что здесь применяется так называемый вложенный SELECT, т.е. в данном запросе, кроме идентификатора, наименования, имени файла изображения мы получаем еще и имя родительской категории благодаря ключевому полю и связям.

Функции updateform и update в каждом модуле административной части отвечает за редактирование всех записей в таблице.

Функция updateform c входным параметром id применяет SELECT-запрос, доставая из таблицы запись с идентификатором id. В ней создается форма ввода данных, заполненная из таблицы. Данные можно редактировать и отсылать на сервер для обработки функцией update посредством POST-запроса.

Функция update обрабатывает POST-запрос и сохраняет данные в таблице

Тип запроса к таблице базы данных, применяемый в этой функции – UPDATE.

Вот пример запроса к таблице категорий:

Функция insertform вызывает updateform без параметров, и тем самым создается пустая форма ввода для создания новой категории, которая передает управление функции insert.

UPDATE category SET name = 'Бытовая техника', parent_id = '1', image = 'uploads/cat1.jpg' WHERE id=2

Функция insert обрабатывает POST-запрос и создает новую запись в таблице

Тип запроса к таблице базы данных, применяемый в этой функции – INSERT.

Вот пример запроса к таблице категорий:

INSERT INTO category (name, parent_id, image) VALUES (‘Новая категория’, 1, ‘myimage.jpg’)

Функция delete удаляет запись из таблицы по идентификатору

Тип запроса к таблице базы данных, применяемый в этой функции – DELETE.

Вот пример запроса к таблице категорий:

DELETE FROM category WHERE id = 10

В приложении А находится листинг программного модуля Category.php с программным кодом, содержащим вышеупомянутые функции.

4. Описание структуры клиентской части

В данном разделе будет рассмотрена структура клиентской части промо-сайта. К клиентской части относится та часть сайта, которая отображается с помощью HTML-кода в браузере пользователя.

4.1. Описание интерфейса «Обычный пользователь»

Главная страница сайта имеет следующую структуру (см. Рисунок 2):

Рисунок 2 – Структура главной страницы сайта

Визуально она выгдядит следующим образом (cм. Рисунок 3):

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

Остальные страницы имеют структуру, показанную на Рисунок 4.

Далее будет рассмотрен структура каталога. Внешний вид каталога (список категорий) изображен на Рисунок 5.

C:\Users\Alex\Downloads\Screenshot_2019-06-17 Компания Галактика Техника по низким ценам.png

Рисунок 3 – Внешний вид главной страницы сайта

Рисунок 4 – Структура остальных страниц, кроме главной

Рисунок 5 - Каталог (список категорий)

Содержимое категории (список товаров выглядит, как показано на Рисунок 6)

Рисунок 6 – Список товаров в категории

Нажав на гиперссылку в карточке товара, пользователь попадает на страницу товара (см. Рисунок 7).

Рисунок 7 – Страница товара

Пользователь может поместить товар в корзину, нажав на ссылку «В корзину». Он получает соответствующее уведомление.

В меню пользователя со статусом «Пользователь» имеется вкладка «Кабинет». Его функции будут рассмотрены в разделе «Инструкция пользователя». Также там будет рассмотрена работа с корзиной и оформление заказа.

4.2 Описание интерфейса «Администратор»

Внешний вид страниц сайта для пользователя со статусом «Администратор» ничем не отличается, за исключением того, что у администратора вместо ссылки «Кабинет» в меню стоит ссылка «Админпанель».

Функции админпанели будут рассмотрены в разделе «Инструкция пользователя».

4.3. Инструкция пользователя

4.3.1. Инструкция простого пользователя

Авторизация.

Авторизация пользователя доступна по ссылке «Войти» -> «Войти». Форма авторизации выглядит следующим образом (см. Рисунок 8):

Рисунок 8 – Форма авторизации

Заполните корректно все поля и нажмите «Войти».

Регистрация.

Регистрация пользователя доступна по ссылке «Войти» -> «Зарегистрироваться». Форма регистрации выглядит следующим образом (см. Рисунок 9):

Рисунок 9 – Форма регистрации

Заполните корректно все поля и нажмите «Зарегистрироваться».

Восстановление пароля

Восстановление пароля пользователя доступно по ссылке «Войти» -> «Войти» -> «Забыл пароль». Форма восстановления выглядит следующим образом (см. Рисунок 10):

Рисунок 10 – Форма восстановления пароля

Заполните корректно поле «E-mail» и нажмите «Восстановить». На Вашу почту придет письмо с новым паролем.

Изменение пароля.

Пользователю и администратору доступна функция «Изменить пароль» в кабинете и админпанели соответственно.

Форма изменения пароля схожа с формой регистрации и имеет всего два доступных для редактирования поля.

Изменение пароля пользователя доступно в кабинете или админпанели по ссылке «Изменить пароль». Форма изменения пароля выглядит следующим образом (см. Рисунок 11):

Рисунок 11 – Форма изменения пароля

Заполните корректно все поля и нажмите «Обновить».

Корзина пользователя.

После добавления товара на странице товара, он попадает в корзину. Корзина доступна по нажатию на значок корзины в меню. Внешне корзина выглядит следующим образом (см. Рисунок 12).

Рисунок 12 – Корзина товаров

Здесь пользователь может редактировать содержимое корзины (удалять товары, изменять количество).

Когда корзина отредактирована, можно переходить к оформлению заказа. Форма оформления заказа доступна по нажатию на ссылку «Оформить заказ» и выглядит следующим образом (см. Рисунок 13).

Рисунок 13 – Форма оформления заказа

Заполните корректно все поля, в поле «Комментарий» Вы можете ввести свой адрес, и отправьте форму.

После заполнения формы оформления заказа данные о заказе попадают в базу данных и доступны администратору в админпанели.

4.3.2. Инструкция администратора

Функции администратора гораздо шире, чем функции простого пользователя. Администратору доступно редактирование всей информации, доступной на сайте.

Админпанель предоставляет возможность редактирования следующих сущностей:

  • Меню (просмотр, редактирование, создание, удаление);
  • Категории (просмотр, редактирование, создание, удаление);
  • Товары (просмотр, редактирование, создание, удаление);
  • Новости (просмотр, редактирование, создание, удаление);
  • Слайды (просмотр, редактирование, создание, удаление);
  • Заказы (просмотр, завершение);
  • Пользователи (удаление, редактирование, изменение роли);

Операции CRUD (просмотр, редактирование, создание, удаление) выполняются аналогично для всех сущностей, поэтому будет рассмотрена одна сущность как пример.

Просмотр списка товаров.

Как было сказано выше, за отображение списка товаров в таблице отвечает функция index каждого модуля админпанели.

Таблица товаров выглядит следующим образом (см. Рисунок 14):

Рисунок 14 – Таблица товаров

Для удаления товара необходимо нажать на крестик в соответствующей строке и подтвердить удаление. Для редактирования необходимо нажать на карандаш. Будет доступна форма, показанная на Рисунок 15.

Рисунок 15 – Форма редактирования товара

Заполните корректно все поля и нажмите «Сохранить изменения».

Добавление нового товара доступно по ссылке «Добавить новый». Будет доступна форма, показанная на , но с пустыми полями.

Заполните корректно все поля формы и нажмите «Добавить».

Обработка заказов.

Работа с заказами отличается от стандартной процедуры CRUD. Ведь заказы создает пользователь. Поэтому создание заказов в админпанели не предусмотрено, как и редактирование и удаление.

Таблица заказов показана на Рисунок 16.

Рисунок 16 – Таблица заказов

Администратор может лишь завершить заказ, нажав «Завершить». Также для заказов предусмотрен просмотр товаров, помещенных в заказ. Он доступен по ссылке «Товары» в строке заказа и выглядит, как показано на Рисунок 17.

Рисунок 17 – Подробности заказа

Отличается от стандартной процедуры CRUD и обработка данных о пользователях. Пользователь регистрирует (добавляет) себя сам. Таблица пользователей представлена на Рисунок 18.

Рисунок 18 – Таблица пользователей

Администратор может изменить роль пользователя на администратора и наоборот, нажав на аватар в соответствующей строке.

ЗАКЛЮЧЕНИЕ

В процессе написания курсовой работы и разработки программного обеспечения согласно техническому заданию были сделаны следующие выводы:

  • современная торговая компания для успешного выполнения своей деятельности нуждается в использовании передовых компьютерных технологий;
  • для успешного внедрения технологий необходима профессиональная разработка промо-сайта компании;
  • промо-сайт торговой компании – это очень важный элемент ведения бизнеса;
  • грамотное создание и управление информационным промо-сайтом компании приносит большую прибыль;

В заключительной части работы можно выделить несколько основных положений данного исследования и практической работы.

Основные положения теоретической части проекта:

  • Был проведен анализ исходных данных и разработка технического задания;
  • Было произведён выбор программного обеспечения;

Основные положения практической части проекта:

  • согласно выводам теоретической части проекта был составлен и реализован план разработки промо–сайта;
  • был собран информационный материал для наполнения сайта;
  • была составлена структура промо–сайта;
  • были определены функции и разработан функционал, необходимый для размещения на промо–сайте;
  • была выбрана среда разработки;
  • был разработан прототип промо–сайта;
  • была разработана административная панель, позволяющая редактировать всю информацию, содержащуюся на сайте.

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

Относительно дальнейших перспектив исследования темы можно было бы дать следующие советы. В рамках данной работы охватить все аспекты предоставления информации на информационном промо–сайте невозможно. Но если развивать эту тему, можно было бы более глубоко вникнуть в вопросы более продуктивного взаимодействия самой компании и пользователей, нуждающихся в ее услугах. Отдельной полноценной исследовательской работы заслуживает SEO–оптимизация сайта с целью поднятия его рейтинга в поисковых системах.

Итак, перед разработчиком была поставлена цель: создание сайта торговой компании «Галактика». Гипотеза о том, что данная тема исследования важна и необходима, была подтверждена аналитически и реализован проект согласно этой гипотезе практически.

Согласно техническому заданию, сайт должен быть создан с помощью языка гипертекстовой разметки HTML, языка программирования CSS и каскадной таблицы сталей CSS. Он должен содержать актуальную информацию о деятельности компании и предоставляемых услугах и контактные данные компании.

Интерфейс сайта должен быть дружественным и понятным даже неопытному пользователю.

Дизайн должен быть управляем при помощи каскадных таблиц стилей и быть адаптивным для всех типов устройств.

Общая концепция сайта

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

Дизайн

Сайт содержит единый дизайн на всем страницах. Интерфейс дружественный для посетителя и понятен даже неопытным пользователям. Дизайн сайта управляем каскадными стилями CSS и является адаптивным для всех типов устройств.

Набор веб–разработчика и локальный сервер

Для реализации проекта использован локальный сервер «Openserver».

Он включает в себя локальный сервер, систему управления базами данных и среду программирования PHP.

Другими словами, openserver позволяет полностью эмулировать работу сайта на локальном компьютере, что существенно упрощает разработку и реализацию проекта [4].

В результате разработки проекта было проведено знакомство и освоение разработки промо–сайта, форматирование отображаемых элементов при помощи каскадных таблиц стилей CSS, а также при помощи языка программирования PHP.

Особую помощь проекту оказала CSS–библиотека BOOTSTRAP, которая отвечает за адаптивный дизайн сайта.

В целом, проект успешно реализован и полностью работоспособен.

СПИСОК ЛИТЕРАТУРЫ

1. Ipipe.ru Установка OpenServer. [Электронный ресурс] // iPipe.ru. - https://www.ipipe.ru/info/ustanovka-openserver.html

2. HTML5BOOK.RU Адаптивная верстка сайта [Электронный ресурс] // HTML5BOOK.RU. - https://html5book.ru/adaptivnaya-vyorstka-sayta.

3. WebReference Уроки по HTML и CSS [Электронный ресурс] // WebReference. - https://webref.ru/layout/learn-html-css.

4. Open Server — профессиональный инструмент веб-разработчика под Windows [Электронный ресурс] // Википедия. - https://habr.com/ru/post/137388

5. PHP, SQL [Электронный ресурс] / блог. - Россия, 2010.: http://phpsql.ru/.

6. PHPForum [Электронный ресурс] /форум.- Россия, 2003. - Режим доступа: http://phpforum.ru. - Дата доступа: 09.02.2012.

7. Богданов, М.Р. Перспективные языки веб-разработки / М.Р. Богданов. - 2-е изд., испр. - М. : Национальный Открытый Университет «ИНТУИТ», 2016

8. Википедия Bootstrap_(Фреймворк) [Электронный ресурс] https://ru.wikipedia.org/wiki/Bootstrap_(Фреймворк)

9. Гущин А.Н. Базы данных: учебник. - М.: Директ-Медиа, 2014. - 266с

10. Мазуркевич, А. PHP: настольная книга программиста / А. Мазуркевич. - М.: Новое знание, 2003. - 480 с.

11. Макфарланд Д. Большая книга CSS. 3-е изд. [Текст]. - СПб : Питер, 2014. - 608 стр.

12. Мейер, Б. Инструменты, алгоритмы и структуры данных / Б. Мейер. - 2-е изд., испр. - М. : Национальный Открытый Университет «ИНТУИТ», 2016.

13. Никсон, Р. Создаем динамические web-сайты с помощью PHP, MySQL и JavaScript / Р. Никсон. - П.: Питер, 2011. - 496 с.

14. Парк, Д. PHP и MySQL. Библия программиста / Д. Парк, С. Суэринг. - Диалектика, 2010. - 912 с.

15. Прохоренок, Н. HTML, JavaScript, PHP и MySQL. Джентльменский набор Web-мастера / Н. Прохоренок. - СПб.: БХВ - Петербург., 2010. - 900 с.

16. Савельева, Н.В. Язык программирования PHP / Н.В. Савельева. - 2-е изд., испр. - М. : Национальный Открытый Университет «ИНТУИТ», 2016

17. Томсон, Л. Разработка Web-приложений на РНР и MySQL/ Л. Томсон. - М.: ДиаСофтЮП, 2003. - 672 с.

18. Филиппов, С.А. Основы современного веб-программирования [Электронный ресурс].— М. : НИЯУ МИФИ, 2011 .— 160 с.

19. Фримен Эрик и Робсон Элизабет Изучаем HTML, XHTML [Текст]. - СПб : Питер, 2014. – 720 стр.

20. Харрис, Э. PHP/MySQL для начинающих / Э. Харрис. - М.: Кудиц - образ, 2005.

ПРИЛОЖЕНИЯ

Приложение А

Листинг программного файла Category.php

<?php

// Вывод всех записей в панель

function index(){

?>

<script>

function confirmSpelll() {

if (confirm("Вы действительно хотите удалить этот элемент?")) return true;

else return false;

}

</script>

<h1>Категории</h1>

<center><a href='?table=category&action=insertform'>Добавить новую</a></center>

<table>

<tr>

<th></th>

<th>Номер</th>

<th>Наименование</th>

<th>Родительская категория</th>

</tr>

<?php

$sql = "SELECT id,name,image,(SELECT name FROM category WHERE id = C.parent_id) AS parent_id FROM category AS C WHERE 1 ORDER BY id";

$result = getMysqliResult($sql);

if($result) while ($category = $result->fetch_assoc()) {

?>

<tr>

<td style='width:70px;'>

<?php if($category[id]<>1) { ?>

<a onclick='return confirmSpelll();' href='?table=category&action=delete&id=<?php echo $category['id']; ?>'><img src='images/del.png'></a>&nbsp;&nbsp;

<a href='?table=category&action=updateform&id=<?php echo $category['id']; ?>'><img src='images/edit.png'></a>

<?php } ?>

</td>

<td><?php echo $category['id']; ?> </td>

<td><?php echo $category['name']; ?> </td>

<td><?php echo $category['parent_id']; ?> </td>

</tr>

<?php

}

echo "</table>";

}

// Обновления записи (форма)

function updateform($id = NULL){

if(!empty($id)) {

$sql = "SELECT * FROM category WHERE id=".$id." ORDER BY id";

$result = getMysqliResult($sql);

if($result)

$category = $result->fetch_assoc();

}

else {

$fields = "id,name,image,parent_id";

foreach(explode(",",$fields) as $f) $category[$f] = '';

}

if(!empty($id)) echo "<h1 class='text-center' style='margin-top:60px;'>Редактирование записи № ".$id." в таблице Категории</h1></center>".PHP_EOL;

else echo "<center><h1 class='text-center' style='margin-top:60px;'>Добавление записи в таблицу Категории</h1></center>".PHP_EOL;

echo "<div class='row'>".PHP_EOL;

echo ' <div class="col-xs-1 col-sm-3 col-md-4 col-lg-4"></div>'.PHP_EOL;

echo ' <div class="p-3 col-xs-10 col-sm-6 col-md-4 col-lg-4" style="margin:10px auto 20px auto; padding:5px 10px; border:1px solid #ddd; border-radius:10px;">'.PHP_EOL;

echo ' <div style="position:relative;width:100%; text-align:right; float:right;right:-13px;">'.PHP_EOL;

echo ' <a href="admin.php"><span style="color:grey; font-size:20px" class="btnicon icon-close"></span></a>'.PHP_EOL;

echo ' </div>'.PHP_EOL;

echo " <form enctype='multipart/form-data' action='?table=category' method='post'>".PHP_EOL;

echo " <input type='hidden' name='id' value = '".$id."'>".PHP_EOL;

?>

<div class='form-group'>

<label style='word-wrap: break-word;'>Наименование</label>

<div>

<input class='form-control' id='name' name='name' type='text' value='<?php echo $category['name']; ?>'/>

</div>

</div>

<div class='form-group'>

<label style='word-wrap: break-word;'>Изображение</label>

<div>

<?php if(!empty($category['image'])) echo '<img width = "25%" src="'.$category['image'].'">'; ?>

<input id = "image" name = "image" type="file" />

<input cols = "70" name = "imagename" type = "hidden" value="<?php echo $category['image']; ?>" />

</div>

</div>

<div class='form-group'>

<label style='word-wrap: break-word;'>Родительская категория</label>

<div>

<select class="form-control" id="parent_id" name="parent_id">

<?php

if(!empty($category['id'])) $sql = "SELECT id,name FROM category AS C WHERE (id<>".$category['id'].") AND (id<>1) ORDER BY name";

else $sql = "SELECT id,name FROM category WHERE 1 ORDER By name";

$result = getMysqliResult($sql);

$options = array();

while ($option = $result->fetch_assoc())

$options[] = getPathCategory($option['id'])." ".$option['id'];

asort($options);

echo '<option value="1" '.is_sel(1,$category['parent_id']).'>Каталог</option>';

foreach($options as $option) {

$cid = (int)substr($option, -3);

echo '<option value="'.$id.'" '.is_sel($cid,$category['parent_id']).'>'.substr($option,0,strlen($option)-5).'</option>';

}

?>

</select>

</div>

</div>

<?php

if(!empty($id)) echo " <input type='hidden' name='action' value = 'update'>".PHP_EOL;

else echo " <input type='hidden' name='action' value = 'insert'>".PHP_EOL;

echo " <input type='hidden' name='table' value = 'category'>".PHP_EOL;

if(!empty($id)) echo ' <div class="text-center"><input class="submit" id="Submit" value="Сохранить изменения" type="submit" name="Submit" ></div>'.PHP_EOL;

else echo ' <div class="text-center"><input class="submit" id="Submit" value="Добавить" type="submit" name="Submit" ></div>'.PHP_EOL;

echo " </form>".PHP_EOL;

echo " </div>".PHP_EOL;

echo "</div>".PHP_EOL;

}

// Обновление записи

function update() {

$post = $_POST;

$files = $_FILES;

if (!empty($files)) {

$uploaddir = 'uploads/';

foreach($files as $ki=>$f) {

$var = $ki."name";

$uploadfile = $uploaddir . str_replace("-".$end,".".$end,str2url(basename($files[$ki]['name'])));

if (basename($files[$ki]['name'])) {

move_uploaded_file($files[$ki]['tmp_name'] , $uploadfile);

$post[$ki] = $uploadfile;

} else $post[$ki] = $post[$var];

unset($post[$var]);

}

}

$table = $post['table'];

$id = $post['id'];

unset($post['Submit'],$post['action'],$post['table'],$post['id']);

$values = array();

foreach($post as $key=>$val) $values[] = $key." = '".$val."'";

$sql = "UPDATE category SET ".implode(",",$values)." WHERE id=".$id;

$result = getMysqliResult($sql);

index();

}

// Добавление записи

function insert() {

$post = $_POST;

$files = $_FILES;

if (!empty($files)) {

$uploaddir = 'uploads/';

foreach($files as $ki=>$f) {

$var = $ki."name";

$uploadfile = $uploaddir . str_replace("-".$end,".".$end,str2url(basename($files[$ki]['name'])));

if (basename($files[$ki]['name'])) {

move_uploaded_file($files[$ki]['tmp_name'] , $uploadfile);

$post[$ki] = $uploadfile;

} else $post[$ki] = $post[$var];

unset($post[$var]);

}

}

$table = $post['table'];

$id = $post['id'];

unset($post['Submit'],$post['action'],$post['table'],$post['id']);

$values = "'".implode("','",array_values($post))."'";

$keys = implode(",",array_keys($post));

$sql = "INSERT INTO category (".$keys.") VALUES (".$values.")";

$result = getMysqliResult($sql);

index();

}

function delete() {

$id = $_GET['id'];

$sql = "DELETE FROM category WHERE id=".$id;

$result = getMysqliResult($sql);

index();

}

// Добавления записи (форма)

function insertform(){

updateform();

}

Приложение Б

Дамп базы данных проекта promo.sql

--

-- База данных: `promo`

--

-- --------------------------------------------------------

--

-- Структура таблицы `cart`

--

CREATE TABLE IF NOT EXISTS `cart` (

`id` int(11) unsigned NOT NULL AUTO_INCREMENT,

`user_id` int(11) unsigned DEFAULT NULL,

`product_id` int(11) unsigned DEFAULT NULL,

`kol` int(5) NOT NULL,

PRIMARY KEY (`id`),

KEY `index_foreignkey_cart_user` (`user_id`),

KEY `index_foreignkey_cart_product` (`product_id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci AUTO_INCREMENT=21 ;

--

-- Дамп данных таблицы `cart`

--

INSERT INTO `cart` (`id`, `user_id`, `product_id`, `kol`) VALUES

(11, 3, 2, 1),

(18, 6, 13, 1),

(19, 6, 12, 5),

(20, 6, 3, 3);

-- --------------------------------------------------------

--

-- Структура таблицы `category`

--

CREATE TABLE IF NOT EXISTS `category` (

`id` int(11) unsigned NOT NULL AUTO_INCREMENT,

`name` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,

`image` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,

`parent_id` int(11) unsigned DEFAULT NULL,

PRIMARY KEY (`id`),

KEY `index_foreignkey_category_parent` (`parent_id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci AUTO_INCREMENT=6 ;

--

-- Дамп данных таблицы `category`

--

INSERT INTO `category` (`id`, `name`, `image`, `parent_id`) VALUES

(1, 'Каталог', '', NULL),

(2, 'Бытовая техника', 'uploads/cat1.jpg', 1),

(3, 'Климатическая техника', 'uploads/cat2.jpg', 1),

(4, 'Электроника', 'uploads/cat3.jpg', 1),

(5, 'Встраиваемая техника', 'uploads/cat4.jpg', 1);

-- --------------------------------------------------------

--

-- Структура таблицы `menu`

--

CREATE TABLE IF NOT EXISTS `menu` (

`id` int(11) unsigned NOT NULL AUTO_INCREMENT,

`name` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,

`image` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,

`url` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,

`content` text COLLATE utf8mb4_unicode_ci,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci AUTO_INCREMENT=13 ;

--

-- Дамп данных таблицы `menu`

--

INSERT INTO `menu` (`id`, `name`, `image`, `url`, `content`) VALUES

(1, 'Главная', '', 'main', ''),

(2, 'О компании', 'uploads/Какая-то картинка.jpg', 'about', '<p>«ГАЛАКТИКА» — сеть торговых центров, один из крупнейших налогоплательщиков региона в категории ритейл и лидер розничной торговли. «ГАЛАКТИКА» стабильно развивается, профессионально совершенствуется, предоставляя возможность покупателям приобретать качественный товар для строительства, ремонта, декорирования и оформления жилья в формате «от и до» и воспользоваться дополнительными услугами в торговых центрах.</p>\r\n\r\n<h3 class="text-primary">Философия и принципы работы компании</h3>\r\n<p>У торговых центров «ГАЛАКТИКА» четко сформирована собственная философия, которая заключается в максимальном удовлетворении потребностей покупателей: индивидуальном подходе, предоставлении лучших цен, обеспечении отличного сервиса и постоянной заботе о потребителях. Ведь залогом успешной деятельности сети «ГАЛАКТИКА» есть главное правило обслуживания клиентов — «ПОКУПАТЕЛЬ ВСЕГДА ПРАВ!». Лояльная ценовая политика и демократический подход к потребностям клиентов показывают, что торговые центры «ГАЛАКТИКА» рассчитаны на разные слои населения.</p>\r\n\r\n<p>Традиционный принцип работы компании — «ПРОИЗВОДИТЕЛЬ-ГАЛАКТИКА-ПОТРЕБИТЕЛЬ» позволяет избежать посредников и дает возможность компании гарантированно получать лучшие цены на рынке и качество товаров для покупателей торговых центров «ГАЛАКТИКА».</p>\r\n<h3 class="text-primary">Социальная ответственность компании</h3>\r\n<p>Социальная ответственность — это неотъемлемая часть стратегии развития компании «ГАЛАКТИКА». Регулярно «ГАЛАКТИКА» принимает активное участие в жизни региона.\r\n</p>\r\n<p>К новогодним праздникам торговые центры «ГАЛАКТИКА» проводят детские утренники, где детей радуют аниматоры, конкурсы, игры и бесплатные подарки.\r\n</p>\r\n<h3 class="text-primary">Уникальность формата компании</h3>\r\n<p>«ГАЛАКТИКА» работает в уникальном формате, который сочетает строительное, хозяйственное и продовольственное направления. Следует отметить, что на сегодняшний день такого формата среди других операторов региона нет. Открытие таких новых ассортиментных групп, как: посуда, текстиль, подарки, «Спорттовары» — широкий ассортимент тренажеров и аксессуаров, товаров для спортивных игр, фитнеса и т.д.; «Детские товары» — игрушки, средства гигиены и ухода, детское питание, «Канцтовары» — товары для творчества, обучения и офиса, «Бытовая техника» — широкая линейка товаров для дома, работы и отдыха, предоставило покупателю возможность комплексно приобрести все необходимое для ведения хозяйства, обустройства дома и быта в одной торговой точке.\r\n</p>\r\n<p>Сейчас компания системно развивается, постоянно совершенствуется и постепенно трансформируется в мультиформатный центр торговли.</p>'),

(3, 'Каталог', '', 'catalog', ''),

(8, 'Ваши предложения', '', 'request', ''),

(10, 'Контакты', '', 'contacts', ''),

(11, 'Новости', '', 'news', '');

-- --------------------------------------------------------

--

-- Структура таблицы `news`

--

CREATE TABLE IF NOT EXISTS `news` (

`id` int(11) unsigned NOT NULL AUTO_INCREMENT,

`name` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,

`image` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,

`content` text COLLATE utf8mb4_unicode_ci,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci AUTO_INCREMENT=4 ;

--

-- Дамп данных таблицы `news`

--

INSERT INTO `news` (`id`, `name`, `image`, `content`) VALUES

(1, 'Состоялся второй розыгрыш акции «Садовый БУМ»!', 'uploads/uteplo_1.jpg', 'В субботу 01 июля в 17-00 в ТЦ "Галактика" произошел второй заключительный розыгрыш акции "Садовый бум".\r\nОбщий фонд акции 600000 рублей! Были разыграны денежные призы: 2500, 5000, 1000, 30000 и 50000 руб. И дорогие подарки: бензиновые и электрические мотокосы, бензиновые газонокосилки, мини мойки для авто и др.\r\nДля детей была создана атмосфера праздника. Пофессионалы - аниматоры в потрясающих костюмах детских героев играли и фотографировались с детками. Атмосфера праздника состоялась на славу!'),

(2, 'ВЕЛОБУМ! Дарим велосипед!', 'uploads/5mh1rge3.jpg', 'ГАЛАКТИКА ДАРИТ ВЕЛОСИПЕД!\r\n\r\nЧтобы участвовать:\r\nСделай репост записи❗ И НА СВОЕЙ СТЕНЕ❗ В КОММЕНТАРИЯХ ПОД ПОСТОМ напиши номер акционного чека (фото чека)!\r\nПодпишись на официальную группу Вконтакте https://vk.com/galaktika_official ????\r\nС 1 по 30 июня покупай «ТОВАРЫ ДЛЯ СПОРТА» на сумму от 1500 руб.\r\n30 июня 2019 года в 12:00 часов состоится определение ПОБЕДИТЕЛЯ с помощью специального приложения Random.app\r\n\r\nОбязательным условием определения Победителя и получение им Приза является наличие и предъявление оригинала расчетного документа(фискального чека), который вы оставляли в комментариях под постом НА СВОЕЙ СТЕНЕ, а также предъявления удостоверения личности Победителя.'),

(3, 'День защиты детей', 'uploads/12121.png', 'ЖДЁМ ВАС!\r\n\r\n1 июня, 2 июня на все детские товары -15%');

-- --------------------------------------------------------

--

-- Структура таблицы `order`

--

CREATE TABLE IF NOT EXISTS `order` (

`id` int(11) unsigned NOT NULL AUTO_INCREMENT,

`date` timestamp NULL DEFAULT CURRENT_TIMESTAMP,

`user_id` int(11) unsigned DEFAULT NULL,

`fio` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,

`phone` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,

`email` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,

`comment` text COLLATE utf8mb4_unicode_ci NOT NULL,

`orderstatus_id` int(11) unsigned DEFAULT NULL,

PRIMARY KEY (`id`),

KEY `index_foreignkey_order_user` (`user_id`),

KEY `index_foreignkey_order_orderstatus` (`orderstatus_id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci AUTO_INCREMENT=5 ;

--

-- Дамп данных таблицы `order`

--

INSERT INTO `order` (`id`, `date`, `user_id`, `fio`, `phone`, `email`, `comment`, `orderstatus_id`) VALUES

(1, '2019-06-15 11:18:05', 6, 'Петров Петр Петрович', '0792873498374', 'petrov@mail.ru', 'г. Москва, ул. Краснопресненская 10 кв. 18', 2),

(2, '2019-06-16 03:00:31', 6, 'Петров Петр Петрович', '0792873498374', 'petrov@mail.ru', 'г. Москва, ул. Краснопресненская 10 кв. 18', 2),

(3, '2019-06-16 03:05:31', 6, 'Петров Петр Петрович', '0792873498374', 'petrov@mail.ru', 'г. Москва, ул. Краснопресненская 10 кв. 18', 1),

(4, '2019-06-16 04:06:46', 6, 'Петров Петр Петрович', '0792873498374', 'petrov@mail.ru', 'г. Москва, ул. Краснопресненская 10 кв. 18', 1);

-- --------------------------------------------------------

--

-- Структура таблицы `orderstatus`

--

CREATE TABLE IF NOT EXISTS `orderstatus` (

`id` int(11) unsigned NOT NULL AUTO_INCREMENT,

`name` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci AUTO_INCREMENT=3 ;

--

-- Дамп данных таблицы `orderstatus`

--

INSERT INTO `orderstatus` (`id`, `name`) VALUES

(1, 'На исполнении'),

(2, 'Завершен');

-- --------------------------------------------------------

--

-- Структура таблицы `order_product`

--

CREATE TABLE IF NOT EXISTS `order_product` (

`id` int(11) unsigned NOT NULL AUTO_INCREMENT,

`product_id` int(11) unsigned DEFAULT NULL,

`order_id` int(11) unsigned DEFAULT NULL,

`kol` int(10) NOT NULL,

PRIMARY KEY (`id`),

UNIQUE KEY `UQ_72c780df41fbb5ef3e7e73a96d04067ddafefa10` (`order_id`,`product_id`),

KEY `index_foreignkey_order_product_product` (`product_id`),

KEY `index_foreignkey_order_product_order` (`order_id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci AUTO_INCREMENT=7 ;

--

-- Дамп данных таблицы `order_product`

--

INSERT INTO `order_product` (`id`, `product_id`, `order_id`, `kol`) VALUES

(1, 2, 1, 2),

(2, 14, 2, 1),

(3, 4, 3, 2),

(4, 2, 4, 2),

(5, 4, 4, 5),

(6, 13, 4, 10);

-- --------------------------------------------------------

--

-- Структура таблицы `product`

--

CREATE TABLE IF NOT EXISTS `product` (

`id` int(11) unsigned NOT NULL AUTO_INCREMENT,

`name` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,

`image` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,

`description` text COLLATE utf8mb4_unicode_ci,

`price` double NOT NULL,

`category_id` int(11) unsigned DEFAULT NULL,

PRIMARY KEY (`id`),

KEY `index_foreignkey_product_category` (`category_id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci AUTO_INCREMENT=15 ;

--

-- Дамп данных таблицы `product`

--

INSERT INTO `product` (`id`, `name`, `image`, `description`, `price`, `category_id`) VALUES

(1, 'Вентилятор настольный ВС-9 Умница', 'uploads/vs-9-umnica.jpg', 'Функция автоматического поворота на 90°, возможность регулировки угла наклона,защитная решетка с мелкой сеткой.', 1037, 3),

(2, 'Сплит-система «Akvilon» модель NL-28 +', 'uploads/kondicioner-nl-24-akvilon.jpg', 'Охлаждение / обогрев / вентиляция / осушение\r\nАвтоматический перезапуск\r\nЭкономное энергопотребление\r\nРегулировка и поддержание заданной температуры\r\nТурборежим, ускоряющий охлаждение / обогрев\r\nНочной режим «Sleep»\r\nЭкологически чистый фреон R410A\r\nНизкий уровень шума\r\nТаймер на включение/выключение\r\nСамодиагностика и защита\r\nНовейшая система контроля', 28715, 3),

(3, 'Духовой шкаф Electrolux EOC 5851 FOX', 'uploads/eoc-5851-fox_md.jpg', 'Духовка: электрическая независимая Объём духовки: 74 л Энергопотребление: класс A Мощность подключения: 3.50 кВт Максимальная температура: 300 °С Режимов нагрева: 10 Автоматических программ: 90 Гриль: есть Конвекция: есть Размораживание: есть Управление Переключатели: сенсорные Таймер: есть Дисплей: сенсорный Термощуп: есть \n\n', 42000, 5),

(4, 'Вытяжка кухонная Ventolux MONACO 60 OW/BRONZE (800)', 'uploads/monaco-60-ow-bronze-800_md.jpg', 'Тип: купольная Материал декора: рейлинг (рейка) Тип монтажа: пристенный Производительность: 800 куб. м/ч Тип управления: кнопочное Режим работы: отвод воздуха Дополнительные характеристики Автоматическое вкл/выкл (сенсор): нет Таймер: нет Диаметр воздуховода: 15 см Количество скоростей: 3 Тип освещения: 2х40 Вт Тип фильтра: алюминиевый Источник: https://www.tehnos.com.ua/p97142/vytyazhki-kuhonnye-ventolux-monaco-60-ow-bronze-800 © Технос', 10500, 5),

(5, 'Встраиваемая морозильная камера Freggia LSB0010', 'uploads/freggia_lsb0010_-main_md.jpg', 'Тип:встраиваемый Дизайн:Compatto Климатический класс :SN (10 °C-32 °C) Класс энергопотребления :A+ Общий объем, л:107 Полезный объем, л:95 Количество дверей:1 Петли под встройку :Есть Петли:правые Перенавешиваемая дверца :Есть Прозрачные аксессуары :Есть Цвет корпуса:белый Цвет резинового уплотнителя:белый Регулируемые ножки :Есть Цвет:белый\r\n', 15600, 5),

(6, 'Встраиваемая кофеварка Electrolux EBC 54524 OX', 'uploads/ebc-54524-ox_md.jpg', 'Самый простой способ приготовить капучино, не уступающего тому, что подают в кафе \r\nЗахотелось капучино? \r\nНажмите на кнопку «Капучино» – и полученный кофе не уступит тому, что подают в кафе. \r\nХарактерный вкус напитка, приготовленного на профессиональном оборудовании, получить не труднее, чем выпить сам кофе. \r\nВарите каждую чашку кофе так, чтобы она соответствовала вашему настроению \r\nЭта кофеварка может сварить чашку кофе, соответствующее вашему настроению, каким бы оно ни было. Выберите эспрессо, обычную или большую чашку.\r\n', 64000, 5),

(7, 'Сушильная машина Bosch WTN86201PL', 'uploads/wtn86201_md.jpg', 'Тип сушки: конденсационная \r\nЗагрузка: 8 кг \r\nРазмер: полноразмерная \r\nОбщие характеристики \r\nКласс энергопотребления: B \r\nФорма дверцы круглая со стеклом \r\nЗащита от детей: есть \r\nПодсветка барабана: LED \r\nДисплей: есть \r\n\r\nФункции \r\n\r\nКоличество программ: 8 \r\nФункция антисминания: есть \r\nКонтроль влажности белья: есть \r\nТаймер отсрочки старта: есть, до 24 часов \r\nБыстрая сушка: есть \r\nИндикатор заполнености бака конденсата: есть \r\n\r\n', 25000, 2),

(8, 'Морозильная камера Whirlpool AFB 601', 'uploads/indesitafb601_md.jpg', 'Тип: морозильная камера \r\nОбщий объем: 86 л\r\nУправление: электромеханическое \r\nЭнергопотребление: класс A (194 кВтч/год) \r\nКоличество камер: 1 \r\nКоличество дверей: 1 \r\nАвтономное сохранение холода: до 17 ч \r\nМощность замораживания: до 8 кг/cутки \r\n\r\nДополнительные возможности \r\n\r\nСуперзаморозка \r\nВозможность перевешивания двери: есть \r\nУровень шума: до 38 дБ\r\n', 10560, 2),

(9, 'Кофеварка DELTA LUX DL-8150К рожковая черная', 'uploads/dl_8150k.jpg', 'Параметры\r\nВместимость 240 мл\r\nМощность 800 Вт\r\nДавление пара 5 Бар\r\n\r\nОписание\r\nКорпус из высококачественного пластика\r\nЖаростойкий стеклянный резервуар для кофе\r\nСъемный многоразовый фильтр из нержавеющей стали\r\nСъемный металлический держатель для фильтра\r\nСъемный моющийся поддон\r\nШкала уровня воды\r\nСветовой индикатор работы\r\nФункция приготовления «Капучино»\r\nФункция «Пауза»\r\nЗащита от перегрева\r\nЦвет: черный', 7680, 2),

(10, 'Тепловентилятор электрический 2000 Вт DELTA D-201/1', 'uploads/d_201_1.jpg', 'Параметры\r\nМаксимальная мощность 2000 Вт\r\nНоминальная мощность вентилятора 20 Вт\r\nПлощадь обогрева 20-24 кв.м\r\n\r\nОписание\r\nТепловентилятор предназначен для вентиляции и обогрева небольших помещений\r\nИсполнение - переносное, тип - напольный/настольный\r\nСветовой индикатор работы\r\nТри режима работы: вентилятор (холодный воздух), теплый воздух (1000 Вт), горячий воздух (2000 Вт)\r\nРегулируемый термостат\r\nРегулируемое направление потока воздуха\r\nЗащита от перегрева\r\nПроизводитель: Россия\r\n', 2345, 3),

(11, 'Обогреватель масляный 11-секционный с вентилятором D25F-11', 'uploads/d25f_11.jpg', 'Параметры\r\nМаксимальная мощность 2500 Вт\r\nКоличество секций 11\r\nМощность вентилятора 600 Вт\r\nОписание\r\nБыстрый и бесшумный нагрев\r\nТри степени нагрева\r\nМеханическое управление\r\nВентилятор для улучшения теплообмена\r\nСветовой индикатор работы\r\nРегулируемый термостат\r\nКолесики и ручка для удобного перемещения\r\nОтсек для хранения шнура\r\nЗащита от перегрева\r\nЦвет: серый', 2300, 3),

(12, 'Пылесос 2000 Вт DELTA LUX DL-0830 красный с черным', 'uploads/dl_0830_red_with_black.jpg', 'Параметры\r\nНоминальная мощность 2000 Вт\r\nМощность всасывания 350 Вт\r\nОбъём контейнера для сбора пыли 3 л\r\nУровень шума 85 дБ\r\nДлина сетевого шнура 5 м\r\nОписание\r\nСистема «Мультициклон», обеспечивающая эффективную уборку без использования мешка для сбора пыли\r\nМногоразовые моющиеся антистатические фильтры\r\nМногоуровневая система фильтрации\r\nРегулируемая мощность всасывания\r\nРегулятор потока воздуха на ручке\r\nМеталлическая телескопическая труба\r\nВертикальная парковка трубы всасывания на корпусе\r\nУдобная ручка для переноски\r\nАвтоматическое сматывание сетевого шнура\r\nНизкий уровень шума\r\nЗащита от перегрева\r\nЦвет: красный с черным', 2780, 2),

(13, 'Lenovo IdeaPad Miix 320', 'uploads/lenovo_80xf0076ra_images_2025045683.jpg', 'Lenovo IdeaPad Miix 320 — сочетание планшета и ноутбука на базе Windows 10. Это удобное решение для работы и досуга в дороге. Процессор до Intel Atom X5-Z8350 обеспечивает отличное качество графики и высокую вычислительную мощность, открывая перед вами новый уровень возможностей для работы и развлечений. Производительность процессора дополняют 4 ГБ оперативной памяти. Для хранения данных предусмотрено 64 ГБ.\r\n\r\nОтличное качество изображения и широкий угол обзора\r\nПланшет Miix 320 оснащен дисплеем стандарта Full HD (с разрешением 1920x1200 точек), обеспечивающим превосходное качество изображения.\r\n\r\nТехнология Мulti-Touch\r\nПростая интеграция с Windows 10, повышенная точность управления.\r\n\r\nДополнительная съемная клавиатура\r\nЛегко переключайтесь между режимами планшета и ноутбука с помощью съемной клавиатуры.\r\n\r\nПревосходная камера\r\nОсновная камера 5 Мп и фронтальная 2 Мп позволят вам снимать фотографии высокого разрешения и обеспечат отличное качество изображения при видеозвонках.', 25000, 4),

(14, 'Ноутбук Acer Nitro 5 AN515-52 (NH.Q3XEU.051) Shale Black', 'uploads/copy_acer_nh_q3xeu_047_5ca318f0682c2_images_11570507552.jpg', '\r\nПроцессор Шестиядерный Intel Core i7-8750H (2.2 - 4.1 ГГц)\r\nСтрана-производитель товара Китай\r\nДиагональ экрана 15.6" (1920x1080) Full HD\r\nОбъем оперативной памяти 16 ГБ\r\nОперационная система Linux\r\n\r\nКраткие характеристики\r\n \r\nЭкран 15.6” IPS (1920x1080) Full HD, матовый / Intel Core i7-8750H (2.2 - 4.1 ГГц) / RAM 16 ГБ\r\n/ HDD 2 ТБ + SSD 256 ГБ / nVidia GeForce GTX 1060, 6 ГБ\r\n/ без ОД / LAN / Wi-Fi / Bluetooth / веб-камера / Linux / 2.7 кг / черный\r\nПоколение процессора Intel 8-ое Coffee Lake\r\nКлавиатура С подсветкой\r\nЦвет Черный', 25600, 4);

-- --------------------------------------------------------

--

-- Структура таблицы `slide`

--

CREATE TABLE IF NOT EXISTS `slide` (

`id` int(11) unsigned NOT NULL AUTO_INCREMENT,

`image` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,

`header` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,

`url` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci AUTO_INCREMENT=4 ;

--

-- Дамп данных таблицы `slide`

--

INSERT INTO `slide` (`id`, `image`, `header`, `url`) VALUES

(1, 'uploads/dl_8150k.jpg', 'Кофеварка DELTA LUX DL-8150К рожковая черная\n', '?page=product&id=9'),

(2, 'uploads/vs-9-umnica.jpg', 'Вентилятор настольный ВС-9 Умница', '?page=product&id=1'),

(3, 'uploads/monaco-60-ow-bronze-800_md.jpg', 'Вытяжка кухонная Ventolux MONACO 60 ', '?page=product&id=4');

-- --------------------------------------------------------

--

-- Структура таблицы `user`

--

CREATE TABLE IF NOT EXISTS `user` (

`id` int(11) unsigned NOT NULL AUTO_INCREMENT,

`lastname` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,

`firstname` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,

`fname` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,

`phone` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,

`password` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,

`email` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,

`userstatus_id` int(11) unsigned DEFAULT NULL,

PRIMARY KEY (`id`),

KEY `index_foreignkey_user_userstatus` (`userstatus_id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci AUTO_INCREMENT=8 ;

--

-- Дамп данных таблицы `user`

--

INSERT INTO `user` (`id`, `lastname`, `firstname`, `fname`, `phone`, `password`, `email`, `userstatus_id`) VALUES

(1, 'Иванов', 'Иван', 'Иванович', '07239428374928', '4dfe6e220d16e7b633cfdd92bcc8050b', 'ivanov@mail.ru', 1),

(3, 'Сидоров', 'Сидор', 'Сидорович', '07438239487', '9cd3acb851a21717cc51c213015eb7a7', 'sidorov@mail.ru', 1),

(5, 'Сергеев', 'Сергей', 'Сергеевич', '0792837498347', '18943b9c5e88aa35c687cce4a36dfb4e', 'sergeev@mail.ru', 2),

(6, 'Петров', 'Петр', 'Петрович', '0792873498374', 'f396c3b74762b1fee69b10abb875139b', 'petrov@mail.ru', 2);

-- --------------------------------------------------------

--

-- Структура таблицы `userstatus`

--

CREATE TABLE IF NOT EXISTS `userstatus` (

`id` int(11) unsigned NOT NULL AUTO_INCREMENT,

`name` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci AUTO_INCREMENT=3 ;

--

-- Дамп данных таблицы `userstatus`

--

INSERT INTO `userstatus` (`id`, `name`) VALUES

(1, 'Администратор'),

(2, 'Пользователь');

--

-- Ограничения внешнего ключа сохраненных таблиц

--

--

-- Ограничения внешнего ключа таблицы `cart`

--

ALTER TABLE `cart`

ADD CONSTRAINT `cart_ibfk_2` FOREIGN KEY (`product_id`) REFERENCES `product` (`id`) ON DELETE SET NULL ON UPDATE SET NULL,

ADD CONSTRAINT `cart_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE SET NULL ON UPDATE SET NULL;

--

-- Ограничения внешнего ключа таблицы `category`

--

ALTER TABLE `category`

ADD CONSTRAINT `c_fk_category_parent_id` FOREIGN KEY (`parent_id`) REFERENCES `category` (`id`) ON DELETE SET NULL ON UPDATE SET NULL;

--

-- Ограничения внешнего ключа таблицы `order`

--

ALTER TABLE `order`

ADD CONSTRAINT `c_fk_order_orderstatus_id` FOREIGN KEY (`orderstatus_id`) REFERENCES `orderstatus` (`id`) ON DELETE SET NULL ON UPDATE SET NULL,

ADD CONSTRAINT `c_fk_order_user_id` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE SET NULL ON UPDATE SET NULL;

--

-- Ограничения внешнего ключа таблицы `order_product`

--

ALTER TABLE `order_product`

ADD CONSTRAINT `order_product_ibfk_2` FOREIGN KEY (`order_id`) REFERENCES `order` (`id`) ON DELETE SET NULL ON UPDATE SET NULL,

ADD CONSTRAINT `order_product_ibfk_1` FOREIGN KEY (`product_id`) REFERENCES `product` (`id`) ON DELETE SET NULL ON UPDATE SET NULL;

--

-- Ограничения внешнего ключа таблицы `product`

--

ALTER TABLE `product`

ADD CONSTRAINT `c_fk_product_category_id` FOREIGN KEY (`category_id`) REFERENCES `category` (`id`) ON DELETE SET NULL ON UPDATE SET NULL;

--

-- Ограничения внешнего ключа таблицы `user`

--

ALTER TABLE `user`

ADD CONSTRAINT `c_fk_user_userstatus_id` FOREIGN KEY (`userstatus_id`) REFERENCES `userstatus` (`id`) ON DELETE SET NULL ON UPDATE SET NULL;