반응형
php에서 간단히 페이징을 구현할 수 있는 소스 코드입니다.
페이징 디자인을 bootstrap 템플릿을 사용하였습니다.
페이징은 전체 리스트를 노출하는 것이 아니라 설정한 개수만큼 화면에 노출하는 것입니다.
php 변수
$pageNum : 현재 페이지 (값이 없을 때는 1 페이지)
$list, $b_pageNum_list : 화면에 노출할 리스트는 10개로 정의하였습니다.
$block : 전체 블록의 개수
$b_start_page : 현재 블록의 시작 페이지
$b_end_page : 현재 블록의 마지막 페이지
$total_count : 리스트 총 갯수
$total_page : 총 페이지 수
아래 예제의 리스트 총개수는 22개이며, 10개씩 노출하였습니다.
php 변수의 설정값을 수정하셔서 간단히 테스트하실 수 있습니다.
소스코드
<table>
<thead>
<tr>
<th> 번호 </th>
<th> 이메일 </th>
<th> 연락처 </th>
<th> 이름 </th>
</tr>
</thead>
<tbody>
<?
$pageNum = ($_GET['page']) ? $_GET['page'] : 1;
$list = ($_GET['list']) ? $_GET['list'] : 10;
$b_pageNum_list = 10;
$block = ceil($pageNum/$b_pageNum_list);
$b_start_page = ( ($block - 1) * $b_pageNum_list ) + 1;
$b_end_page = $b_start_page + $b_pageNum_list - 1;
$query = " select idx, email, phone, name from tb_user ";
$totCnt = $ora->get_num_rows($query);
$total_count = $totCnt;
$total_page = ceil( $total_count / $list );
if ($b_end_page > $total_page) $b_end_page = $total_page;
$limit = ($pageNum - 1) * $list;
$query .= " limit $limit, $list ";
$ora->get_result($query);
$listCnt = 0;
while ($row = mysql_fetch_array ($ora->result)) {
$listCnt += 1;
$no = (($total_count - $listCnt) + 1) - (($pageNum-1) * $b_pageNum_list);
$idx = $row["idx"];
$email = $row["email"];
$phone = $row["phone"];
$name = $row["name"];
?>
<tr>
<td><?=$no?></td>
<td><?=$email?></td>
<td><?=$phone?></td>
<td><?=$name?></td>
</tr>
<?
}
?>
</tbody>
</table>
<?if($total_count > 0){?>
<div class="fixed-table-pagination">
<div style="text-align:center;">
<ul class="pagination">
<?
if($pageNum <= 1){
echo "<li class='page-first'><a href='#'>«</a></li>";
}else{
echo "<li class='page-first'><a href='page.html?page=&list$list'>«</a></li>";
}
if($block <=1){
echo "";
}else{
echo "<li class='page-pre'><a href='page.html?page=$b_start_page&list$list'>«</a></li>";
}
for($j = $b_start_page; $j <=$b_end_page; $j++){
if($pageNum == $j){
echo "<li class='page-number active'><a href=''>$j</a></li>";
}else{
echo "<li class='page-number'><a href='page.html?page=$j&list=$list'>$j</a></li>";
}
}
$total_block = ceil($total_page/$b_pageNum_list);
if($block >= $total_block){
}else{
echo "<li class='page-next'><a href='page.html?page=$b_end_page&list=$list'>›</a></li>";
}
if($pageNum >= $total_page){
echo "<li class='page-last'><a href=''>»</a></li>";
}else{
echo "<li class='page-last'><a href='page.html?page=$total_page&list=$list'>»</a></li>";
}
echo "</ul>";
?>
</div>
</div>
<?}?>
반응형
'개발이야기 > PHP' 카테고리의 다른 글
[PHP] in_array 사용법, 예제 (array unset, array_values) (0) | 2022.11.15 |
---|---|
[PHP] 문자열 비교 strcmp 사용법, 예제 (로그인) (0) | 2022.10.25 |
[PHP] CAPTCHA(캡차) 이미지 만들기, 캡차(CAPTCHA) 새로고침 (0) | 2022.10.14 |
[PHP] https 체크하기, http->https 리다이렉트 시키키 (0) | 2022.10.07 |
[PHP] 디렉토리 파일 삭제, 특정 파일 삭제, 특정 파일 제외 삭제 (unlink) (0) | 2022.09.30 |
댓글