Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Читаем и показываем записи из MySQL #10

Merged
merged 2 commits into from Apr 5, 2020
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
117 changes: 70 additions & 47 deletions index.php
@@ -1,57 +1,80 @@
<?php
date_default_timezone_set("Europe/Moscow");
require_once "helpers.php";
//Categories for footer and header
$categories = ["Доски и лыжи", "Крепления", "Ботинки", "Одежда", "Инструменты", "Разное"];
// подключение к БД
$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
ORDER BY `created_at` DESC";
dshemin marked this conversation as resolved.
Show resolved Hide resolved
// выполнение запроса
$result_lots = mysqli_query($con, $sql_lots);
// получение двухмерного массива лотов
$lots = mysqli_fetch_all($result_lots, MYSQLI_ASSOC);

//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"
]
];
//$ads = [
dshemin marked this conversation as resolved.
Show resolved Hide resolved
// [
// "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"
// ]
//];

$page_content = include_template("main.php", [
'categories' => $categories,
'ads' => $ads
'ads' => $lots
dshemin marked this conversation as resolved.
Show resolved Hide resolved
]);

$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
12 changes: 6 additions & 6 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 @@ -35,18 +35,18 @@ function get_dt_range($value_date)
foreach ($ads 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