PHP에서 데이터베이스 레코드 편집

이제 사용자 편집을 구현해 보겠습니다. 이를 위해서는 두 개의 페이지가 필요합니다: 사용자 편집을 위한 양식이 위치할 페이지 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>

양식이 save.php 페이지로 제출되도록 action을 변경합니다:

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 페이지의 양식 처리를 구현하세요.