Админ
Редактор
Главная
Каталог для товаров
Список товаров
Цвет товара
Размер товара
Галерея товара
Редактор
Вернутся назад
<?php // Название MySQL $MySQLNAIME = 'CATALOG'; // ------------------------------------------------- // Форма Действия. Добавить в корзину if ($_POST["dejstviya"] === "korzina-net" || $_POST["dejstviya"] === "korzina") { // Заначения для записи в базу $result = ($_POST["dejstviya"] === "korzina") ? "0" : "1"; // Получает масив данных из checkbox $checkboxes = $_POST["checkbox"]; // Перебор данных из checkbox foreach ($checkboxes as $key => $value) { // Подготовленный запрос с параметрами $stmt = $conn->prepare("UPDATE `$MySQLNAIME` SET `STATUS` = ? WHERE `$MySQLNAIME`.`ID` = ?"); // Привязка параметров $stmt->bind_param("si", $result, $key); // Выполнение запроса $stmt->execute(); } $catalogInfo = ($_POST["dejstviya"] === "korzina") ? 'Добавлено в корзину!' : 'Восстановлено!'; } // ------------------------------------------------- // ------------------------------------------------- // Форма Действия. Удалить if ($_POST["dejstviya"] === "delete-categoria") { // Получает масив данных из checkbox $checkboxes = $_POST["checkbox"]; // Перебор данных из checkbox foreach ($checkboxes as $key => $value) { // Удаляет категорию // Подготовленный запрос с параметрами $stmt = $conn->prepare("DELETE FROM `$MySQLNAIME` WHERE `$MySQLNAIME`.`ID` = ?;"); // Привязка параметров $stmt->bind_param("i", $key); // Выполнение запроса $stmt->execute(); } $catalogInfo = 'Удалено навсегда!'; } // ------------------------------------------------- //------------------------------------------------- // Формирует ссылку Url для сортировки // Получаем строку с параметрами GET $queryString = $_SERVER['QUERY_STRING']; // Разбираем строку на отдельные параметры parse_str($queryString, $params); // Удаляем параметр "orderby" и его значение, если они присутствуют if (isset($params['orderby'])) {unset($params['orderby']);} // Собираем строку с обновленными параметрами GET $UrlGET = 'office.php?' . http_build_query($params); // Значение сортировки по умолчанию $Orderby_Naime = 'ID'; $Orderby_Otribut = 'ASC'; // Значение сортировки из GET параметра если есть if (!empty($_GET['orderby'])) {list($Orderby_Naime, $Orderby_Otribut) = explode("|", $_GET['orderby']);} //------------------------------------------------- ?> <!-- Заголовок + кнопка добавить --> <div class="width_100"> <div class="width_auto"> <h1 style="color: #000">Категории</h1> </div> <div class="Dob_1"> <a href="/admin/office/office.php?url=catalog/catalogredaktor.php"><img title="Добавить" src="/admin/images/plus_dvllyy5bb0hs.svg"></a> </div> </div> <?php echo isset($catalogInfo) ? '<div class="NetDan">' . $catalogInfo . '</div>': ''; ?> <!-- Поиск --> <fieldset class="fieldset_2"> <legend class="legend_2">Фильтр:</legend> <form class="form_1" action=""> <!-- Добавляем скрытое поле для пагинации --> <input type="hidden" name="url" value="<?php echo $_GET['url']; ?>"> <!-- Поле для поиска --> <input class="input_2" type="text" name="poisk" value="<?php echo $_GET['poisk']; ?>" placeholder="Поиск"> <!-- Поле для выбора родительской категории --> <select class="input_2" name="catalogid"> <option disabled selected>Родительская категория</option> <?php $sql = "SELECT * FROM CATALOG WHERE CATALOG_ID = 0"; $result = $conn->query($sql); while ($row = $result->fetch_assoc()) { ?> <option value="<?php echo $row['ID']; ?>"<?php if (isset($_GET['catalogid']) && $_GET['catalogid'] === $row['ID']) { echo ' selected'; } ?>><?php echo $row['NAME']; ?></option> <?php } ?> </select> <input class="input_buton_2" type="submit" value="Фильтр"> <?php // Активирует кнопку Сброс если фильтр активный if (isset($_GET['poisk'])) { ?> <a class="input_buton_3" href="office.php?url=<?php echo $_GET['url']; ?>">Сброс</a> <?php } ?> </form> </fieldset> <!-- Поиск/ --> <?php //------------------------------------------------- // Получает общее количество записей для пагинации // Получает GET фильтра поиск с добавленной защитой от инъекций. if (isset($_GET['poisk']) && $_GET['poisk'] !== '') {$PoiskTXT = filter_var($_GET['poisk'], FILTER_SANITIZE_STRING);} if (isset($_GET['catalogid']) && $_GET['catalogid'] !== '') {$catalogid = filter_var($_GET['catalogid'], FILTER_SANITIZE_STRING);} $count = '0'; $totalStmt = $conn->prepare("SELECT COUNT(*) as count FROM `$MySQLNAIME` " . ($_GET['korzina'] == 1 ? "WHERE `STATUS` = '0'" : "WHERE `STATUS` = '1'") . " AND (? IS NULL OR `NAME` = ?) AND (? IS NULL OR `CATALOG_ID` = ?) "); $totalStmt->bind_param("ssss", $PoiskTXT, $PoiskTXT, $catalogid, $catalogid); $totalStmt->execute(); $totalResult = $totalStmt->get_result(); $count = $totalResult->fetch_assoc()['count']; //------------------------------------------------- //------------------------------------------------- // Запрос на получения количества записей в корзине $sql = "SELECT COUNT(*) as count FROM $MySQLNAIME WHERE STATUS = '0'"; $KorzinaResult = $conn->query($sql); if ($KorzinaResult->num_rows > 0) { $row = $KorzinaResult->fetch_assoc(); $Korzina = $row["count"]; } else { $Korzina = '0'; } //------------------------------------------------- //------------------------------------------------- // Запрос на получения количества записей $sql = "SELECT COUNT(*) as count FROM $MySQLNAIME WHERE STATUS = '1'"; $KorzinaResult = $conn->query($sql); if ($KorzinaResult->num_rows > 0) { $row = $KorzinaResult->fetch_assoc(); $Skolko = $row["count"]; } else { $Skolko = '0'; } //------------------------------------------------- ?> <!-- Блок с информацией --> <div class="SpisokInfo"> <div class="SpisokInfo_1"><a href="/admin/office/office.php?url=catalog/catalog.php">Опубликованные</a>: (<?php echo $Skolko; ?>)</div> <div class="SpisokInfo_1"><a href="/admin/office/office.php?url=catalog/catalog.php&korzina=1">Корзина</a>: (<?php echo $Korzina; ?>)</div> <?php if ($Skolko != $count && !$_GET['korzina']) {echo '<div class="SpisokInfo_1">Найдено: (' . $count . ')</div>';} ?> </div> <!-- Блок с информацией/ --> <!-- Заголовки --> <div class="SpisokZagolovok"> <div class="width_33"> <div class="padding_Spisok_TXT_20"> <input class="custom-checkbox" type="checkbox" id="delete" name="delete" value="0"> <label for="delete"></label> <a class="SpisokZagolovok_a <?php echo $_GET['orderby'] == 'NAME|ASC' ? 'SpisokZagolovok_active' : ''; ?>" href="<?php echo $UrlGET; ?>&orderby=<?php echo $_GET['orderby'] == 'NAME|ASC' ? 'NAME|DESC' : 'NAME|ASC'; ?>">Заголовок <img src="/admin/images/arrow_fchrpsiuoq76.svg"></a> </div> </div> <script> // Выделить все checkbox document.getElementById("delete").addEventListener("change", function() { var checkboxes = document.querySelectorAll(".custom-checkbox:not(#delete)"); for (var i = 0; i < checkboxes.length; i++) { checkboxes[i].checked = this.checked; } }); </script> <div class="width_33"> <div class="padding_Spisok_20"> <a class="SpisokZagolovok_a <?php echo $_GET['orderby'] == 'CATALOG_ID|ASC' ? 'SpisokZagolovok_active' : ''; ?>" href="<?php echo $UrlGET; ?>&orderby=<?php echo $_GET['orderby'] == 'CATALOG_ID|ASC' ? 'CATALOG_ID|DESC' : 'CATALOG_ID|ASC'; ?>">Родительская категория<img src="/admin/images/arrow_fchrpsiuoq76.svg"></a> </div> </div> <div class="width_33"> <div class="padding_Spisok_20"> <div class="SpisokZagolovok_a_1">Ссылка</div> </div> </div> </div> <!-- Заголовки/ --> <!-- Список --> <div class="Spisok"> <form class="form_1" method="POST" action=""> <?php //------------------------------------------------- // Погинация + вывод товар // Получает GET с добавленной защитой от инъекций int оставляет только целые числа $page = isset($_GET['page']) ? (int)$_GET['page'] : 1; $perPage = 34; $start = ($page > 1) ? ($page - 1) * $perPage : 0; $pages = ceil($count / $perPage); // Запрос на вывод записей $stmt = $conn->prepare("SELECT * FROM `$MySQLNAIME` " . ($_GET['korzina'] == 1 ? "WHERE `STATUS` = '0'" : "WHERE `STATUS` = '1'") . " AND (? IS NULL OR `NAME` = ?) AND (? IS NULL OR `CATALOG_ID` = ?) ORDER BY `$MySQLNAIME`.`$Orderby_Naime` $Orderby_Otribut LIMIT ?, ?" ); $stmt->bind_param("ssssii", $PoiskTXT, $PoiskTXT, $catalogid, $catalogid, $start, $perPage); $stmt->execute(); $result = $stmt->get_result(); $dopolnitelno = $result->fetch_all(); $stmt->close(); // Выводим нужные элементы на экран foreach ($dopolnitelno as $index => $dopolnitelno) { // Чередует строки по цвету $spisok = (($index % 2) + 1); $spisok_2 = ($spisok === 2) ? 'Spisok_2' : ''; //------------------------------------------------- ?> <div class="Spisok_1 <?php echo $spisok_2; ?>"> <div class="width_33"> <div class="padding_Spisok_TXT_20"> <input class="custom-checkbox" type="checkbox" id="delete_<?php echo $dopolnitelno[0]; ?>" name="checkbox[<?php echo $dopolnitelno[0]; ?>]" value="1"> <label for="delete_<?php echo $dopolnitelno[0]; ?>"></label> <a class="SpisokTXT_1"href=/admin/office/office.php?url=catalog/catalogredaktor.php&id=<?php echo $dopolnitelno[0]; ?>><?= htmlspecialchars_decode($dopolnitelno[2]); ?></a> </div> </div> <div class="width_33"> <div class="padding_Spisok_20"> <?php //Получает родительскую категорию if ($dopolnitelno[1] == '0') { echo 'Нет'; } else { // Ищет родительскую категорию базе $sql = "SELECT `ID`, `NAME`, `URL` FROM `CATALOG` WHERE `ID` = ?"; $stmt = $conn->prepare($sql); $stmt->bind_param("s", $dopolnitelno[1]); $stmt->execute(); $result = $stmt->get_result(); $CatalogID = $result->fetch_assoc(); if ($CatalogID) { echo '<a href=/admin/office/office.php?url=catalog/catalog.php&catalogid=' . urlencode($CatalogID['ID']) . '>' . $CatalogID['NAME'] . '</a>'; } else { echo 'Родительская категория удалена'; } } ?> </div> </div> <div class="width_33"> <div class="padding_Spisok_20"> <a target="_blank" href="/catalog/<?= htmlspecialchars_decode($dopolnitelno[3]); ?>"><img src="/admin/images/link_35d6bc6l6shz.svg" width="20" height="20"></a> </div> </div> </div> <?php } ?> <!-- Вывод слово 'Нет данных!' Когда нет записей --> <div class="NetDan"><?php if ($count == '0') {echo 'Нет данных!';} ?></div> <!-- Поле для действия --> <div class="SpisokInfo"> <select class="input_2" name="dejstviya"> <?php if ($_GET["korzina"] !== '1') { ?> <option disabled selected>Действия</option> <option value="korzina">Добавить в корзину</option> <?php } else {?> <option value="korzina-net">Восстановить</option> <option value="delete-categoria">Удалить</option> <?php } ?> </select> <!-- Добавляем скрытое поле для CSRF токена --> <input type="hidden" name="csrf_token" value="<?php echo $_SESSION['csrf_token']; ?>"> <input class="input_buton_2" type="submit" value="Применить"> </div> <!-- Поле для действия/ --> </form> </div> <!-- Список/ --> <div class="pagi"> <?php //------------------------------ // Пагинация // Соберает Url для пагинации. $queryString = $_SERVER['QUERY_STRING']; // Получаем строку с параметрами GET // Разбираем строку на отдельные параметры parse_str($queryString, $params); // Удаляем параметр "page" и его значение, если они присутствуют if (isset($params['page'])) { unset($params['page']); } // Собираем строку с обновленными параметрами GET $UrlPage = http_build_query($params); //Генерирует цифры пагинации + помечает активный $limit = 6; // количество кнопок в пагинации $offset = ceil($limit / 4); // количество страниц, отображающихся до и после текущей $firstPage = max(1, $page - $offset); // первая отображаемая страница $lastPage = min($firstPage + $limit - 1, $pages); // последняя отображаемая страница echo '<div class="pagination">'; if ($firstPage > 1) { echo '<a href="office.php?' . $UrlPage . '&page=1">1</a>'; if ($firstPage > 2) { echo '...'; } } for ($i = $firstPage; $i <= $lastPage; $i++) { $active = ($i == $page) ? 'class="active"' : ''; echo '<a href="office.php?' . $UrlPage . '&page=' . $i . '"' . $active . '>' . $i . '</a>'; } if ($lastPage < $pages) { if ($lastPage < $pages - 1) { echo '...'; } echo '<a href="office.php?' . $UrlPage . '&page=' . $pages . '">' . $pages . '</a>'; } echo '</div>'; //------------------------------ ?> </div>
Админ
Редактор
Главная
Каталог для товаров
Список товаров
Цвет товара
Размер товара
Галерея товара
Категория: Карточка товара рубашки
Вернуться к списку категорий
Заголовок:
*
Ссылка:
*
Родительская категория:
Нет
Карточка товара футболки
Карточка товаров джинс
Тег title:
*
Тег keywords:
*
Тег description:
*
Карточка товара рубашки.
Добавить в корзину:
Редактировать
Прокрутить вверх