Redigering av databasepost i PHP
La oss nå implementere redigering av bruker.
For dette trenger vi to sider: siden
edit.php, hvor skjemaet for
redigering av bruker vil være plassert, og siden
save.php, hvor skjemaet vil bli sendt
for påfølgende lagring.
Redigeringsside
Først på siden edit.php lager vi
et skjema:
<form action="" method="POST">
<input name="name">
<input name="age">
<input name="salary">
<input type="submit">
</form>
I dette skjemaet vil vi laste inn gjeldende data
for brukeren fra databasen. La id for brukeren
som skal redigeres sendes i GET
parameter:
<?php
$id = $_GET['id'];
?>
La oss sette sammen en forespørsel for å hente brukeren:
<?php
$query = "SELECT * FROM users WHERE id=$id";
?>
La oss utføre forespørselen:
<?php
$result = mysqli_query($link, $query) or die(mysqli_error($link));
?>
La oss hente brukerdataene inn i en variabel:
<?php
$user = mysqli_fetch_assoc($result);
?>
La oss vise disse dataene i skjemaet vårt:
<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>
La oss endre action for skjemaet slik at det
sendes til siden save.php:
<form action="save.php" method="POST">
Samtidig vil vi sende id for brukeren som skal redigeres
som en GET parameter:
<form action="save.php?id=<?= $_GET['id'] ?>" method="POST">
Lagringsside
På siden save.php henter vi de innsendte
dataene:
<?php
$id = $_GET['id'];
$name = $_POST['name'];
$age = $_POST['age'];
$salary = $_POST['salary'];
?>
La oss sette sammen en forespørsel for oppdatering:
<?php
$query = "UPDATE users SET
name='$name', age='$age', salary='$salary'
WHERE id=$id";
?>
La oss utføre forespørselen:
<?php
mysqli_query($link, $query) or die(mysqli_error($link));
?>
La oss vise en melding om vellykket operasjon:
<?php
echo 'brukeren ble vellykket endret!';
?>
Praktiske oppgaver
Implementer siden edit.php for redigering
av bruker.
Implementer siden save.php for lagring
av redigeringsresultatet.
På siden index.php, vis
en liste over brukere på skjermen slik at for hver
bruker er det en lenke for redigering:
<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>
Implementer behandling av skjemaet på siden edit.php.