< Všechna témata
Tisk

Úprava dat uživatelem

Tento skript bude rozdělen pro jednoduchost na 2 soubory:

  1. soubor bude obsahovat jednoduchý HTML formulář a pomocí GET metody pošleme data do 2. souboru – např. vyber_produkt.php
  2. soubor zpracuje data z formuláře, pomocí GET a následně si získá aktuální data pomocí POST.

Jak na to

Uložím si do proměnné $produkt_id výsledek z GET a následně vytvořím dotaz na hodnoty toho produktu.

// získání ID produktu, který upravujeme
$produkt_id = $_GET['produkt_id'];

// dotaz na získání aktálních dat
$sql = "SELECT * FROM produkty WHERE id=$produkt_id";
$result = $mysqli->query($sql);
$row = $result->fetch_assoc();
?>

Tyto hodnoty vypisuji do HTML formuláře pomocí PHP. To mi zajistí, že uživatel uvidí data, která bude upravovat.

// získání ID produktu, který upravujeme
$produkt_id = $_GET['produkt_id'];

// dotaz na získání aktálních dat
$sql = "SELECT * FROM produkty WHERE id=$produkt_id";
$result = $mysqli->query($sql);
$row = $result->fetch_assoc();
?>

<h2>Úprava záznamu</h2>
<form action="" method="POST">
    <input type="hidden" name="id" value="<?= $row['id']; ?>">
    <label for="nazev">Název:</label>
    <input type="text" name="nazev" value="<?= $row['nazev']; ?>"><br>
    <label for="kategorie">Kategorie:</label>
    <input type="text" name="kategorie" value="<?= $row['kategorie']; ?>"><br>
    <label for="cena">Cena:</label>
    <input type="number" name="cena" value="<?= $row['cena']; ?>"><br>
    <label for="pocet_skladem">Počet skladem:</label>
    <input type="number" name="pocet_skladem" value="<?= $row['pocet_skladem']; ?>"><br>
    <button type="submit">Upravit produkt</button>
</form>

Po odeslání formuláře uživatelem pomocí POST získaná data z formuláře ukládám do proměnných, a potom v SQL dotazu na úpravu hodnot přiřadím právě z proměnných, a to pouze na produktu, který zvolil uživatel ($produkt_id)

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $id = $_POST['id'];
    $nazev = $_POST['nazev'];
    $kategorie = $_POST['kategorie'];
    $cena = $_POST['cena'];
    $pocet_skladem = $_POST['pocet_skladem'];

    // aktualizace dat v databázi
    $sql = "UPDATE produkty 
SET nazev='$nazev', kategorie='$kategorie', cena='$cena', pocet_skladem='$pocet_skladem' 
WHERE id=$id";

    if ($mysqli->query($sql) === TRUE) {
        $zprava = "Produkt byl úspěšně aktualizován.";
    } else {
        $zprava = "Chyba při aktualizaci produktu: " . $mysqli->error;
    }
}

Celý skript

<?php
$pageTitle = "Úprava produktu"; // název stránky
include 'header.php';
include 'db.php';

$zprava = ""; // proměnná pro ukládání hlášky

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $id = $_POST['id'];
    $nazev = $_POST['nazev'];
    $kategorie = $_POST['kategorie'];
    $cena = $_POST['cena'];
    $pocet_skladem = $_POST['pocet_skladem'];

    // aktualizace dat v databázi
    $sql = "UPDATE produkty SET nazev='$nazev', kategorie='$kategorie', cena='$cena', pocet_skladem='$pocet_skladem' WHERE id=$id";

    if ($mysqli->query($sql) === TRUE) {
        $zprava = "Produkt byl úspěšně aktualizován.";
    } else {
        $zprava = "Chyba při aktualizaci produktu: " . $mysqli->error;
    }
}

// získání ID produktu, který upravujeme
$produkt_id = $_GET['produkt_id'];

// dotaz na získání aktálních dat
$sql = "SELECT * FROM produkty WHERE id=$produkt_id";
$result = $mysqli->query($sql);
$row = $result->fetch_assoc();
?>

<h2>Úprava záznamu</h2>
<form action="" method="POST">
    <input type="hidden" name="id" value="<?= $row['id']; ?>">
    <label for="nazev">Název:</label>
    <input type="text" name="nazev" value="<?= $row['nazev']; ?>"><br>
    <label for="kategorie">Kategorie:</label>
    <input type="text" name="kategorie" value="<?= $row['kategorie']; ?>"><br>
    <label for="cena">Cena:</label>
    <input type="number" name="cena" value="<?= $row['cena']; ?>"><br>
    <label for="pocet_skladem">Počet skladem:</label>
    <input type="number" name="pocet_skladem" value="<?= $row['pocet_skladem']; ?>"><br>
    <button type="submit">Upravit produkt</button>
</form>

<p><?php echo $zprava; ?></p> <!-- zde zobrazíme zprávu pro uživatele -->

Výsledek

Je funkční, po zvolení zobrazí produkt na úpravu. To je popsáno níže.

Obsah
© 2025 Lukáš Pospíšil