Spac 매뉴얼/MySQL Dao2009. 11. 20. 00:19
이전 예제까지는 모델 클래스에서 직접 출력해 보았습니다.
이번 예제에선 모델클래스에서 가져온 결과값을 뷰에 출력하는 예제를 해보겠습니다.

예제3 의 Member 클래스를 좀 더 수정해 보겠습니다.

* Spac/model/Member.Class.php
<?php
class Member extends Controller {

    var $db_msg;
    var $data_list;
    var $total_count = 0;

    
    function Member() { }

    function initMember() {               //맴버클래스 초기화메소드를 만들고 여기서 DB 연결을 합니다.
        $this->getControllerInstance("Dao");        // Dao 클래스를 로드합니다.
        $this->Dao->transaction = true;                    // 트랜젝션을 Start 합니다.
        $this->Dao->Connect();                            // DB를 연결합니다.
    }

    function getCount() {
        $query = " Select count(*) From member ";
        $this->Dao->executeQuery($query);
        //echo "<p>회원수는 " . $this->Dao->getResult() ." 명 입니다.</p>";  //주석처리

        $this->total_count            = $this->Dao->getResult();          //총레코드수를 맴버변수에 담습니다.

    }

    function getList() {
   
        $this->data_list = array();                         //결과를 담을 변수를 초기화 합니다.

        $query = " Select * From member ";          //전체 데이터 검색 쿼리문 작성
        $this->Dao->
executeQuery($query);                //쿼리문 실행

      $Result = $this->Dao->result;
        while( $Rows = $this->Dao->getFetchArray() ) { //결과값을 행을 돌며
             $this->data_list[] = $Rows;                       //결과 변수에 배열로 담습니다.
        }

        /*  --결과값을 뷰로 출력하기 위해 이부분을 주석처리 합니다.
        ec
ho "<pre>";                                      //배열로 담긴 결과값을 보기 쉽도록 출력합니다.
        print_r($this->data_list);
        echo "</pre>";
        */
     
        $this->result_uri    = "list.html";              // 뷰로 사용할 파일을 지정합니다.
        $this->dispatcher();                             // 뷰를 배치합니다.
   

  }



    function execute() {                                     //Spac의 기본 액션메소드를 정의합니다.
        $this->initMember();                               
//기본메소드가 호출되면 DB연결을 수행합니다.

        $this->db_msg = "
데이터베이스 연결에 성공했습니다."; 

      $this->getCount();
       $this->getList();
  


    }

}
?>


위와 같이 결과값을 클래스에서 출력하지 않고 클래스 맴버변수에 저장한 뒤 뷰를 배치합니다.

뷰로 사용할 파일을 정의하였기때문에 해당 파일을 생성합니다.

* Spac/view/list.html
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>회원리스트</title>
</head>
<body>

<?php echo $this->db_msg ?>
<br/><br/>

회원수는 <?php echo $this->total_count?> 명 입니다.
<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>

</body>
</html>


위의 list.html 내용을 보면 클래스내부에서 맴버변수를 가져다 사용하듯 $this->변수  방식으로 사용하는것을 알 수 있습니다.

아래는 결과 입니다.




이상으로 간단한 데이터베이스 예제를 해보았습니다.
다음 예제에서는 조건문이 들어간 쿼리문을 실행하는 예제를 해보겠습니다.

Posted by webdata
Spac 매뉴얼/MySQL Dao2009. 11. 18. 22:35
먼저 데이터 조회 예제를 수행하기 위해 기본 데이터를 넣어 놓겠습니다.

Insert Into member ( user_id, user_name, reg_date) values ( 'dukman', '덕만', now() );
Insert Into member ( user_id, user_name, reg_date) values ( 'misil', '미실', now() );
Insert Into member ( user_id, user_name, reg_date) values ( 'bidam', '비담', now() );

위의 쿼리문을 실행하여 데이터를 3건 등록한 후 예제2의 회원수구하는 클래스인 "Member" 를 바로 호출해 보도록 하겠습니다.


브라우저에서 결과를 확인 합니다.

결과는 "회원수는 3 명 입니다." 라고 메세지가 출력될 것입니다.


그럼 이제 실제 3명의 상세 데이터값을 가져와 봅니다.
Member 클래스를 좀 더 보완하겠습니다.

