/
Evil331
/
Apteka
Обзор
Документация
Войти
/
Evil331
/
Apteka
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
catalog.php
109 строк
4 KB
Evil6766
Add files via upload
31 май 2025, 17:06
Не верифицирован
31 май 2025, 17:06
667fe25
Код
Авторство
О чём код?
<?php include 'header.php'; require_once 'db_connect.php'; ?> <section class="catalog"> <h1>Каталог товаров</h1> <div class="filters"> <h3>Фильтры</h3> <form id="filterForm" method="GET" action="catalog.php"> <label for="category">Категория:</label> <select name="category" id="category"> <option value="">Все категории</option> <?php $categories = $conn->query("SELECT * FROM categories"); if ($categories && $categories->num_rows > 0) { while ($cat = $categories->fetch_assoc()) { $selected = isset($_GET["category"]) && $_GET["category"] == $cat["id"] ? "selected" : ""; echo '<option value="' . $cat["id"] . '" ' . $selected . '>' . htmlspecialchars($cat["name"]) . "</option>"; } } ?> </select> <label for="price_min">Цена от:</label> <input type="number" name="price_min" id="price_min" step="0.01" placeholder="0.00" value="<?php echo isset($_GET['price_min']) ? htmlspecialchars($_GET['price_min']) : ''; ?>" > <label for="price_max">Цена до:</label> <input type="number" name="price_max" id="price_max" step="0.01" placeholder="1000.00" value="<?php echo isset($_GET['price_max']) ? htmlspecialchars($_GET['price_max']) : ''; ?>" > <button type="button" id="applyFilters">Применить</button> </form> </div> <div class="product-list"> <h2>Товары</h2> <div class="product-grid" id="productGrid"> <?php // Получение параметров фильтрации из формы $category = isset($_GET['category']) ? $_GET['category'] : ''; $min_price = isset($_GET['price_min']) && $_GET['price_min'] !== '' ? (float)$_GET['price_min'] : 0; $max_price = isset($_GET['price_max']) && $_GET['price_max'] !== '' ? (float)$_GET['price_max'] : PHP_FLOAT_MAX; $sql = "SELECT * FROM products WHERE 1=1"; $params = []; $types = ""; if (!empty($category)) { $sql .= " AND category_id = ?"; $params[] = $category; $types .= "i"; } if ($min_price > 0) { $sql .= " AND price >= ?"; $params[] = $min_price; $types .= "d"; } if ($max_price < PHP_FLOAT_MAX) { $sql .= " AND price <= ?"; $params[] = $max_price; $types .= "d"; } $stmt = $conn->prepare($sql); if (!empty($params)) { $stmt->bind_param($types, ...$params); } $stmt->execute(); $result = $stmt->get_result(); if ($result && $result->num_rows > 0) { while ($row = $result->fetch_assoc()) { echo '<div class="product-card">'; echo '<a href="product.php?id=' . $row["id"] . '" class="product-link">'; echo '<img src="' . htmlspecialchars($row["image_url"]) . '" alt="' . htmlspecialchars($row["name"]) . '">'; echo "<h3>" . htmlspecialchars($row["name"]) . "</h3>"; echo "<p>" . htmlspecialchars($row["description"]) . "</p>"; echo '<div class="price">' . number_format($row["price"], 2) . " RUB</div>"; echo '</a>'; echo '<button class="add-to-cart" data-id="' . $row["id"] . '" data-name="' . htmlspecialchars($row["name"]) . '" data-price="' . $row["price"] . '">В корзину</button>'; echo "</div>"; } } else { echo '<p style="text-align: center; color: #777;">Товары не найдены.</p>'; } ?> </div> </div> </section> <?php include 'footer.php'; ?>