<?php # Script 9.2 - delete_user.php
$page_title = 'Delete a User';
include ('includes/header.html');
echo '<h1>Delete a user</h1>';
// 페이지 앞부분에 이전 페이지에서 전달받은 id 변수값이 숫자형인지 확인한다
if( (isset($_GET['id'])) && (is_numeric($_GET['id'])) ) {
$id = $_GET['id'];
} elseif ( (isset($_POST['id'])) && (is_numeric($_POST['id'])) ) {
$id = $_POST['id'];
} else {
echo '<p class="error">This page has been accessed in error.</p>';
include('includes/footer.html');
exit();
}
require_once('../mysqli_connect.php');
if (isset($_POST['submitted'])) { // 제출된 폼을 처리하는 주 조건절
if ($_POST['sure'] == 'Yes') { // radio버튼에서 Yes를 선택할 경우, 'sure'라는 변수에 'Yes'값이 저장되므로, 이를 이용한다.
$q = "DELETE FROM users WHERE user_id=$id LIMIT 1";
$r = @mysqli_query($dbc, $q);
if(mysqli_affected_rows($dbc) == 1) { // 쿼리 결과로 1개의 데이터만이 영향을 받았는지 확인한다
echo '<p>The user has been deleted.</p>';
} else {
echo '<p>' . mysqli_error($dbc) . '<br />Query: ' . $q . '</p>';
}
} else {
echo '<p>The user has NOT been deleted.</p>';
}
} else { // 사용자가 결정을 내리기 전까지는 submit이 되지 않은 상태이므로, 제출된 폼을 처리하는 조건절의 else를 사용하여 처음에 보여지는 페이지 모습을 만든다
$q = "SELECT CONCAT(last_name, ', ', first_name) FROM users WHERE user_id=$id";
$r = @mysqli_query($dbc, $q);
if(mysqli_num_rows($r) == 1) {
$row = mysqli_fetch_array ($r, MYSQLI_NUM);
echo '<form action="delete_user.php" method="post">
<h3>Name: ' . $row[0] . '</h3>
<p>Are you sure you want to delete this user?<br />
<input type="radio" name="sure" value="Yes" /> Yes
<input type="radio" name="sure" value="no" checked="checked" /> No</p>
<p><input type="submit" name="submit" value="Submit" /></p>
<input type="hidden" name="submitted" value="TRUE" />
<input type="hidden" name="id" value="'. $id . '" /> // hidden 폼을 이용하여 이전 페이지에서 받은 id값을 submit이 수행됨과 동시에 함께 전달한다.
</form>';
} else {
echo '<p class="error">This page has been accessed in error.</p>';
}
}
mysqli_close($dbc);
include('includes/footer.html');
?>
#Error Comment
<input type="hidden" name="id" value="'. $id . '" />
위 예제 소스의 핵심부분이다.
$id 변수를 hidden 상태로 폼에 submit하고, 이를 사용하여 쿼리문을 이용한다.
만약 이 부분을 빼먹게 되면 오류가 발생한다.
'공부 이야기 > PHP6' 카테고리의 다른 글
Chapter09. 일반적인 프로그래밍 테크닉 - 5 ('10.10.23) (0) | 2010.10.23 |
---|---|
Chapter09. 일반적인 프로그래밍 테크닉 - 4 ('10.10.23) (0) | 2010.10.23 |
Chapter09. 일반적인 프로그래밍 테크닉 - 3 ('10.10.23) (0) | 2010.10.23 |
Chapter09. 일반적인 프로그래밍 테크닉 - 1 ('10.10.22) (0) | 2010.10.22 |