| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
 
 |  
<?php
class pagination{
	public function __construct()	{
	}
	public function calculate_pages($total_rows, $rows_per_page, $page_num)	{
		$arr = array();
		// calculate last page
		$last_page =ceil($total_rows / $rows_per_page);
		// make sure we are within limits
		$page_num = (int) $page_num;
		if ($page_num < 1)		{
		   $page_num = 1;
		} 
		elseif ($page_num > $last_page)		{
		   $page_num = $last_page;
		}
		$upto =($page_num - 1)*$rows_per_page;
		$arr['limit'] ='LIMIT '.$upto.',' .$rows_per_page;
		$arr['current'] =$page_num;
		if ($page_num === 1){
			$arr['previous'] = $page_num;
		}
		else{
			$arr['previous'] = $page_num - 1;
		}
		if ($page_num === $last_page){
			$arr['next'] = $last_page;
		}
		else{
			$arr['next'] = $page_num + 1;
		}
		$arr['last'] = $last_page;
		$arr['info'] ='Page ('.$page_num.' of '.$last_page.')';
		$arr['pages'] =$this->get_surrounding_pages($page_num, $last_page, $arr['next']);
		return $arr;
	}
	function get_surrounding_pages($page_num, $last_page, $next){
		$arr = array();
		$show = 3; // how many boxes
		// at first
		if ($page_num === 1)	{
			// case of 1 page only
			if ($next === $page_num){
				return array(1);
			}
			for ($i = 0; $i < $show; $i++)	{
				if ($i === $last_page){
					break;
				}
				array_push($arr, $i + 1);
			}
			return $arr;
		}
		// at last
		if ($page_num === $last_page)	{
			$start = $last_page - $show;
			if ($start < 1){
				$start = 0;
			}
			for ($i = $start; $i < $last_page; $i++){
				array_push($arr, $i + 1);
			}
			return $arr;
		}
		// at middle
		$start = $page_num - $show;
		if ($start < 1){
			$start = 0;
		}
		for ($i = $start; $i < $page_num; $i++)	{
			array_push($arr, $i + 1);
		}
		for ($i = ($page_num + 1); $i < ($page_num + $show); $i++)	{
			if ($i === ($last_page + 1)){
				break;
			}
			array_push($arr, $i);
		}
		return $arr;
	}
}
$g_page=(isset($_GET['p']))? $_GET['p'] : 1;
$inst=new pagination();
$arr = $inst->calculate_pages(170, 5, $g_page);
 
echo '<a href="pagination.php?p=1"><< First</a> ';
foreach ($arr['pages'] as $k=>$v){
	IF ((int)$arr['current']=== $v){
		echo '<b>'.$v.'</b> |';
 
	}
	else{
		//echo 'non';
		echo '<a href="pagination.php?p='.$v.'">'.$v.'</a> |';
	}
}
echo '<a href="pagination.php?p='.$arr['last'].'">Last >></a>';
?> | 
Partager