Redigering af databasepost i PHP

Lad os nu implementere redigering af brugeren. For at gøre dette har vi brug for to sider: siden edit.php, hvor formularen til redigering af brugeren vil være placeret, og siden save.php, hvor formularen vil blive sendt for efterfølgende lagring.

Redigeringsside

Lad os først lave en formular på siden edit.php:

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

I denne formular vil vi indlæse de aktuelle data for brugeren fra databasen. Lad id for brugeren til redigering blive sendt som en GET parameter:

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

Lad os oprette en forespørgsel for at hente brugeren:

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

Lad os udføre forespørgslen:

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

Lad os hente brugerens data ind i en variabel:

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

Lad os vise disse data i vores formular:

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>

Lad os ændre formularens action, så den bliver sendt til siden save.php:

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

Samtidig vil vi sende brugerens id som en GET parameter:

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

Gemmeside

På siden save.php henter vi de sendte data:

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

Lad os oprette en forespørgsel til opdatering:

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

Lad os udføre forespørgslen:

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

Lad os vise en besked om succes for operationen:

html<?php
  echo 'Brugeren blev ændret succesfuldt!';
?>

Praktiske opgaver

Задание 1

Implementer siden edit.php til redigering af brugeren.

Задание 2

Implementer siden save.php til lagring af resultatet af redigeringen.

Задание 3

På siden index.php, vis en liste over brugere, så der for hver bruger er et link til deres redigering:

html<ul>
  <li>user1 <a href="?edit=1">rediger</a></li>
  <li>user2 <a href="?edit=2">rediger</a></li>
  <li>user3 <a href="?edit=3">rediger</a></li>
</ul>
Задание 4

Implementer håndtering af formularen på siden edit.php.