PHP에서 데이터베이스 레코드 편집
이제 사용자 편집을 구현해 보겠습니다.
이를 위해서는 두 개의 페이지가 필요합니다: 사용자 편집을 위한
양식이 위치할 페이지 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>
양식이 save.php 페이지로 제출되도록
action을 변경합니다:
<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 페이지의 양식 처리를 구현하세요.