'PHP프레임웍 예제'에 해당되는 글 2건

  1. 2009.11.20 예제4 : 뷰를 이용한 DB 데이터의 출력
  2. 2009.11.13 "Hello World" 를 출력해보자 2
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
첫번째 예제로 브라우저 화면에 "Hello World" 를 출력하는 프로그램을 만들어보겠습니다.

예제를 수행하기 위해 "Controller.ini" 파일의 설정값을 약간 수정하겠습니다.

아래는 "Controller.ini" 파일의 일부입니다. 아래 해당하는 항목을 아래의 경로로 수정합니다.

modelPath = "../Spac/model"                ; 모델클래스의 경로
viewPath = "../Spac/view"                     ; 뷰의 경로
.
.
.
errPrintView = true                                 ; 에러 화면출력
.
.
useViewCache = false                           ; 뷰캐시 기능 끔


위와 같이 모델경로와 뷰경로를 변경 하고 예제를 작성해보겠습니다.


모델클래스를 만들기 전에 클래스 생성 규칙이 있습니다.

1. Spac 에 사용되는 클래스명은 알파벳 대/소문자, 숫자, 언더바 만 사용 가능하며
2. 클래스명의 첫글자는 알파벳 대문자로 시작해야 합니다.
3. 마지막으로 파일명은 "클래스명.Class.php" 로 생성해야 합니다.
4. 클래스파일내에 클래스를 작성할때 클래스명의 선언은 파일의 "클래스명" 과 동일하여야 합니다.
5. 클래스를 작성할때는 클래스명과 동일한 메소드(생성자) 외에 기본 실행 메소드가 반드시 존재해야 합니다.
   Spac에서는 기본메소드명을 "execute" 로 정하고 있습니다.


아래와 같이 클래스의 명명규칙에 따라 모델경로 내에 "HelloWorld.Class.php" 파일을 작성합니다.





간단한 "Hello World" 어플리케이션이 완성되었습니다.

이제 이 어플리케이션을 실행해 보겠습니다.
브라우저에 아래처럼 주소를 입력하고 실행합니다.


작성한 모델클래스를 웹브라우저에서 호출하는 방법은 http://www.mydomain.com/?/클래스명/메소드명 의 방식으로 호출합니다.

아파치 서버를 사용하는 경우 "Rewrite" 설정을 통해 ".htaccess" 파일을 생성한 후, 주소의 물음표(?) 를 없애 더욱 깔끔한 주소를 사용할 수도 있습니다만,
이는 별도의 메뉴에서 설명하고, 여기서는 일반적으로 호출 할 수 있는 방식을 설명드리겠습니다.


위에서 2개의 주소를 안내한 이유는 클래스내에 "execute" 메소드가 있는경우에는 생략이 가능하다는것을 보여주기 위해서 입니다.
"execute" 메소드는 Spac 모델클래스의 기본 실행 메소드 입니다.
즉, 브라우저 주소에 메소드명을 명시하지 않으면 기본 메소드인 "execute" 메소드가 호출되게 됩니다.


Posted by webdata