/
Andreyrt
/
korochki
Обзор
Документация
Войти
/
Andreyrt
/
korochki
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
admin.php
133 строки
5 KB
Andreyrt
Первая версия портала Корочки.есть
07 май 2026, 18:21
07 май 2026, 18:21
fd50aa7
Код
Авторство
О чём код?
<?php require_once 'config.php'; if (!isAdmin()) { flash('Доступ только для администратора'); header('Location: login.php'); exit; } if (isset($_GET['logout'])) { session_destroy(); header('Location: login.php'); exit; } if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['booking_id'])) { $bid = (int)$_POST['booking_id']; $st = $db->prepare("UPDATE bookings SET status=:s WHERE id=:b"); $st->bindValue(':s', $_POST['new_status']); $st->bindValue(':b', $bid, SQLITE3_INTEGER); $st->execute(); flash('Статус обновлён!', 'success'); $q = 'admin.php?'; if (!empty($_GET['status'])) $q .= 'status=' . urlencode($_GET['status']) . '&'; $q .= 'page=' . ($_GET['page'] ?? 1); header('Location: ' . $q); exit; } $sf = $_GET['status'] ?? ''; $page = max(1, (int)($_GET['page'] ?? 1)); $pp = 5; $off = ($page - 1) * $pp; $where = $sf ? " WHERE status=:s" : ""; $st = $db->prepare("SELECT COUNT(*) FROM bookings" . $where); if ($sf) $st->bindValue(':s', $sf); $total = $st->execute()->fetchArray()[0]; $tp = ceil($total / $pp); $sql = "SELECT b.*, u.full_name, u.phone, t.name AS tn FROM bookings b JOIN users u ON b.user_id=u.id JOIN trainings t ON b.training_id=t.id $where ORDER BY b.booking_date DESC, b.booking_time DESC LIMIT :l OFFSET :o"; $st = $db->prepare($sql); if ($sf) $st->bindValue(':s', $sf); $st->bindValue(':l', $pp, SQLITE3_INTEGER); $st->bindValue(':o', $off, SQLITE3_INTEGER); $res = $st->execute(); $bookings = []; while ($row = $res->fetchArray(SQLITE3_ASSOC)) $bookings[] = $row; $new = $db->querySingle("SELECT COUNT(*) FROM bookings WHERE status='Новая'"); $ok = $db->querySingle("SELECT COUNT(*) FROM bookings WHERE status='Подтверждена'"); $done = $db->querySingle("SELECT COUNT(*) FROM bookings WHERE status='Проведена'"); ?> <!DOCTYPE html> <html lang="ru"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Панель администратора</title> <link rel="stylesheet" href="static/style.css"> </head> <body> <header> <h1>Панель администратора</h1> <a href="admin.php?logout=1" style="color:#fff">Выйти</a> </header> <?php $f = getFlash(); if ($f): ?> <p class="<?= $f['type'] ?>"><?= htmlspecialchars($f['msg']) ?></p> <?php endif; ?> <div style="display:flex;gap:10px;margin-bottom:20px;text-align:center"> <div class="card" style="flex:1"><b>Новые</b><br><?= $new ?></div> <div class="card" style="flex:1"><b>Подтв.</b><br><?= $ok ?></div> <div class="card" style="flex:1"><b>Провед.</b><br><?= $done ?></div> </div> <form method="get" style="margin-bottom:20px"> <select name="status" onchange="this.form.submit()"> <option value="">Все</option> <option value="Новая" <?= $sf==='Новая'?'selected':'' ?>>Новые</option> <option value="Подтверждена" <?= $sf==='Подтверждена'?'selected':'' ?>>Подтверждённые</option> <option value="Проведена" <?= $sf==='Проведена'?'selected':'' ?>>Проведённые</option> </select> </form> <?php if (!$bookings): ?> <p>Нет записей.</p> <?php else: ?> <?php foreach ($bookings as $b): ?> <div class="card"> <p><b><?= htmlspecialchars($b['full_name']) ?></b> | <?= htmlspecialchars($b['phone']) ?></p> <p><?= htmlspecialchars($b['tn']) ?></p> <p><?= $b['booking_date'] ?> в <?= $b['booking_time'] ?></p> <p>Оплата: <?= htmlspecialchars($b['payment_method']) ?> | Статус: <b><?= $b['status'] ?></b></p> <?php if ($b['review']): ?> <p>Отзыв: <?= htmlspecialchars($b['review']) ?></p> <?php endif; ?> <form method="post"> <input type="hidden" name="booking_id" value="<?= $b['id'] ?>"> <select name="new_status"> <option <?= $b['status']==='Новая'?'selected':'' ?>>Новая</option> <option <?= $b['status']==='Подтверждена'?'selected':'' ?>>Подтверждена</option> <option <?= $b['status']==='Проведена'?'selected':'' ?>>Проведена</option> </select> <button type="submit" class="btn" style="width:auto">Обновить</button> </form> </div> <?php endforeach; ?> <?php if ($tp > 1): ?> <div style="text-align:center;margin:20px 0"> <?php if ($page > 1): ?> <a href="?page=<?= $page-1 ?>&status=<?= urlencode($sf) ?>">Назад</a> <?php endif; ?> <?= $page ?>/<?= $tp ?> <?php if ($page < $tp): ?> <a href="?page=<?= $page+1 ?>&status=<?= urlencode($sf) ?>">Вперёд</a> <?php endif; ?> </div> <?php endif; ?> <?php endif; ?> </body> </html>