페이징 처리함수

많고 많은 페이징 처리함수입니다.
다시 게시판 만드면서 다시 만들어 봤습니다.
그전에는 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}}
    -
목록형 📷 갤러리형
제목
[기본형] HTML (with 부트스트랩5.3 , jquery 3.7, vue.js)
유용한 리눅스(LINUX) 명령어
[공지] 기술 게시판
4.28
4.29
4.30
5.1
5.2
5.3
5.4
5.5
5.6
5.7
5.8
5.9
5.11
5.12
5.13
5.14
5.15
5.16
5.17
5.18
5.19
5.20
5.21
5.22
5.23
5.24
5.25
5.26
5.27
5.28
5.29
5.30
5.31
6.1