저는 대부분의 소스들은 단순히 함수로만 제작하여 쓰고 있지만,
페이징기법처럼 여러가지 함수를 동시에 사용해야 될 경우에는 아래처럼
클래스를 도입하고 있습니다.
이 클래스의 장점이라고 한다면, 정렬 기능이 잘 되어 있다는 것입니다.
흔히들 타이틀을 눌렀을때, 오름, 내림차순으로 정렬 되는 기능을 구현하는 내용은
CSS환경에서는 대체로 구현이 잘되어 있지만, 웹에서는 많이 찾아 보기 힘든
내용인것 같습니다.
아래는 사용예제입니다.
<?
/////////////////////////== 데이타처리 페이지이며, 선언부에 올려줍니다.
// 페이지 초기값 생성
$nowpg = ($nowpg) ? $nowpg : 1;
// 인스턴트 생성
$sql = new ListManager();
// 옵션
// 한화면에 보여줄 줄수 및 한 화면에 보여줄 페이지 및 이전, 다음, 처음, 끝 태그 셋팅
$sql->page_setting(15, 10, "<img src='./img/btn_page_first.gif' border='0' align='absmiddle'>", " 이전", "다음 ", "<img src='./img/btn_page_last.gif' border='0' align='absmiddle'>");
// 옵션 : 출력시 바로 뿌려줘도 됨
// 이전, 다음, 처음, 끝, 페이지 정보를 가지고 있음 (개인으로 쓸 경우 아래에서 메소드를 직접 호출 예) $sql->pg_next())
$page = $sql->page();
// 옵션 : 출력시 바로 뿌려줘도 됨
// 기본조건으로 찾은 검색 라인수
$total = intval($sql->total());
// 옵션 : 출력시 바로 뿌려줘도 됨
// 검색조건으로 찾은 검색 라인수
$find = intval($sql->find());
// 옵션
// 만일 현재 페이지가 1보다 크게 가 있는데 데이타가 없다면 1페이지로 돌려 줘야 겠죠?
if($nowpg != 1 && count($rows)==0) {
$nowpg = $sql->page_all;
tomove(url_clear("$_SERVER[REQUEST_URI]&nowpg=$nowpg"));
}
<? for($i=0, $count=count($rows); $i<$count; $i++) { ?>
<tr>
<!-- _facing 필드를 주게 되면, 정해진 규칙에 의해 인덱스 순서로 정렬해 준다. -->
<td><?=$rows[$i][_facing]?></td>
<td><?=$rows[$i][BF_name]?></td>
<td><?=$rows[$i][BF_insert_time]?></td>
</tr>
<tr align="center">
<td colspan="2"><?=$page?></td>
</tr>
<?
/************************************************************************************
아래부터는 실제로 사용할수 있게 하는 소스입니다
*************************************************************************************/
class ListManager {
var $ords='', $url='', $urlqry='', $href_first='', $href_next='', $query_str='';
var $nowpg=1, $line_num=10, $page_num=10, $find='', $total=0, $page_first=0, $page_last=0, $page_all;
var $button_first='[처음]', $button_pre='[이전]', $button_next='[다음]', $button_last='[끝]';
var $onbg='#FF0000', $offbg='#6699CC', $str_asc='△', $str_desc='▽';
function ListDatabase($tbname, $nowpg, $flds="*", $whrs="", $fndqry="", $ords="", $grps="") {
global $_SERVER, $_GET;