Файл: Разработка сайта интернет-магазина цветов FLOWER-SHOP».pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 20.05.2023

Просмотров: 204

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

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

Рисунок 3.1 – Рисунок структуры базы данных

Запросы к каталогу

Выборка товаров по id категории

public static function getCategoryProducts($category) {

$db = ConnectDb::getConnection();

$result = $db->query("SELECT * FROM products WHERE category_id = $category");

return $result->fetchAll(PDO::FETCH_ASSOC);

}

Запросы к новостям

Выборка новость по id

public static function getOneNews($id) {

$db = ConnectDb::getConnection();

$result = $db->query('SELECT * FROM news WHERE id=' . $id);

return $result->fetch(PDO::FETCH_ASSOC);

}

Вывод всех новостей с сортировкой по id

public static function getNews() {

$db = ConnectDb::getConnection();

$result = $db->query('SELECT * FROM news ORDER BY id DESC');

return $result->fetchAll(PDO::FETCH_ASSOC);

}

Добавление новости

public static function addNews($title, $text, $date) {

$db = ConnectDb::getConnection();

$image = $_FILES['image']['name'];

$tmpName = $_FILES['image']['tmp_name'];

move_uploaded_file($tmpName, 'web/images/' . $image);

$sql = "INSERT INTO news(title, image, text, date) VALUES (:title, :image, :text, :date)";

$statement = $db->prepare($sql);

$statement->bindParam(':title', $title);

$statement->bindParam(':image', $image);

$statement->bindParam(':text', $text);

$statement->bindParam(':date', $date);

$statement->execute();

header('Location: /news');

}

Удаление новости по id

public static function deleteNews($id) {

$db = ConnectDb::getConnection();

$statement = $db->query('DELETE FROM news WHERE id=' . $id);

$statement->execute();

header('Location: /news');

}

Запросы к товарам

Вывод всех товаров с сортировкой по id

public static function getProducts() {

$db = ConnectDb::getConnection();

$result = $db->query('SELECT * FROM products ORDER BY id DESC');

return $result->fetchAll(PDO::FETCH_ASSOC);

}

Выборка товара по id

public static function getProduct($id) {

$db = ConnectDb::getConnection();

$result = $db->query('SELECT * FROM products WHERE id=' . $id);

return $result->fetch(PDO::FETCH_ASSOC);

}

Добавление товара

public static function addProduct($categoryId, $title, $code, $composition, $price) {

$db = ConnectDb::getConnection();

$image = $_FILES['image']['name'];

$tmpName = $_FILES['image']['tmp_name'];

move_uploaded_file($tmpName, 'web/images/' . $image);

$sql = "INSERT INTO products(category_id, image, title, code, composition, price) VALUES (:categoryId, :image, :title, :code, :composition, :price)";

$statement = $db->prepare($sql);

$statement->bindParam(':categoryId', $categoryId);

$statement->bindParam(':image', $image);

$statement->bindParam(':title', $title);

$statement->bindParam(':code', $code);

$statement->bindParam(':composition', $composition);

$statement->bindParam(':price', $price);

$statement->execute();

header('Location: /products');

}

Редактирование товара по id

public static function editProduct($categoryId, $title, $code, $composition, $price) {

$db = ConnectDb::getConnection();

$image = $_FILES['image']['name'];

$tmpName = $_FILES['image']['tmp_name'];


move_uploaded_file($tmpName, 'web/images/' . $image);

$sql = "UPDATE products SET 'category_id' = 'categoryId', 'image' = 'image', 'title' = 'title', 'code' = 'code', 'composition' = 'composition', 'price' = 'price'";

$statement = $db->prepare($sql);

$statement->bindParam(':categoryId', $categoryId);

$statement->bindParam(':image', $image);

$statement->bindParam(':title', $title);

$statement->bindParam(':code', $code);

$statement->bindParam(':composition', $composition);

$statement->bindParam(':price', $price);

$statement->execute();

header('Location: /products');

}

Удаление товара по id

public static function deleteProduct($id) {

$db = ConnectDb::getConnection();

$statement = $db->query('DELETE FROM products WHERE id=' . $id);

$statement->execute();

header('Location: /products');

}

Запросы к отзывам

Вывод всех отзывов с сортировкой по id

