Файл: Разработка сайта интернет-магазина цветов 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 запросов.
Список использованной литературы
- Форта, Б. Освой самостоятельно SQL за 10 минут/ Б. Форта. - М.: Вильямс, 2017. – 288 с.
- Фримен, Э. Фримен, Э. Изучаем HTML, XHTML и CSS/ Э. Фримен. Э. Фримен. - М.: Питер, 2014. – 720 с.
- Фримен, Э. Фримен, Э. Изучаем программирование на JavaScript/ Э. Фримен. Э. Фримен. -М.: Питер, 2015. – 640 с.
- Скляр, Д. Изучаем PHP 7. Руководство по созданию интерактивных веб-сайтов/ Д. Скляр. - М.: Вильямс, 2016. – 464 с.
- Хопкинс, К. PHP. Быстрый старт/ К. Хопкинс. - М.: Эксмо, 2014. – 160 с.
- Котеров, Д. Симдянов, И. 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="">