'기본예제/회원관리'에 해당되는 글 3건

  1. 2009.12.04 회원데이터의 삭제 :: Spac에서 변수의 전달처리
  2. 2009.12.01 2. 회원리스트 조회
  3. 2009.12.01 1. 회원가입 예제
기본예제/회원관리2009. 12. 4. 23:47
이제 리스트 화면에서 특정회원을 삭제해 보도록 하겠습니다.

특정 회원을 삭제하기 위해선 해당 회원의 키값을 전달해야 하는데 회원가입예제에서 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();

이처럼 회원 리스트 화면으로 이동시킵니다.


이제 브라우저에서 삭제처리를 실행하여 제대로 삭제가 이루어 지는지 테스트합니다.


'기본예제 > 회원관리' 카테고리의 다른 글

2. 회원리스트 조회  (0) 2009.12.01
1. 회원가입 예제  (0) 2009.12.01
Posted by webdata
기본예제/회원관리2009. 12. 1. 21:32
이전 예제에서 가입된 회원들의 리스트를 조회하는 예제를 해보겠습니다.

회원에 관련된 내용은 모두 User 클래스에서 실행합니다.
이전에 작성된 User 클래스에 몇가지 메소드를 추가해 보겠습니다.

* Spac/model/User.Class.php
<?php
require_once("/home/sue/www/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() {          //예제를 위해 POST 값을 직접 맴버변수에 등록했음.
        $this->user_id       = $_POST['user_id'];
        $this->user_pw      = $_POST['user_pw'];
        $this->user_name  = $_POST['user_name'];
    }

    //위에서 저장된 맴버변수 값을 DB에 Insert 합니다.
    function regUser() {
       
        $this->setPostVars();
       
        $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->Dao->closeStatement();

    }

    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();       

    }
}
?>

회원리스트를 모두 배열로 가져오는 메소드  getUserList 를 추가했습니다.
회원 리스트는 "list.html" 로 출력합니다.

이제 list.html 파일을 뷰에 생성합니다.

* Spac/view/list.html
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>회원리스트</title>
</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>
    </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>
    </tr>

<?php
}
?>

</table>

<!-- 회원가입버튼을 만들어주고 클릭하면 이전에 만든 가입폼으로 이동시킵니다. -->
<input type="button" value="회원가입" onClick="document.location.href='/User/viewUserRegForm'"></input>

</body>
</html>



이제 브라우저로 출력해 보겠습니다.
아래와 같이 호출합니다.
http://localhost/User/getUserList



회원 리스트가 잘 출력되는지, 회원가입버튼을 클릭하면 이전 예제에서 만든 가입품으로 이동하는지 확인합니다.

이제  회원 가입을 하면 가입처리된 후에 위 리스트 화면으로 이동하도록 수정해 보겠습니다.

User 클래스의 "regUser" 메소드의 마지막 부분만 수정해주면 되겠습니다.

* Spac/model/User.Class.php
<?php
require_once("/home/sue/www/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();
       
        $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();

        $this->Dao->closeStatement();
       
        //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();       

    }
}
?>

위 소스중 echo 로 출력해주는 부분은 주석처리하고 아래 해당 페이지로 바로 이동 (redirect) 시켜줍니다.


브라우저에서 확인하여 회원가입 -> 리스트화면 -> 회원가입화면 의 형식으로 이동이 되는지 확인합니다.

'기본예제 > 회원관리' 카테고리의 다른 글

회원데이터의 삭제 :: Spac에서 변수의 전달처리  (0) 2009.12.04
1. 회원가입 예제  (0) 2009.12.01
Posted by webdata
기본예제/회원관리2009. 12. 1. 18:12
이번 회원가입 예제는 Spac 기본 Mysql Dao를 사용하여 작성됩니다.
Spac 의 Database 개발 환경은  http://spac.tistory.com/10 를 참고하여 준비합니다.

1. 테이블 생성
Create Table `user_info` (
  `user_id` varchar(12) not null,
  `user_pw` varchar(40) not null,
  `user_name` varchar(20) not null,
  `reg_date` datetime,
  primary key (`user_id`)
) engine=innodb;

위의 내용을 참고하여 테이블을 생성합니다.


이제 회원관련 클래스를 만들겠습니다.
클래스는 User.Class.php 로 생성하며, 회원에 관련된 모든 처리를 이 클래스에서 하도록 하겠습니다.
먼저 User 클래스의 뼈대만 간략하게 만들어보겠습니다.

* Spac/Model/User.Class.php
<?php
class User extends Controller {

    var $user_id;
    var $user_pw;
    var $user_name;

    function User () {}

    function viewUserRegForm() {

    }

    function setPostVars() {

    }

    function regUser() {

    }

}

viewUserRegForm : 로그인 폼 보여주기
setPostVars : POST로 전송된 변수를 맴버변수로 등록하기
regUser : 회원 정보 등록하기

간단하게 User 클래스를 만들어보았습니다.
이제 먼저 회원 가입폼을 보여주는 메소드인 "viewUserRegForm" 를 작성해 보겠습니다.
function viewUserRegForm() {
     $this->result_uri    = "user_reg.html";
     $this->dispatcher();
}

위 메소드가 호출되면 뷰인 "user_reg.html" 을 출력합니다.
이제 위에서 설정한 "user_reg.html" 를 만들어봅니다.

* Spac/view/user_reg.html"
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>

<form name="user_reg_form" method="post" action="/User/regUser">
    아이디 : <input type="text" name="user_id" value="" size="12">
    <br/>
    비밀번호 : <input type="password" name="user_pw" value="" size="12">
    <br/>
    이름 : <input type="text" name="user_name" value="" size="12">
    <br/>
    <input type="submit" value="회원가입">
</form>

</body>
</html>



User 클래스의 viewUserRegForm 메소드를 호출하면 뷰의 user_reg.html 가 출력되도록 만들었습니다.
제대로 출력되는지 보겠습니다.
이번에는 메소드명까지 브라우저에 명시합니다. (아직 execute 메소드가 없음)

브라우저 호출
http://localhost/User/viewUserRegForm


결과




이제 User 클래스의 setPostVars 와 regUser 메소드에 내용을 넣어 폼에서 전송된 값을 DB에 저장해 보겠습니다.
DB 작업을 하기 위해서 Dao를 사용하겠습니다. 파란색 글자를 보시면 되겠습니다.

* Spac/Model/User.Class.php
<?php
require_once("/home/sue/www/Spac/controller/Dao/Dao.Class.php"); // getControllerInstance("Dao") 사용할경우 생략가능
class User extends Controller {

    var $user_id;
    var $user_pw;
    var $user_name;

    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();
       
        $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->Dao->closeStatement();


    }


}
?>



브라우저로 결과값을 확인합니다.

* 가입폼 입력 및 전송.


* 가입처리 및 결과 출력


* DB 저장내역 확인



다음에는 User 클래스에 메소드를 추가하여 가입된 회원 조회 및 수정/삭제 프로그램을 작성해 보도록 하겠습니다.

Posted by webdata