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:

edit.php<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:

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

La oss sette sammen en forespørsel for å hente brukeren:

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

La oss utføre forespørselen:

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

La oss hente brukerdataene inn i en variabel:

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

La oss vise disse dataene i skjemaet vårt:

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>

La oss endre action for skjemaet slik at det sendes til siden save.php:

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

Samtidig vil vi sende id for brukeren som skal redigeres som en GET parameter:

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

Lagringsside

På siden save.php henter vi de innsendte dataene:

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

La oss sette sammen en forespørsel for oppdatering:

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

La oss utføre forespørselen:

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

La oss vise en melding om vellykket operasjon:

html<?php
  echo 'brukeren ble vellykket endret!';
?>

Praktiske oppgaver

Задание 1

Implementer siden edit.php for redigering av bruker.

Задание 2

Implementer siden save.php for lagring av redigeringsresultatet.

Задание 3

På siden index.php, vis en liste over brukere på skjermen slik at for hver bruker er det en lenke for 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 behandling av skjemaet på siden edit.php.