public static function getReviews() {

$db = ConnectDb::getConnection();

$result = $db->query('SELECT * FROM reviews ORDER BY id DESC');

return $result->fetchAll(PDO::FETCH_ASSOC);

}

Выборка товара по id

public static function getReview($id) {

$db = ConnectDb::getConnection();

$result = $db->query('SELECT * FROM reviews WHERE id=' . $id);

return $result->fetch(PDO::FETCH_ASSOC);

}

Добавление отзыва

public static function addReview($name, $text) {

$db = ConnectDb::getConnection();

$sql = "INSERT INTO reviews(name, text) VALUES (:name, :text)";

$statement = $db->prepare($sql);

$statement->bindParam(':name', $name);

$statement->bindParam(':text', $text);

$statement->execute();

header('Location: /reviews');

}

Удаление отзыва

public static function deleteReview($id) {

$db = ConnectDb::getConnection();

$statement = $db->query('DELETE FROM reviews WHERE id=' . $id);

$statement->execute();

header('Location: /reviews');

}

Запросы к пользователям

Регистрация пользователя

public static function registration($email, $password, $name, $phone) {

$db = ConnectDb::getConnection();

$sql = "INSERT INTO users(email, password, name, phone) VALUES (:email, :password, :name, :phone)";

$statement = $db->prepare($sql);

$statement->bindParam(':email', $email);

$statement->bindParam(':password', md5($password));

$statement->bindParam(':name', $name);

$statement->bindParam(':phone', $phone);

$statement->execute();

header('Location: /');

}

Авторизация пользователя

