Przekierowanie po zapisie
Formularze: GET i POST - PHP i MySQL: strony z bazą danych (PHP i MySQL)
Po zapisie skrypt wysyła nagłówek Location i kończy działanie (exit). Przeglądarka wczytuje wtedy stronę zwykłym żądaniem GET, więc odświeżenie nie wyśle zamówienia drugi raz. Parametr ?dodano=1 w adresie pozwala pokazać komunikat. Ten wzorzec nazywa się POST, przekierowanie, GET.
<?php
$db = mysqli_connect("localhost", "root", "", "kwiaciarnia");
if (isset($_POST["kwiat"])) {
$stmt = mysqli_prepare($db, "INSERT INTO zamowienia (kwiat_id, ilosc, klient) VALUES (?, ?, ?)");
mysqli_stmt_bind_param($stmt, "iis", $_POST["kwiat"], $_POST["ilosc"], $_POST["klient"]);
mysqli_stmt_execute($stmt);
header("Location: index.php?dodano=1");
exit;
}
if (isset($_GET["dodano"])) {
echo "<p>Zamówienie zapisane.</p>";
}
?>
<form method="post">
<select name="kwiat">
<?php
$result = mysqli_query($db, "SELECT id, nazwa FROM kwiaty");
while ($row = mysqli_fetch_assoc($result)) {
echo "<option value='" . $row["id"] . "'>" . $row["nazwa"] . "</option>";
}
?>
</select>
<input type="number" name="ilosc" placeholder="ilość">
<input type="text" name="klient" placeholder="nazwisko">
<button>Zamów</button>
</form>
<?php
$result = mysqli_query($db, "SELECT zamowienia.id, nazwa, ilosc, klient FROM zamowienia JOIN kwiaty ON kwiaty.id = zamowienia.kwiat_id");
while ($row = mysqli_fetch_assoc($result)) {
echo "<p>" . $row["klient"] . ": " . $row["nazwa"] . " x " . $row["ilosc"] . "</p>";
}
mysqli_close($db);
?>Ładowanie interaktywnego edytora... Jeśli się nie pojawi, włącz JavaScript.
Wszystkie lekcje kursu PHP i MySQL: strony z bazą danych·Zaloguj się, aby zapisać postęp na koncie.