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:

edit.php<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:

edit.php<?php
  $id = $_GET['id'];
?>

Sformułujmy zapytanie o pobranie użytkownika:

edit.php<?php
  $query = "SELECT * FROM users WHERE id=$id";
?>

Wykonajmy zapytanie:

edit.php<?php
  $result = mysqli_query($link, $query) or die(mysqli_error($link));
?>

Pobierzmy dane użytkownika do zmiennej:

edit.php<?php
  $user = mysqli_fetch_assoc($result);
?>

Wypiszmy te dane w naszym formularzu:

edit.php<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:

html<form action="save.php" method="POST">

Przy tym parametrem GET przekazujmy id użytkownika do edycji:

html<form action="save.php?id=<?= $_GET['id'] ?>" method="POST">

Strona zapisywania

Na stronie save.php pobierzmy wysłane dane:

html<?php
  $id = $_GET['id'];
  $name = $_POST['name'];
  $age = $_POST['age'];
  $salary = $_POST['salary'];
?>

Sformułujmy zapytanie o aktualizację:

html<?php
  $query = "UPDATE users SET
    name='$name', age='$age', salary='$salary'
  WHERE id=$id";
?>

Wykonajmy zapytanie:

html<?php
  mysqli_query($link, $query) or die(mysqli_error($link));
?>

Wypiszmy komunikat o sukcesie operacji:

html<?php
  echo 'użytkownik został pomyślnie zmieniony!';
?>

Zadania praktyczne

Задание 1

Zaimplementuj stronę edit.php do edycji użytkownika.

Задание 2

Zaimplementuj stronę save.php do zapisywania wyniku edycji.

Задание 3

Na stronie index.php wypisz na ekran listę użytkowników tak, aby dla każdego użytkownika był link do jego edycji:

html<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>
Задание 4

Zaimplementuj przetwarzanie formularza na stronie edit.php.