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

/**
 * @file updatelector.php
 * @brief Uložení změn lektora do databáze.
 *
 * Tento skript:
 *  - Přijímá data z formuláře (POST) pro úpravu lektora.
 *  - Načte všechny údaje lektora včetně fotek a videa.
 *  - Umožňuje nahrát nové fotky a video, nebo smazat stávající soubory.
 *  - Provede aktualizaci záznamu v tabulce 'lectors' v databázi.
 *  - Po úspěšném uložení přesměruje zpět na editlector.php s potvrzením.
 *  - V případě chyby uloží chybovou hlášku do session.
 */
include '../db_connection.php'; ///< Připojení k databázi.
$conn->set_charset("utf8mb4");
session_start();

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    // Načtení dat z formuláře
    $id = $_POST['lectorId'];
    $name = $_POST['name'];
    $field = $_POST['field'];
    $videoLink = $_POST['videoLink'];
    $info = $_POST['info'];
    $web1 = $_POST['web1'];
    $web2 = $_POST['web2'];
    $tel = $_POST['tel'];
    $email = $_POST['email'];

    $uploadDir = '../media/seminar/lectors/'; ///< Cílová složka pro nahrání fotky (serverová cesta).
    $actualDir = 'media/seminar/lectors/'; ///< Cesta pro uložení do databáze (relativní).

    // Zpracování nahraných souborů (fotky a video)
    $photoMain = !empty($_FILES['photoMain']['name']) ? $actualDir . basename($_FILES['photoMain']['name']) : null;
    $videoMain = !empty($_FILES['videoMain']['name']) ? $actualDir . basename($_FILES['videoMain']['name']) : null;
    $photo1 = !empty($_FILES['photo1']['name']) ? $actualDir . basename($_FILES['photo1']['name']) : null;
    $photo2 = !empty($_FILES['photo2']['name']) ? $actualDir . basename($_FILES['photo2']['name']) : null;
    $photo3 = !empty($_FILES['photo3']['name']) ? $actualDir . basename($_FILES['photo3']['name']) : null;

    if ($photoMain) move_uploaded_file($_FILES['photoMain']['tmp_name'], $uploadDir . basename($_FILES['photoMain']['name']));
    if ($videoMain) move_uploaded_file($_FILES['videoMain']['tmp_name'], $uploadDir . basename($_FILES['videoMain']['name']));
    if ($photo1) move_uploaded_file($_FILES['photo1']['tmp_name'], $uploadDir . basename($_FILES['photo1']['name']));
    if ($photo2) move_uploaded_file($_FILES['photo2']['tmp_name'], $uploadDir . basename($_FILES['photo2']['name']));
    if ($photo3) move_uploaded_file($_FILES['photo3']['tmp_name'], $uploadDir . basename($_FILES['photo3']['name']));

    // Zpracování požadavků na smazání souborů
    $deletions = ['deletePhotoMain', 'deleteVideoMain', 'deletePhoto1', 'deletePhoto2', 'deletePhoto3'];
    foreach ($deletions as $deletion) {
        if (isset($_POST[$deletion]) && $_POST[$deletion] == '1') {
            $column = str_replace('delete', '', $deletion);
            $sqlDelete = "SELECT $column FROM lectors WHERE id = ?";
            $stmtDelete = $conn->prepare($sqlDelete);
            $stmtDelete->bind_param('i', $id);
            $stmtDelete->execute();
            $stmtDelete->bind_result($fileToDelete);
            $stmtDelete->fetch();
            $stmtDelete->close();

            if ($fileToDelete && file_exists('../' . $fileToDelete)) {
                unlink('../' . $fileToDelete);
            }

            $sqlUpdate = "UPDATE lectors SET $column = NULL WHERE id = ?";
            $stmtUpdate = $conn->prepare($sqlUpdate);
            $stmtUpdate->bind_param('i', $id);
            $stmtUpdate->execute();
            $stmtUpdate->close();
        }
    }
    // Sestavení SQL dotazu pro aktualizaci údajů lektora
    $sql = "UPDATE lectors SET name = ?, field = ?, videoLink = ?, info = ?, web1 = ?, web2 = ?, tel = ?, email = ?";
    $params = [$name, $field, $videoLink, $info, $web1, $web2, $tel, $email];

    // Přidání nových souborů do SQL dotazu, pokud byly nahrány
    if ($photoMain) {
        $sql .= ", photoMain = ?";
        $params[] = $photoMain;
    }
    if ($videoMain) {
        $sql .= ", videoMain = ?";
        $params[] = $videoMain;
    }
    if ($photo1) {
        $sql .= ", photo1 = ?";
        $params[] = $photo1;
    }
    if ($photo2) {
        $sql .= ", photo2 = ?";
        $params[] = $photo2;
    }
    if ($photo3) {
        $sql .= ", photo3 = ?";
        $params[] = $photo3;
    }

    $sql .= " WHERE id = ?";
    $params[] = $id;

    // Připraví a provede SQL dotaz
    $stmt = $conn->prepare($sql);
    $stmt->bind_param(str_repeat('s', count($params) - 1) . 'i', ...$params);

    if ($stmt->execute()) {
        $success = 'Lektor byl aktualizován';
    } else {
        $error = 'Vyskytla se chyba';
    }
    $stmt->close();
    // Uložení hlášky do session a přesměrování zpět na editaci
    $_SESSION['success'] = $success ?? null;
    $_SESSION['error'] = $error ?? null;
    header('Location: editlector.php');
    exit();
}