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:
<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:
<?php
$id = $_GET['id'];
?>
Låt oss skapa en fråga för att hämta användaren:
<?php
$query = "SELECT * FROM users WHERE id=$id";
?>
Låt oss köra frågan:
<?php
$result = mysqli_query($link, $query) or die(mysqli_error($link));
?>
Låt oss hämta användardata till en variabel:
<?php
$user = mysqli_fetch_assoc($result);
?>
Låt oss visa denna data i vårt formulär:
<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:
<form action="save.php" method="POST">
Samtidigt skickar vi id för användaren som ska redigeras
som en GET-parameter:
<form action="save.php?id=<?= $_GET['id'] ?>" method="POST">
Lagringssidan
På sidan save.php hämtar vi de skickade
uppgifterna:
<?php
$id = $_GET['id'];
$name = $_POST['name'];
$age = $_POST['age'];
$salary = $_POST['salary'];
?>
Låt oss skapa en uppdateringsfråga:
<?php
$query = "UPDATE users SET
name='$name', age='$age', salary='$salary'
WHERE id=$id";
?>
Låt oss köra frågan:
<?php
mysqli_query($link, $query) or die(mysqli_error($link));
?>
Låt oss visa ett meddelande om att operationen lyckades:
<?php
echo 'användaren har ändrats framgångsrikt!';
?>
Praktiska uppgifter
Implementera sidan edit.php för redigering
av användare.
Implementera sidan save.php för att spara
resultatet av redigeringen.
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:
<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>
Implementera hanteringen av formuläret på sidan edit.php.