달력

112024  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

<?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하고, 이를 사용하여 쿼리문을 이용한다.
만약 이 부분을 빼먹게 되면 오류가 발생한다.

Posted by CloudySky
|