'php페이징'에 해당되는 글 1건

  1. 2010.02.08 Paging : 페이징
Spac 매뉴얼/Paging2010. 2. 8. 22:21
Spac 에는 기본적으로 페이징 기능이 플러그인으로 내장되어 있습니다.
여기서 페이징이란 게시판처럼 많은 양의 데이터를 한페이지에 모두 한번에 표현할 수 없기때문에 일정량씩 페이지를 분할하여 화면에 출력해주는 것을 뜻합니다.

일반적으로 사용하는 다른 페이징과 크게 다르지 않으나, Spac 의 GET변수 전달방식에 맞추어 쉽게 사용할 수 있도록 제작되어졌습니다.

Spac 페이징을 사용하기 위해선 Paging 클래스 파일을 삽입하거나, getControllerInstance 메소드를 이용하여 Paging 클래스를 Spac 액션클래스 내부로 가져와 사용합니다.

이해를 돕기 위해 실제 게시판 소스의 일부를 발췌했습니다.

아래는 게시판 글 리스트를 출력하는 "예" 입니다. 파란색으로 표현된 부분이 페이징을 위한 코드이므로 이부분을 확인하시면 됩니다.

* Spac/model/BBS.Class.php
<?php
require_once("/home/myAccount/Spac/controller/Paging/Paging.Class.php");     //페이징클래스 파일 삽입
class BBS extends Controller {

    var $Paging = null;
   
    var $page_url;
    var $first = 0;
    var $pgSize = 2;
    var $blcSize = 5;
    var $page = 1;

    function BBS() {}

    function getBBSList() {
       
        $this->setListVars();
       
        $this->bbs_list_array = array();

        //paging
        $this->Paging        = new Paging;                                 //페이징 Object 생성
       
        if(!$this->page)    $this->page = 1;                               //페이지가 명시되지 않으면 항상 1페이지로 고정
        $this->page_url        = "/bbs/BBS/".$this->category;       //기본적으로 호출할 게시판리스트 URL
        $this->pgSize        = 10;                                           //한페이지에 출력할 게시물 수
        $this->blcSize        = 5;                                            //페이지하단에 한번에 표시할 페이지 링크 수
        $this->first        = $this->pgSize*($this->page-1);           //수정하지 않고 그대로 사용합니다.
       
        $query = " Select SQL_CALC_FOUND_ROWS * From bbs where category='".$this->category."' Order by reg_date DESC Limit $this->first,$this->pgSize";
        $this->Dao->executeQuery($query);
       
        while($Rows = $this->Dao->getFetchArray()) {
            $this->bbs_list_array[] = $Rows;           
        }
       
        $query = "Select FOUND_ROWS()";
        $this->Dao->executeQuery($query);
        $this->total_record = $this->Dao->getResult();                //전체 레코드수를 파악하여 변수에 넣습니다.
       
        $this->Paging->initPaging($this->total_record, $this->blcSize, $this->pgSize, $this->page, $this->page_url);
        $this->Paging->getPaging();

    function viewBBS() {
        //특정게시물 보기 코드..........
    }


}
?>


* Spac/view/bbs_list.html
<div id="body_contents" style="display:none">

<table border="0" width="100%" cellpadding="0" cellspacing="0" style="margin-bottom:5px">   
    <tr>
        <td align="left">
            총 <?= $this->total_record ?> 개의 글이 있습니다.
        </td>
        <td align="right">
            <input type="button" value="글작성하기" onClick="Write('{=category}')"></input>
        </td>
       
    </tr>
</table>


<table border="0" width="100%" cellpadding="0" cellspacing="0">
    <tr align="center">
        <td width="50" class="head_col_bg">번호</td>
        <td width="" class="head_col_bg">제목</td>
        <td width="80" class="head_col_bg">작성자</td>
        <td width="130" class="head_col_bg">작성일</td>
    </tr>
   
   
<?
foreach($this->bbs_list_array as $this->Rows) {

    $this->url = "/bbs/BBS/viewBBS/".$this->category."/".$this->Rows['bbs_no']."/".$this->page;

    $this->Rows["reg_date"]        = substr($this->Rows["reg_date"],0,10);

?>   

    <tr align="center" onMouseOver="this.style.backgroundColor='#FFFFFF'" onMouseOut="this.style.backgroundColor=''">
        <td class="body_col_bg">{=Rows["bbs_no"]}</td>
        <td class="body_col_bg" width="" align="left"><a href="{=url}">{=Rows['subjects']}</a></td>
        <td class="body_col_bg">{=Rows["user_name"]}</td>
        <td class="body_col_bg">{=Rows["reg_date"]}</td>
    </tr>


<?
}
?>   
   
</table>   
   
   
<table border="0" width="100%" cellpadding="5" cellspacing="0">   
    <tr>
        <td align="center">
             <?=$this->Paging->pageString?>
        </td>
    </tr>
</table>

</div>


*  BBS 클래스의  $this->Paging->getPaging(); 을 호출하게되면 "$this->Paging->pageString" 변수에 출력할 페이지 이동 링크가 저장되므로 위의 뷰에서처럼 그대로 출력해주면 됩니다.

Posted by webdata