public static function authorization($email, $password) {

$db = ConnectDb::getConnection();

$sql = "SELECT id, admin FROM users WHERE email=:email AND password=:password";

$statement = $db->prepare($sql);

$statement->bindParam(':email', $email);

$statement->bindParam(':password', md5($password));

$statement->execute();

$user = $statement->fetch(PDO::FETCH_OBJ);

if ($user->id == 0) {

header('Location: /');

} else {

setcookie('email', $email, time() + 3600 * 24 * 30, "/");

$_SESSION['admin'] = $user->admin;

header('Location: /');

}

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

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

После того как пользователь зашел на сайт, он попадает на главную страницу, где ему сразу будут представлены товары на выбор.


Рисунок 4.1.1 – Главная страница сайта

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

Рисунок 4.1.2 – Вывод товаров по категориям

Пользователь может зарегистрировать на сайте, нажав на кнопку «Регистрация» и заполнив поля, после чего нажав на кнопку «Регистрация» он будет зарегистрирован на сайте.

Рисунок 4.1.3 – Форма регистрации пользователя на сайте

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

Рисунок 4.1.4 - Форма авторизации пользователя на сайте

В разделе новости «Новости» можно ознакомится с кратким их описанием.

Рисунок 4.1.5 – Раздел «Новости с кратким описанием»

После нажатия на выбранную новость, вам будет открыта новость с полным ее описанием.

Рисунок 4.1.6 – Раздел «Новости с полным описанием»

В разделе «Отзывы» пользователь может прочитать отзывы других людей, или оставить свой.

Рисунок 4.1.7 – Раздел «Отзывы»

В разделе «Контакты» указана вся информация для связи и место расположение магазина.

Рисунок 4.1.8 – Раздел «Контакты»

В разделе «О нас» можно подробнее узнать о нашем сайте и нашем магазине.

Рисунок 4.1.9 – Раздел «О нас»

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

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

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

Администратор может удалить выбранную статью нажав на крестик возле статьи.


Рисунок 4.2.2 – Удаление конкретной новости

Администратор может удалить выбранный отзыв нажав на крестик возле отзыва.

Рисунок 4.2.3 – Удаление конкретного отзыва

Администратору доступна таблица всех товаров, добавленных на сайте.

Рисунок 4.2.4 – Таблица всех товаров, добавленных на сайт

У администратора есть возможность добавлять новые товары, для этого он должен нажать кнопку «Добавить товар» и заполнит все поля после чего нажать кнопку «Добавить»

Рисунок 4.2.5 – Форма добавления товара на сайт

У администратора есть возможность редактирования товара, для этого нужно нажать на кнопку «Редактировать» и внести изменения после чего нажать на кнопку «Редактировать»

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

У администратора есть возможность удалить выбранный товар из таблицы нажав на кнопку «Удалить»

Рисунок 4.2.7 – Удаление конкретного товара с сайта

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

После того как вы зашли на сайт, вам будет представлен большой ассортимент цветов которой можно отсортировать, нажав на выбранную категорию. Чтобы узнать о товаре подробнее нужно нажать на кнопку «Подробнее» и вас сайт сразу перенаправить на страницу выбранного товара для полного ознакомления с ним. Что бы заказать понравившиеся товар, нажмите на кнопку «Заказать» и ваш выбранный товар будет помещен в корзину товаров. Что бы почитать новости сайта, нажмите на раздел «Новости», и вам сразу будет представлен целый список новостей с кратким описание, чтобы прочитать полностью новость нажмите на нее, и сайт перенаправит на страницу с развёрнутой новостью. В разделе «Отзывы» можно оставить свой отзыв о сайте или о продукте. В разделе «Контакты» указан адрес расположения магазина цветов и контакты для связи. В разделе «О нас» рассказывается о преимуществах нашего магазина перед другими. Нажав на кнопку «Регистрация» и заполнив нужные поля, вы можете зарегистрироваться на сайте. Нажав на кнопку «Вход» и введя туда данный, которые вы вводили при регистрации на сайте, можно авторизоваться на сайте. Также на сайте присутствует строка быстрого поиска, введя в нее нужное название товара вы можете быстро его найти на сайте.


ЗАКЛЮЧЕНИЕ

В соответствии с заданием на проектирование сайта был создан сайт цветочного Интернет-магазина «Flower-Shop».

Были созданы Главная страница с товарами и страницы: новости, отзывы, контакты, и о нас.

Также были добавлены возможности:

  • Добавление и удаление новостей
  • Добавление и удаление отзывов
  • Добавление, редактирование и удаление товаров

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

В процессе создания сайта были получены навыки написания кода на языках HTML, CSS, JS, PHP, SQL. А как-же навыки верстки макетов, и выборки данных из MySQL при помощи PHP запросов.

Список использованной литературы

  1. Форта, Б. Освой самостоятельно SQL за 10 минут/ Б. Форта. - М.: Вильямс, 2017. – 288 с.
  2. Фримен, Э. Фримен, Э. Изучаем HTML, XHTML и CSS/ Э. Фримен. Э. Фримен. - М.: Питер, 2014. – 720 с.
  3. Фримен, Э. Фримен, Э. Изучаем программирование на JavaScript/ Э. Фримен. Э. Фримен. -М.: Питер, 2015. – 640 с.
  4. Скляр, Д. Изучаем PHP 7. Руководство по созданию интерактивных веб-сайтов/ Д. Скляр. - М.: Вильямс, 2016. – 464 с.
  5. Хопкинс, К. PHP. Быстрый старт/ К. Хопкинс. - М.: Эксмо, 2014. – 160 с.
  6. Котеров, Д. Симдянов, И. PHP 7/ Д. Котеров. И. Симдянов. - М.: БХВ-Петербург, 2016. – 1088 с.

Приложение

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

<!DOCTYPE html>

<html lang="ru">

<head>

<meta charset="UTF-8">

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

<meta http-equiv="X-UA-Compatible" content="ie=edge">

<link rel="stylesheet" href="/web/css/normalize.css">

<link rel="stylesheet" href="/web/css/main.css">

<title>Flower-Shop</title>

</head>

<body>

<header class="header">

<div class="container">

<div class="header__wrapper_top">

<nav class="nav">

<ul class="nav__list">

<li class="nav__item">

<a href="/" class="nav__link">Главная</a>

</li>

<li class="nav__item">

<a href="/news" class="nav__link">Новости</a>

</li>

<li class="nav__item">

<a href="/reviews" class="nav__link">Отзывы</a>

</li>

<li class="nav__item">

<a href="/contacts" class="nav__link">Контакты</a>

</li>

<li class="nav__item">

<a href="/about-us" class="nav__link">О нас</a>

</li>

</ul>

</nav>

<div class="auth">

<ul class="auth__list">

<li class="auth__item">

<a href="/products" class="auth__link auth__link_exit">Товары</a>

</li>

<li class="auth__item">

<a href="/output" class="auth__link auth__link_exit">Выход</a>

</li>

</ul>

</div>

</div>

<div class="header__wrapper_middle">

<div class="header-logo">

<a class="header-logo__link" href="/">

<img class="header-logo__image" src="/web/images/flower-shop.png" alt="">