Skip to content

Commit

Permalink
Merge pull request #10 from moiseenkob/module5-task1
Browse files Browse the repository at this point in the history
Читаем и показываем записи из MySQL
  • Loading branch information
dshemin committed Apr 5, 2020
2 parents 797b7c2 + 362b41a commit e8c5dd0
Show file tree
Hide file tree
Showing 4 changed files with 41 additions and 63 deletions.
74 changes: 26 additions & 48 deletions index.php
@@ -1,57 +1,35 @@
<?php
date_default_timezone_set("Europe/Moscow");
require_once "helpers.php";
//Categories for footer and header
$categories = ["Доски и лыжи", "Крепления", "Ботинки", "Одежда", "Инструменты", "Разное"];
//Elements
$ads = [
[
"name" => "2014 Rossignol District Snowboard",
"category" => "Доски и лыжи",
"price" => "10999",
"url_image" => "img/lot-1.jpg",
"expiration_date" => "2020-03-31"
],
[
"name" => "DC Ply Mens 2016/2017 Snowboard",
"category" => "Доски и лыжи",
"price" => "159999",
"url_image" => "img/lot-2.jpg",
"expiration_date" => "2020-04-06"
],
[
"name" => "Крепления Union Contact Pro 2015 года размер L/XL",
"category" => "Крепления",
"price" => "8000",
"url_image" => "img/lot-3.jpg",
"expiration_date" => "2020-04-02"
],
[
"name" => "Ботинки для сноуборда DC Mutiny Charocal",
"category" => "Ботинки",
"price" => "10999",
"url_image" => "img/lot-4.jpg",
"expiration_date" => "2020-04-03"
],
[
"name" => "Куртка для сноуборда DC Mutiny Charocal ",
"category" => "Одежда",
"price" => "7500",
"url_image" => "img/lot-5.jpg",
"expiration_date" => "2020-04-07"
],
[
"name" => "Маска Oakley Canopy",
"category" => "Разное",
"price" => "5400",
"url_image" => "img/lot-6.jpg",
"expiration_date" => "2020-04-01"
]
];
// подключение к БД
$con = mysqli_connect('localhost','root', '9ZOYcLpeEb8y1Zmr', '1021437-yeticave-12');
if ($con === false) {
print("Ошибка подключения: " . mysqli_connect_error());
exit();
}
// установка кодировки
mysqli_set_charset($con, "utf8");
// запрос категорий
$sql_categories = "SELECT `name`, `code` FROM `categories`";
// выполнение запроса
$result_categories = mysqli_query($con, $sql_categories);
// получение двухмерного массива категорий
$categories = mysqli_fetch_all($result_categories, MYSQLI_ASSOC);

// запрос лотов
$sql_lots = "SELECT lot.name, lot.price_start, lot.image_link, lot.created_at, lot.ends_at, category.name as category_name FROM `lots` as lot
INNER JOIN `categories` as category
ON lot.category_id = category.id
WHERE lot.ends_at > NOW()
ORDER BY `created_at` DESC LIMIT 6";
// выполнение запроса
$result_lots = mysqli_query($con, $sql_lots);
// получение двухмерного массива лотов
$lots = mysqli_fetch_all($result_lots, MYSQLI_ASSOC);

$page_content = include_template("main.php", [
'categories' => $categories,
'ads' => $ads
'lots' => $lots
]);

