개발이야기/PHP

[PHP] 간단히 페이징 구현하기, 리스트 페이징 (bootstrap 페이징 css)

후린개발자 2022. 10. 14.
반응형

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>	
<?}?>

반응형

댓글

💲 추천 글