Modification d'enregistrement en base de données avec PHP

Implémentons maintenant la modification d'un utilisateur. Pour cela, nous aurons besoin de deux pages : la page edit.php, qui contiendra le formulaire de modification de l'utilisateur, et la page save.php, à laquelle le formulaire sera envoyé pour enregistrement ultérieur.

Page de modification

Pour commencer, créons un formulaire sur la page edit.php :

edit.php<form action="" method="POST">
  <input name="name">
  <input name="age">
  <input name="salary">
  <input type="submit">
</form>

Nous allons charger les données actuelles de l'utilisateur depuis la base de données dans ce formulaire. Soit id de l'utilisateur à modifier transmis dans le paramètre GET :

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

Préparons la requête pour récupérer l'utilisateur :

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

Exécutons la requête :

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

Récupérons les données de l'utilisateur dans une variable :

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

Affichons ces données dans notre formulaire :

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>

Modifions l'action du formulaire pour qu'il soit envoyé vers la page save.php :

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

Dans ce cas, nous transmettrons le id de l'utilisateur à modifier en paramètre GET :

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

Page de sauvegarde

Sur la page save.php, récupérons les données envoyées :

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

Préparons la requête de mise à jour :

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

Exécutons la requête :

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

Affichons un message de succès de l'opération :

html<?php
  echo 'Utilisateur modifié avec succès !';
?>

Tâches pratiques

Задание 1

Implémentez la page edit.php pour modifier un utilisateur.

Задание 2

Implémentez la page save.php pour sauvegarder le résultat de la modification.

Задание 3

Sur la page index.php, affichez à l'écran la liste des utilisateurs de telle sorte que pour chaque utilisateur, il y ait un lien pour le modifier :

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

Implémentez le traitement du formulaire sur la page edit.php.