페이징 처리함수

많고 많은 페이징 처리함수입니다.
다시 게시판 만드면서 다시 만들어 봤습니다.
그전에는 include로 파일로 처리했는데
생각해보니깐 함수로 처리하는 편이 좋을것 같아서 만들어 봤습니다.

#사용법
//$cfg['page']=10; //현제 페이지 , 지정을 안하면 $_REQUEST['page']를 사용합니다
$cfg['page_max']=27; //총 페이지수
$cfg['page_step']=10; //나눌 페이지수
$cfg['url']='?'; //기본 URL, page부분이 표시 안되는
//URL에는 자동을 &page=N 처럼 붙어서 처리됩니다.
//xHTML기준으로 만들어졌기 때문에 &는 & 로 처리합니다.
$cfg['template']='[%]'; //숫자형 출력형식 %문자를 수자로 대치합니다.
$cfg['template2']='<b>[%]</b>'; //해당 페이지 일때
$cfg['icon']['first']=$mv4_bi['skin_url'].'/img/icon.toleft.gif'; //맨 처음 아이콘
$cfg['icon']['before']=$mv4_bi['skin_url'].'/img/icon.toleft.gif'; //그전 아이콘
$cfg['icon']['next']=$mv4_bi['skin_url'].'/img/icon.toright.gif'; //다음 아이콘
$cfg['icon']['last']=$mv4_bi['skin_url'].'/img/icon.toright.gif'; //마지막 아이콘
//아이콘을 지정안하면 << , < , > , >> 가 대신 사용됩니다.

print implode(' ' , mv4_paging($cfg));
or
mv4_paging_print($cfg);

#함수 설명
mv4_paging();
페이징 처리된 내용을 배열로 반환합니다.
앞의 2개는, 맨처음,그전
뒤의 2개는, 다음,마지막
입니다.
그 중간은 숫자로 된 부분입니다.

mv4_paging_print($cfg);
xHTML은 <img>으 align에 absmiddle를 사용할 수 없습니다.
그래서 middle로 할 경우 글자와 위치가 이상하기 때문에
그것을 방지하기 위해서 table로 출력하도록 하는 함수입니다.
테이블은 border=0이며 class는 page로 되어있습니다.
CSS로 간단하게 조작하실 수 있습니다.

#예제
..없습니다.
이건 따로 사용하는 함수가 아니라서 아직 인터넷 상에 적용된 페이지를 올리지 않았습니다.

#사용제약
언제나의 그것.

#p.s.
함수 이름이나 기본값 등등은 바꿔서 사용하세요.


//===============
// 페이징 처리
//===============

function mv4_paging_print($cfg=null){
 $parr = mv4_paging($cfg);
 print('<table class="page" border="0" cellspacing="0" cellpadding="1"><tr>');
 for($i=0,$m=count($parr);$i<$m;$i++){
  print("<td valign=middle>{$parr[$i]}</td>");
 }
 print('</tr></table>');
}
function mv4_paging($cfg=null){
 $arr = array();
 if(!$cfg){
  //$cfg['page']='';
  $cfg['page_max']=0;
  $cfg['page_step']=10;
  $cfg['url']='';
  $cfg['template']=' [%] ';
  $cfg['template2']=' <b>[%]</b> ';
  $cfg['icon']['first']='';
  $cfg['icon']['before']=''; 
  $cfg['icon']['next']='';
  $cfg['icon']['last']='';
 }
 if(!$cfg['page_max']){
  $arr[]='NO DATA';
  return $arr;
 }
 if(!$cfg['page_step']){
  $arr[]='SETTING ERROR';
  return $arr;
 }
 $page = isset($cfg['page'])?$cfg['page']:$_REQUEST['page'];
 if(!$page){$page=1;}
 //URL처리
 $turl = (!$cfg['url']||$cfg['url']=='?')?'?':$cfg['url'].'&amp;';
 //=== page 처리
 
 if($page<1){$page=1;}
 else if($page>$cfg['page_max']){$page=$cfg['page_max'];}
 $sti = floor(($page-1)/$cfg['page_step'])*$cfg['page_step']+1;
 if($sti<1){$sti=1;}
 $edi = $sti+$cfg['page_step']-1;
 if($edi>$cfg['page_max']){$edi=$cfg['page_max'];}
 //xHTML은 absmiddle를 사용할 수 없다.
 $icon['first']=$cfg['icon']['first']?"<img border=0 align='middle' src='{$cfg['icon']['first']}' />":str_replace('%','&lt;&lt;',$cfg['template']);
 $icon['before']=$cfg['icon']['before']?"<img border=0 align='middle'  src='{$cfg['icon']['before']}' />":str_replace('%','&lt;',$cfg['template']);
 $icon['next']=$cfg['icon']['next']?"<img border=0 align='middle'  src='{$cfg['icon']['next']}' />":str_replace('%','&gt;',$cfg['template']);
 $icon['last']=$cfg['icon']['last']?"<img border=0 align='middle'  src='{$cfg['icon']['last']}' />":str_replace('%','&gt;&gt;',$cfg['template']);

 if($page <= $cfg['page_step'] || $sti <= 1){
  $arr[] = $icon['first'];
  $arr[] = $icon['before'];
 }else{
  $url = $turl.'page=1';
  $arr[] = "<a title='처음' href='{$url}'>".$icon['first']."</a>";
  $url = $turl.'page='.($sti-1);
  $arr[] = "<a title='이전' href='{$url}'>".$icon['before']."</a>";
 }
 for($i=$sti;$i<=$edi;$i++){
  
  $url = $turl.'page='.$i;
  if($i==$page) $t1 = str_replace('%',$i,$cfg['template2']);
  else $t1 = str_replace('%',$i,$cfg['template']);
  $arr[]="<a href='{$url}'>{$t1}</a>";
 }
 if($page > ($cfg['page_max']-$cfg['page_max']%$cfg['page_step']) || $edi==$cfg['page_max']){
  $arr[] = $icon['next'];
  $arr[] = $icon['last'];
 }else{
  $url = $turl.'page='.($edi+1);
  $arr[] = "<a title='다음' href='{$url}'>".$icon['next']."</a>";
  $url = $turl.'page='.$cfg['page_max'];
  $arr[] = "<a title='마지막' href='{$url}'>".$icon['last']."</a>";
 }
 return $arr; 
}

댓글
  • No Nickname
    No Comment
  • 권한이 없습니다.
    {{m_row.m_nick}}
    -
제목 작성자 날짜
공대여자
공대여자
mins01
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자