* Spac/model/Member.Class.php
<?php
class Member extends Controller {

    var $data_list;
    
    function Member() { }

    function initMember() {               //맴버클래스 초기화메소드를 만들고 여기서 DB 연결을 합니다.
        $this->getControllerInstance("Dao");        // Dao 클래스를 로드합니다.
        $this->Dao->transaction = true;                    // 트랜젝션을 Start 합니다.
        $this->Dao->Connect();                            // DB를 연결합니다.
    }

    function getCount() {
        $query = " Select count(*) From member ";
        $this->Dao->
executeQuery($query);
        echo "<p>회원수는 " . $this->Dao->getResult() ." 명 입니다.</p>";
    }

    function getList() {
   
        $this->data_list = array();                         //결과를 담을 변수를 초기화 합니다.

        $query = " Select * From member ";          //전체 데이터 검색 쿼리문 작성
        $this->Dao->
executeQuery($query);                //쿼리문 실행

      $Result = $this->Dao->result;
        while( $Rows = $this->Dao->getFetchArray() ) { //결과값을 행을 돌며
             $this->data_list[] = $Rows;               //결과 변수에 배열로 담습니다.
        }

        echo "<pre>";                                      //배열로 담긴 결과값을 보기 쉽도록 출력합니다.
        print_r($this->data_list);
        echo "</pre>";

    }



    function execute() {                                     //Spac의 기본 액션메소드를 정의합니다.
        $this->initMember();                               
//기본메소드가 호출되면 DB연결을 수행합니다.
        echo "<p>데이터베이스 연결에 성공했습니다.</p>"; 


      $this->getCount();
       $this->getList();
  


    }

}
?>




브라우저에서 결과를 확인 합니다.

결과는 "회원수는 3 명 입니다." 와 회원 테이블의 정보들이 배열형태로 출력될 것입니다.





지금까지는 뷰를 거치지 않고 클래스에서 바로 출력하는 예제를 실행 해봤습니다.
다음 예제에서는 클래스에서 출력하지 않고 해당 클래스와 연결된 뷰에서 데이터를 출력하는 예제를 작성해 보겠습니다.

Posted by webdata
Spac 매뉴얼/MySQL Dao2009. 11. 18. 22:35

성공 메세지가 출력된다면 쿼리문의 실행 예제를 위한 테이블을 만들어보도록 하겠습니다.

회원정보를 저장할 테이블로 "member" 라는 이름의 테이블을 만듭니다. 간단한 필드만 넣어서 만들어보겠습니다.

Create Table `member` (
  `user_id` varchar(12) not null,
  `user_name` varchar(20) not null,
  `reg_date` datetime,
  primary key (`user_id`)
) engine=innodb;



위에서 만든 Member 클래스에  내용을 추가하여 위 테이블의 레코드 수를 화면에 출력 하도록 해봅시다.

* Spac/model/Member.Class.php
<?php
class Member extends Controller {
   
    function Member() {}                  //이번예제는 생성자에서 별도 할일이 없으므로 정의만 해 놓습니다.

    function initMember() {               //맴버클래스 초기화메소드를 만들고 여기서 DB 연결을 합니다.
        $this->getControllerInstance("Dao");        // Dao 클래스를 로드합니다.
        $this->Dao->transaction = true;                    // 트랜젝션을 Start 합니다.
        $this->Dao->Connect();                            // DB를 연결합니다.
    }

    function getCount() {
        $query = " Select count(*) From member ";
        $this->Dao->executeQuery($query);
        echo "<p>회원수는 " . $this->Dao->getResult() ." 명 입니다.</p>";
    }

    function execute() {                                     //Spac의 기본 액션메소드를 정의합니다.
        $this->initMember();                               
//기본메소드가 호출되면 DB연결을 수행합니다.
        echo "<p>데이터베이스 연결에 성공했습니다.</p>"; 


      $this->getCount();

    }

}
?>


getCount() 메소드를 추가 하여 "member"  테이블의 레코드 수가 출력되도록 작성합니다.




브라우저에 다시 한 번 실행결과를 확인합니다.


현재는 레코드가 없으므로 "회원수는 0 명 입니다." 라고 메세지가 출력될 것입니다.



Posted by webdata