S čím potřebuješ pomoct?
Úprava dat uživatelem
Tento skript bude rozdělen pro jednoduchost na 2 soubory:
- soubor bude obsahovat jednoduchý HTML formulář a pomocí GET metody pošleme data do 2. souboru – např. vyber_produkt.php
- 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.
