Redigering av databaspost i PHP

Låt oss nu implementera redigering av användare. För detta behöver vi två sidor: sidan edit.php, där formuläret för redigering av användare kommer att finnas, och sidan save.php, dit formuläret kommer att skickas för efterföljande lagring.

Redigeringssidan

Låt oss först skapa ett formulär på sidan edit.php:

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

I detta formulär kommer vi att ladda nuvarande data för användaren från databasen. Låt id för användaren som ska redigeras skickas i GET-parametern:

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

Låt oss skapa en fråga för att hämta användaren:

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

Låt oss köra frågan:

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

Låt oss hämta användardata till en variabel:

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

Låt oss visa denna data i vårt formulär:

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>

Låt oss ändra action för formuläret så att det skickas till sidan save.php:

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

Samtidigt skickar vi id för användaren som ska redigeras som en GET-parameter:

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

Lagringssidan

På sidan save.php hämtar vi de skickade uppgifterna:

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

Låt oss skapa en uppdateringsfråga:

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

Låt oss köra frågan:

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

Låt oss visa ett meddelande om att operationen lyckades:

html<?php
  echo 'användaren har ändrats framgångsrikt!';
?>

Praktiska uppgifter

Задание 1

Implementera sidan edit.php för redigering av användare.

Задание 2

Implementera sidan save.php för att spara resultatet av redigeringen.

Задание 3

På sidan index.php, visa listan över användare så att för varje användare finns en länk för att redigera dem:

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

Implementera hanteringen av formuläret på sidan edit.php.