PHPでのデータベースレコード編集

それでは、ユーザーの編集機能を実装してみましょう。 これには2つのページが必要です: ユーザー編集用のフォームが配置される ページedit.phpと、フォームが送信されて保存が行われる ページsave.phpです。

編集ページ

まず、ページ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">

この際、編集するユーザーのidを GETパラメータとして渡します:

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でのフォーム処理を実装してください。