PHPでのデータベースレコード編集
それでは、ユーザーの編集機能を実装してみましょう。
これには2つのページが必要です: ユーザー編集用のフォームが配置される
ページedit.phpと、フォームが送信されて保存が行われる
ページsave.phpです。
編集ページ
まず、ページedit.phpにフォームを作成します:
<form action="" method="POST">
<input name="name">
<input name="age">
<input name="salary">
<input type="submit">
</form>
このフォームには、データベースから取得したユーザーの現在のデータを
読み込みます。編集するユーザーのidは
GETパラメータで渡されるものとします:
<?php
$id = $_GET['id'];
?>
ユーザーを取得するクエリを作成しましょう:
<?php
$query = "SELECT * FROM users WHERE id=$id";
?>
クエリを実行します:
<?php
$result = mysqli_query($link, $query) or die(mysqli_error($link));
?>
ユーザーデータを変数に取得します:
<?php
$user = mysqli_fetch_assoc($result);
?>
これらのデータをフォーム内に表示します:
<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に
送信されるように変更します:
<form action="save.php" method="POST">
この際、編集するユーザーのidを
GETパラメータとして渡します:
<form action="save.php?id=<?= $_GET['id'] ?>" method="POST">
保存ページ
ページsave.phpで、送信されたデータを取得します:
<?php
$id = $_GET['id'];
$name = $_POST['name'];
$age = $_POST['age'];
$salary = $_POST['salary'];
?>
更新用のクエリを作成します:
<?php
$query = "UPDATE users SET
name='$name', age='$age', salary='$salary'
WHERE id=$id";
?>
クエリを実行します:
<?php
mysqli_query($link, $query) or die(mysqli_error($link));
?>
操作成功のメッセージを表示します:
<?php
echo 'ユーザーが正常に変更されました!';
?>
実践的な課題
ユーザー編集用のページedit.phpを実装してください。
編集結果を保存するためのページsave.phpを実装してください。
ページindex.phpに、各ユーザーに対して
編集用リンクが付いたユーザーリストを表示してください:
<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>
ページedit.phpでのフォーム処理を実装してください。