Edycja rekordu w bazie danych w PHP
Teraz zaimplementujmy edycję użytkownika.
Do tego potrzebujemy dwóch stron: strony
edit.php, na której znajdzie się
formularz do edycji użytkownika, oraz strony
save.php, na którą formularz będzie wysyłany
w celu późniejszego zapisania.
Strona edycji
Na początek na stronie edit.php zróbmy
formularz:
<form action="" method="POST">
<input name="name">
<input name="age">
<input name="salary">
<input type="submit">
</form>
Do tego formularza będziemy wczytywać bieżące dane
użytkownika z bazy danych. Niech id użytkownika
do edycji będzie przekazywane w parametrze GET:
<?php
$id = $_GET['id'];
?>
Sformułujmy zapytanie o pobranie użytkownika:
<?php
$query = "SELECT * FROM users WHERE id=$id";
?>
Wykonajmy zapytanie:
<?php
$result = mysqli_query($link, $query) or die(mysqli_error($link));
?>
Pobierzmy dane użytkownika do zmiennej:
<?php
$user = mysqli_fetch_assoc($result);
?>
Wypiszmy te dane w naszym formularzu:
<form method="POST">
<input name="name" value="<?= $user['name'] ?>">
<input name="age" value="<?= $user['age'] ?>">
<input name="salary" value="<?= $user['salary'] ?>">
<input type="submit">
</form>
Zmieńmy action formularza tak, aby był
wysyłany na stronę save.php:
<form action="save.php" method="POST">
Przy tym parametrem GET przekazujmy
id użytkownika do edycji:
<form action="save.php?id=<?= $_GET['id'] ?>" method="POST">
Strona zapisywania
Na stronie save.php pobierzmy wysłane
dane:
<?php
$id = $_GET['id'];
$name = $_POST['name'];
$age = $_POST['age'];
$salary = $_POST['salary'];
?>
Sformułujmy zapytanie o aktualizację:
<?php
$query = "UPDATE users SET
name='$name', age='$age', salary='$salary'
WHERE id=$id";
?>
Wykonajmy zapytanie:
<?php
mysqli_query($link, $query) or die(mysqli_error($link));
?>
Wypiszmy komunikat o sukcesie operacji:
<?php
echo 'użytkownik został pomyślnie zmieniony!';
?>
Zadania praktyczne
Zaimplementuj stronę edit.php do edycji
użytkownika.
Zaimplementuj stronę save.php do zapisywania
wyniku edycji.
Na stronie index.php wypisz na
ekran listę użytkowników tak, aby dla każdego
użytkownika był link do jego edycji:
<ul>
<li>user1 <a href="?edit=1">edit</a></li>
<li>user2 <a href="?edit=2">edit</a></li>
<li>user3 <a href="?edit=3">edit</a></li>
</ul>
Zaimplementuj przetwarzanie formularza na stronie edit.php.