$layout_content = include_template("layout.php", [
Expand Down
14 changes: 7 additions & 7 deletions queries.sql
Expand Up @@ -23,12 +23,12 @@ VALUES
INSERT INTO `lots`
(`created_at`, `name`, `description`, `image_link`, `price_start`, `ends_at`, `step_rate`, `author_id`, `user_winner_id`, `category_id`)
VALUES
(NOW(), '2014 Rossignol District Snowboard', 'Легкая, быстрая, стабильная, отлично выстреливающая вверх', 'img/lot-1.jpg', '10999', '2020-04-12 23:00:00', '100', '2', '4', '1'),
(NOW(), 'DC Ply Mens 2016/2017 Snowboard', 'Максимально заряженная на быстрое и агрессивное катания', 'img/lot-2.jpg', '159999', '2020-04-10 23:00:00', '2000', '4', '2', '1'),
(NOW(), 'Крепления Union Contact Pro 2015 года размер L/XL', 'Отличная модель от известного брэнда, который специализируется на креплениях', 'img/lot-3.jpg', '8000', '2020-04-11 23:00:00', '300', '2', '2', '2'),
(NOW(), 'Ботинки для сноуборда DC Mutiny Charocal', 'Удобный, технологичный и стильный вариант', 'img/lot-4.jpg', '10999', '2020-04-09 23:00:00', '700', '3', '3', '3'),
(NOW(), 'Куртка для сноуборда DC Mutiny Charocal', 'Стильный силуэт подчеркнет Ваш городской образ.', 'img/lot-5.jpg', '7500', '2020-04-13 23:00:00', '250', '5', '5', '4'),
(NOW(), 'Маска Oakley Canopy', 'Такая маска идеально подойдет опытным райдерам', 'img/lot-6.jpg', '5400', '2020-04-14 23:00:00', '400', '2', '4', '6');
(NOW() - INTERVAL 1 DAY, '2014 Rossignol District Snowboard', 'Легкая, быстрая, стабильная, отлично выстреливающая вверх', 'img/lot-1.jpg', '10999', '2020-04-12 23:00:00', '100', '2', '4', '1'),
(NOW() - INTERVAL 1 HOUR, 'DC Ply Mens 2016/2017 Snowboard', 'Максимально заряженная на быстрое и агрессивное катания', 'img/lot-2.jpg', '159999', '2020-04-10 23:00:00', '2000', '4', '2', '1'),
(NOW() - INTERVAL 2 DAY, 'Крепления Union Contact Pro 2015 года размер L/XL', 'Отличная модель от известного брэнда, который специализируется на креплениях', 'img/lot-3.jpg', '8000', '2020-04-11 23:00:00', '300', '2', '2', '2'),
(NOW() - INTERVAL 7 HOUR, 'Ботинки для сноуборда DC Mutiny Charocal', 'Удобный, технологичный и стильный вариант', 'img/lot-4.jpg', '10999', '2020-04-09 23:00:00', '700', '3', '3', '3'),
(NOW() - INTERVAL 4 HOUR, 'Куртка для сноуборда DC Mutiny Charocal', 'Стильный силуэт подчеркнет Ваш городской образ.', 'img/lot-5.jpg', '7500', '2020-04-13 23:00:00', '250', '5', '5', '4'),
(NOW() - INTERVAL 13 HOUR, 'Маска Oakley Canopy', 'Такая маска идеально подойдет опытным райдерам', 'img/lot-6.jpg', '5400', '2020-04-14 23:00:00', '400', '2', '4', '6');


-- Добавление ставок
Expand All @@ -47,7 +47,7 @@ VALUES
SELECT `name` FROM `categories`;

-- получить самые новые, открытые лоты. Каждый лот должен включать название, стартовую цену, ссылку на изображение, текущую цену, название категории
SELECT lot.name, lot.price_start, lot.image_link, category.name, bid.price as current_price FROM `lots` as lot
SELECT lot.name, lot.price_start, lot.image_link, category.name as category_name, bid.price as current_price FROM `lots` as lot
INNER JOIN `categories` as category ON category.id = lot.category_id
INNER JOIN `bids` as bid ON bid.lot_id = lot.id
WHERE lot.ends_at > NOW() ORDER BY lot.created_at;
Expand Down
2 changes: 1 addition & 1 deletion templates/layout.php
Expand Up @@ -55,7 +55,7 @@
<ul class="nav__list container">
<?php foreach ($categories as $category) : ?>
<li class="nav__item">
<a href="pages/all-lots.html"><?=htmlspecialchars($category)?></a>
<a href="pages/all-lots.html"><?=htmlspecialchars($category['name'])?></a>
</li>
<?php endforeach ; ?>
</ul>
Expand Down
14 changes: 7 additions & 7 deletions templates/main.php
Expand Up @@ -20,8 +20,8 @@ function get_dt_range($value_date)
</p>
<ul class="promo__list">
<?php foreach ($categories as $category) : ?>
<li class="promo__item promo__item--boards">
<a class="promo__link" href="pages/all-lots.html"><?=htmlspecialchars($category);?></a>
<li class="promo__item promo__item--<?=htmlspecialchars($category['code']);?>">
<a class="promo__link" href="pages/all-lots.html"><?=htmlspecialchars($category['name']);?></a>
</li>
<?php endforeach ; ?>
</ul>
Expand All @@ -32,21 +32,21 @@ function get_dt_range($value_date)
</div>
<ul class="lots__list">
<?php
foreach ($ads as $lot) : ?>
foreach ($lots as $lot) : ?>
<li class="lots__item lot">
<div class="lot__image">
<img src="<?=htmlspecialchars($lot['url_image']);?>" width="350" height="260" alt="">
<img src="<?=htmlspecialchars($lot['image_link']);?>" width="350" height="260" alt="">
</div>
<div class="lot__info">
<span class="lot__category"><?=htmlspecialchars($lot['category'])?></span>
<span class="lot__category"><?=htmlspecialchars($lot['category_name'])?></span>
<h3 class="lot__title"><a class="text-link" href="pages/lot.html"><?=htmlspecialchars($lot['name'])?></a></h3>
<div class="lot__state">
<div class="lot__rate">
<span class="lot__amount">Стартовая цена</span>
<span class="lot__cost"><?= format_sum($lot['price']); ?></span>
<span class="lot__cost"><?= format_sum($lot['price_start']); ?></span>
</div>
<?php
list($hours, $minutes) = get_dt_range($lot['expiration_date']);
list($hours, $minutes) = get_dt_range($lot['ends_at']);
?>
<div class="lot__timer timer <?php if ($hours < 1) : ?>timer--finishing<?php endif;?>">
<?php
Expand Down

0 comments on commit e8c5dd0

Please sign in to comment.