Creation/Programming

[PHP] 간단한 Pager

Readiz 2016. 3. 4. 12:20



간단한 Pager 만들기



Pager 소스는 찾아보면 많이 있지만.. 간단하게 Prev, Next Page만 구현되고 현재 페이지 나오는 Pager를 직접 만들어보기로 해서 작업해보았습니다. COUNT Query를 이용하여 작업하면 간단합니다.


1. 페이지 세팅


	
	if ($_REQUEST['page']) {
		$page = $_REQUEST['page'];
	} else $page = 1; 
	



페이지가 세팅되어 있지 않으면 1페이지로 세팅합니다. 여기서 $page를 직접 쿼리에 넣는다면 SQL injection을 당할 수 있으므로 escaping이 필요합니다. 저같은 경우에는 서버단에서 세팅으로 '를 자동으로 escape 되게 시켜놓았기 때문에 따로 설정하진 않았습니다.




2. SQL Query

	
	// Paging
	$sql = 'SELECT COUNT(*) FROM table';
	
	$result = mysql_query($sql);
	$row = mysql_fetch_assoc($result);
	if ($row['COUNT(*)']  == 0) {
		$page_total_num = 0;
	} else {
		$page_total_num = floor(($row['COUNT(*)'] - 1) / 10) + 1;
	} 
	


  전체 페이지 수를 구합니다. 전체 페이지가 고정되어 있는 경우라면 따로 필요하지 않은데, 그냥 $page_total_num 에 그 고정값을 넣으면 되기 때문입니다.



3. Pager

	
<ul class="pager">
	<?php echo $page . ' of ' . $page_total_num; ?>
	<li class="previous<?php if ($page >= $page_total_num ) echo ' disabled'; ?>"><a href="./?page=<?php echo ($page + 1); ?>&view_mode=<?php echo $vmode; ?>">← Older</a></li>
	<li class="next<?php if ($page == 1) echo ' disabled'; ?>"><a href="./?page=<?php echo ($page - 1); ?>&view_mode=<?php echo $vmode; ?>">Newer →</a></li>
</ul> 
	



  실제 Pager를 HTML로 구현한 부분입니다. 저는 기본적으로 Bootstrap을 사용하여 구성하고 있으므로, Bootstrap을 사용하고 계신 분이라면 바로 결과를 확인하실 수 있습니다.



4. 실행결과




  위 사진처럼 매우 심플한 결과를 확인하실 수 있습니다.