oazaSrdceWeb / admin_edit / editseminar.php
editseminar.php
Raw
<?php

/**
 * @file editseminar.php
 * @brief Administrace pro úpravu a mazání seminářů.
 *
 * Tento skript umožňuje administrátorovi:
 *  - Vybrat seminář ze seznamu a načíst jeho data podle ID.
 *  - Upravit všechny údaje semináře (nadpis, datumy, popis, lektor, více lektorů, barva).
 *  - Odeslat změny k uložení (aktualizace v databázi).
 *  - Smazat celý seminář (deleteseminar.php).
 *  - Zobrazit úspěšné nebo chybové hlášky po akcích.
 * Přístup je povolen pouze přihlášeným uživatelům.
 */
session_start();
/**
 * Kontrola, zda je uživatel přihlášen.
 * Pokud není, přesměruje na přihlašovací stránku.
 */
if (!isset($_SESSION['loggedin']) || $_SESSION['loggedin'] !== true) {
    header('Location: login.php');
    exit();
}
?>
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Upravit seminář</title>
</head>

<body>
    <?php
    include '../db_connection.php'; ///< Připojení k databázi.
    $conn->set_charset("utf8mb4");

    /**
     * Zpracování POST požadavku pro aktualizaci semináře.
     * Pokud je formulář odeslán, provede update v databázi podle ID.
     */
    if ($_SERVER['REQUEST_METHOD'] == 'POST') {
        $id = $_POST['id'];
        $heading = $_POST['heading'];
        $timefrom = $_POST['timefrom'];
        $timeto = $_POST['timeto'];
        $description = $_POST['description'];
        $lector_id = $_POST['lector_id'];
        $lectors = $_POST['lectors'];
        $color = $_POST['color'];

        // Aktualizace údajů semináře v databázi
        $stmt = $conn->prepare('UPDATE events SET heading = ?, timefrom = ?, timeto = ?, description = ?, lector_id = ?, lectors = ?, color = ? WHERE id = ?');
        $stmt->bind_param('ssssissi', $heading, $timefrom, $timeto, $description, $lector_id, $lectors, $color, $id);

        if ($stmt->execute()) {
            $success = 'Seminář byl aktualizován';
        } else {
            $error = 'Vyskytla se chyba';
        }
        $stmt->close();
    }
    /**
     * Načtení dat semináře podle ID z GET parametru.
     * Výsledek je uložen do proměnné $seminar pro předvyplnění formuláře.
     */
    $seminar = null;
    if (isset($_GET['id'])) {
        $id = $_GET['id'];
        $result = $conn->query("SELECT * FROM events WHERE id = $id");
        $seminar = $result->fetch_assoc();
    }
    ?>

    <!DOCTYPE html>
    <html lang="cs">

    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Upravit Seminář</title>
        <link href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" rel="stylesheet" />
        <link rel="stylesheet" href="../admin.css" />
    </head>

    <body>
        <div class="container mt-5">
            <a href="../admin.php" class="backbtn">Zpět na panel</a>
            <h2 class="text-center mb-4 hedingForm">Upravit Seminář</h2>
            <?php if (isset($success)) {
                echo '<div class="alert alert-success text-center">' . $success . '</div>';
            } ?>
            <?php if (isset($error)) {
                echo '<div class="alert alert-danger text-center">' . $error . '</div>';
            } ?>
            <?php if (isset($_SESSION['success'])) {
                echo '<div class="alert alert-success text-center">' . $_SESSION['success'] . '</div>';
                unset($_SESSION['success']);
            } ?>
            <?php if (isset($_SESSION['error'])) {
                echo '<div class="alert alert-danger text-center">' . $_SESSION['error'] . '</div>';
                unset($_SESSION['error']);
            } ?>
            <div class="row justify-content-center">
                <div class="col-md-8">
                    <form action="editseminar.php" method="post">
                        <input type="hidden" name="id" value="<?php echo $seminar['id'] ?? ''; ?>">
                        <div class="form-group">
                            <label for="heading">Nadpis</label>
                            <input type="text" class="form-control" id="heading" name="heading" value="<?php echo $seminar['heading'] ?? ''; ?>">
                        </div>
                        <div class="form-group">
                            <label for="timefrom">Čas Od</label>
                            <input type="date" class="form-control" id="timefrom" name="timefrom" value="<?php echo $seminar['timefrom'] ?? ''; ?>">
                        </div>
                        <div class="form-group">
                            <label for="timeto">Čas Do</label>
                            <input type="date" class="form-control" id="timeto" name="timeto" value="<?php echo $seminar['timeto'] ?? ''; ?>">
                        </div>
                        <div class="form-group">
                            <label for="description">Bližší info:</label>
                            <input type="text" class="form-control" id="description" name="description" value="<?php echo $seminar['description'] ?? ''; ?>">
                        </div>

                        <div class="form-group">
                            <label for="lector_id">Lektor</label>
                            <select class="form-control" id="lector_id" name="lector_id">
                                <?php
                                $result = $conn->query('SELECT id, name FROM lectors');
                                while ($row = $result->fetch_assoc()) {
                                    $selected = isset($seminar) && $row['id'] == $seminar['lector_id'] ? 'selected' : '';
                                    echo '<option value="' . $row['id'] . '" ' . $selected . '>' . $row['name'] . '</option>';
                                }
                                ?>
                            </select>
                        </div>
                        <div class="form-group">
                            <label for="lectors">Bez medailonku / více lektorů</label>
                            <input type="text" id="lectors" name="lectors" value="<?php echo $seminar['lectors'] ?? ''; ?>" class="form-control">
                        </div>
                        <div class="form-group">
                            <label>Barva</label><br>
                            <input type="radio" id="color1" name="color" value="1" <?php echo isset($seminar) && $seminar['color'] == 1 ? 'checked' : ''; ?>>
                            <label for="color1">Seminář</label><br>
                            <input type="radio" id="color2" name="color" value="2" <?php echo isset($seminar) && $seminar['color'] == 2 ? 'checked' : ''; ?>>
                            <label for="color2">Ozdravné pobyty</label><br>
                            <input type="radio" id="color3" name="color" value="3" <?php echo isset($seminar) && $seminar['color'] == 3 ? 'checked' : ''; ?>>
                            <label for="color3">Firemní</label><br>
                            <input type="radio" id="color4" name="color" value="4" <?php echo isset($seminar) && $seminar['color'] == 4 ? 'checked' : ''; ?>>
                            <label for="color4">Ostatní</label>
                        </div>
                        <button type="submit" class="btn btn-primary btn-block">Upravit</button>
                    </form>
                    <form id="deleteSeminarForm" action="deleteseminar.php" method="post">
                        <input type="hidden" name="id" value="<?php echo $seminar['id'] ?? ''; ?>">
                        <button type="button" class="btn btn-danger btn-block mt-2 deleteSeminar" style="width: 120px" onclick="confirmDelete()">Smazat</button>
                    </form>
                </div>
                <div class="col-md-2">
                    <select name="seminar" id="seminar" onchange="location = this.value;">
                        <option value="">Vyberte seminář</option>
                        <?php
                        $result = $conn->query("SELECT id, heading, timefrom FROM events");
                        if ($result->num_rows > 0) {
                            while ($row = $result->fetch_assoc()) {
                                echo '<option value="editseminar.php?id=' . $row["id"] . '">' . $row["heading"] . ' (' . $row["timefrom"] . ')</option>';
                            }
                        }
                        ?>
                    </select>
                </div>
            </div>
        </div>
        <script>
            /**
             * Zobrazí nebo skryje pole pro více lektorů podle výběru lektora.
             * Pokud je vybrán lektor s ID 4, zobrazí pole pro více lektorů.
             */
            function toggleLectorsInput() {
                const lectorSelect = document.getElementById('lector_id');
                const lectorsInputGroup = document.getElementById('lectors').parentElement;
                if (lectorSelect.value === "4") {
                    lectorsInputGroup.style.display = 'block';
                } else {
                    lectorsInputGroup.style.display = 'none';
                }
            }
            // Po načtení stránky nastaví správné zobrazení pole pro více lektorů a přidá event listener
            document.addEventListener('DOMContentLoaded', function() {
                const lectorSelect = document.getElementById('lector_id');
                lectorSelect.addEventListener('change', toggleLectorsInput);
                toggleLectorsInput(); // Initial call
            });
            /**
             * Potvrzení smazání semináře.
             * Po potvrzení odešle data formuláře pro smazání.
             */
            function confirmDelete() {
                if (confirm('Opravdu chcete smazat tento seminář?')) {
                    document.getElementById('deleteSeminarForm').submit();
                }
            }
        </script>
    </body>

    </html>
</body>

</html>