Spac 에는 기본적으로 페이징 기능이 플러그인으로 내장되어 있습니다.
여기서 페이징이란 게시판처럼 많은 양의 데이터를 한페이지에 모두 한번에 표현할 수 없기때문에 일정량씩 페이지를 분할하여 화면에 출력해주는 것을 뜻합니다.
일반적으로 사용하는 다른 페이징과 크게 다르지 않으나, Spac 의 GET변수 전달방식에 맞추어 쉽게 사용할 수 있도록 제작되어졌습니다.
Spac 페이징을 사용하기 위해선 Paging 클래스 파일을 삽입하거나, getControllerInstance 메소드를 이용하여 Paging 클래스를 Spac 액션클래스 내부로 가져와 사용합니다.
이해를 돕기 위해 실제 게시판 소스의 일부를 발췌했습니다.
아래는 게시판 글 리스트를 출력하는 "예" 입니다. 파란색으로 표현된 부분이 페이징을 위한 코드이므로 이부분을 확인하시면 됩니다.
* Spac/model/BBS.Class.php
* Spac/view/bbs_list.html
* BBS 클래스의 $this->Paging->getPaging(); 을 호출하게되면 "$this->Paging->pageString" 변수에 출력할 페이지 이동 링크가 저장되므로 위의 뷰에서처럼 그대로 출력해주면 됩니다.
여기서 페이징이란 게시판처럼 많은 양의 데이터를 한페이지에 모두 한번에 표현할 수 없기때문에 일정량씩 페이지를 분할하여 화면에 출력해주는 것을 뜻합니다.
일반적으로 사용하는 다른 페이징과 크게 다르지 않으나, 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() {
//특정게시물 보기 코드..........
}
}
?>
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>
<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" 변수에 출력할 페이지 이동 링크가 저장되므로 위의 뷰에서처럼 그대로 출력해주면 됩니다.