Επεξεργασία εγγραφής στη βάση δεδομένων σε PHP

Ας υλοποιήσουμε τώρα την επεξεργασία του χρήστη. Για αυτό θα χρειαστούμε δύο σελίδες: τη σελίδα edit.php, όπου θα βρίσκεται η φόρμα για την επεξεργασία του χρήστη, και τη σελίδα save.php, στην οποία θα υποβάλλεται η φόρμα για subsequent αποθήκευση.

Σελίδα επεξεργασίας

Αρχικά, στη σελίδα edit.php ας φτιάξουμε τη φόρμα:

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

Σε αυτή τη φόρμα θα φορτώνουμε τα τρέχοντα δεδομένα του χρήστη από τη βάση δεδομένων. Ας υποθέσουμε ότι το id του χρήστη για επεξεργασία μεταδίδεται ως GET παράμετρος:

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

Ας δημιουργήσουμε το ερώτημα για λήψη του χρήστη:

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

Ας εκτελέσουμε το ερώτημα:

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

Ας πάρουμε τα δεδομένα του χρήστη σε μια μεταβλητή:

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

Ας εμφανίσουμε αυτά τα δεδομένα στη φόρμα μας:

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>

Ας αλλάξουμε το action της φόρμας ώστε να αποστέλλεται στη σελίδα save.php:

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

Σε αυτή την περίπτωση, ως GET παράμετρο θα μεταδίδουμε το id του χρήστη για επεξεργασία:

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

Σελίδα αποθήκευσης

Στη σελίδα save.php θα λάβουμε τα δεδομένα που απεστάλησαν:

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

Ας δημιουργήσουμε το ερώτημα για ενημέρωση:

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

Ας εκτελέσουμε το ερώτημα:

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

Ας εμφανίσουμε μήνυμα επιτυχίας της λειτουργίας:

html<?php
  echo 'Ο χρήστης άλλαξε επιτυχώς!';
?>

Πρακτικές ασκήσεις

Задание 1

Υλοποιήστε τη σελίδα edit.php για επεξεργασία χρήστη.

Задание 2

Υλοποιήστε τη σελίδα save.php για αποθήκευση του αποτελέσματος της επεξεργασίας.

Задание 3

Στη σελίδα index.php εμφανίστε στην οθόνη τη λίστα των χρηστών έτσι, ώστε για κάθε χρήστη να υπάρχει ένας σύνδεσμος για την επεξεργασία του:

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

Υλοποιήστε την επεξεργασία της φόρμας στη σελίδα edit.php.