이제 리스트 화면에서 특정회원을 삭제해 보도록 하겠습니다.
특정 회원을 삭제하기 위해선 해당 회원의 키값을 전달해야 하는데 회원가입예제에서 POST 처리를 했으므로 이번에는 GET방식으로 회원 키값을 받아 처리하는 예제를 해보겠습니다.
먼저 list.html 에 각 회원목록에 버튼을 만들어 회원의 정보를 삭제할 수있도록 GET방식으로 삭제 메소드에 변수를 전달하는 코드를 만듭니다.
기존 list.html 을 아래의 내용으로 수정합니다.
* Spac/view/list.html
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>회원리스트</title>
<script>
function deleteUser(user_id) {
document.location.href="/User/deleteUser/"+user_id;
}
</script>
</head>
<body>
회원수는 <?=count($this->data_list)?> 명 입니다.
<br/><br/>
<table border="1">
<tr bgcolor="#f2f2f2">
<td width="100">아이디</td>
<td width="120">이름</td>
<td width="150">등록일</td>
<td width="60">처리</td>
</tr>
<?php
foreach($this->data_list as $Rows) {
?>
<tr>
<td width="100"><?=$Rows['user_id']?></td>
<td width="120"><?=$Rows['user_name']?></td>
<td width="150"><?=$Rows['reg_date']?></td>
<td width="60"><a href="#" onClick="deleteUser('<?=$Rows['user_id']?>')">삭제</a></td>
</tr>
<?php
}
?>
</table>
<!-- 회원가입버튼을 만들어주고 클릭하면 이전에 만든 가입폼으로 이동시킵니다. -->
<input type="button" value="회원가입" onClick="document.location.href='/User/viewUserRegForm'"></input>
</body>
</html>
회원 삭제처리 메소드는 User 클래스내에 "deleteUser" 로 하겠습니다.
따라서 위의 예제에서는 각 회원리스트중 "삭제" 버튼을 클릭하면 "/User/deleteUser/아이디" 를 브라우저로 호출하도록 했습니다.
URL에서 슬래시를 기준으로 첫번째는 클래스명, 두번째는 메소드명, 세번째이상은 전달 GET 변수입니다.
따라서 위 주소의 뜻은 User 클래스의 deleteUser 메소드를 "아이디"를 인자로 호출한다는의미입니다.
이제 실행할 실제 deleteUser 메소드를 작성합니다.
* Spac/model/User.Class.php
<?php
require_once("../Spac/controller/Dao/Dao.Class.php"); // getControllerInstance("Dao") 사용할경우 생략가능
class User extends Controller {
var $user_id;
var $user_pw;
var $user_name;
var $data_list = array();
function User () {
$this->Dao = new Dao; //$this->getControllerInstance("Dao"); 로 대체 가능.
$this->Dao->transaction = true;
$this->Dao->connect();
}
function viewUserRegForm() {
$this->result_uri = "user_reg.html";
$this->dispatcher();
}
// POST 로 전송된 값을 맴버변수로 세팅합니다.
function setPostVars() {
$this->user_id = $_POST['user_id'];
$this->user_pw = $_POST['user_pw'];
$this->user_name = $_POST['user_name'];
}
//위에서 저장된 맴버변수 값을 DB에 Insert 합니다.
function regUser() {
$this->setPostVars();
//print_r($param);
//exit;
$query = " Insert Into user_info(user_id,user_pw,user_name,reg_date) values(?,password(?),?,NOW()) ";
$this->Dao->prepareStatement($query);
$param = array($this->user_id,$this->user_pw,$this->user_name);
$this->Dao->setParam($param);
$this->Dao->executeStatement();
//echo "회원가입에 성공했습니다.";
$this->result_uri = "/User/getUserList";
$this->redirect();
}
function getUserList() {
$this->data_list = array();
$query = " Select * From user_info ";
$this->Dao->executeQuery($query);
while($rows = $this->Dao->getFetchArray()) {
$this->data_list[] = $rows;
}
$this->result_uri = "list.html";
$this->dispatcher();
}
function getDeleteGetVars() {
$this->user_id = $this->args[0];
}
function deleteUser() {
$this->getDeleteGetVars();
$query = " Delete From user_info Where user_id = ?";
$this->Dao->prepareStatement($query);
$param = array($this->user_id);
$this->Dao->setParam($param);
$this->Dao->executeStatement();
$this->Dao->closeStatement();
$this->result_uri = "/User/getUserList";
$this->redirect();
}
}
?>
:::[getDeleteGetVars] 설명:::
위 내용중 파란색 글자 부분이 기존 User 클래스에서 추가된 내용입니다.
"getDeleteGetVars" 메소드를 보면 GET변수를 받는 방법을 알 수 있습니다.
도메인/클래스명/메소드명/parameter1/parameter2.....
위의 형식 중 parameter를 받는 방법은
$param1 = $this->args[0];
$param2 = $this->args[1];
위의
getDeleteGetVars 예제에선 전달 변수가 1개이므로
function getDeleteGetVars() {
$this->user_id = $this->args[0];
}
이처럼 변수를 받아 맴버변수로 저장했습니다.
[deleteUser] 설명
먼저 위의
getDeleteGetVars 메소드를 호출하여 전달된 변수를 맴버변수로 받습니다.
해당 변수를 user_id 조건으로 삭제 SQL 문을 처리합니다.
처리 후엔
$this->result_uri = "/User/getUserList";
$this->redirect();
이처럼 회원 리스트 화면으로 이동시킵니다.
이제 브라우저에서 삭제처리를 실행하여 제대로 삭제가 이루어 지는지 테스트합니다.