Location: PHPKode > scripts > Paginacao Class > paginacao-class/paginacao.class.php
<?
	/**
	 * Classe para criaçao de Paginação para ADODB
	 * @author Otavio Theiss - hide@address.com
	 * @copyright 02 de Novembro de 2007
	 * @package Class.Paginacao
	 * @version 1.0 
	 */
	class Paginacao{
		
		/**
		 * Verifica o numero da pagina passado pela URL se for vazio seta como 1
		 *
		 * @param mixed $chave
		 * @param int $valor
		 * @param QUERY_STRING $url
		 * @return strint
		 */
		function setParametroUrl($chave, $valor, $url = "") {
		
			if (empty($url))
				$url = $_SERVER['QUERY_STRING'];
			
			$a1 = split("&", $url);
	
			$i = 0;
			while (isset($a1[$i])) {
				$a2 = split("=", $a1[$i]);
				
				if ($a2[0] == $chave) {
					$a1[$i] = $chave."=".$valor;
					break;
				}
				
				$i++;
			}
			
			if (!isset($a1[$i])) {
				if (empty($a1[0]))
					$a1[0] = $chave."=".$valor;
				else
					$a1[$i] = $chave."=".$valor;
			}
			
			return implode("&", $a1);

		}
		
		$this->get
		
		/**
		 * Gera os links para a paginação
		 *
		 * @param recordset $rs
		 * @param int $tamanho
		 * @param int $pageNum
		 * @param mixed $cor1
		 * @param mixed $cor2
		 * @return HTML
		 */
		function getPaginacao(&$rs, $tamanho, $pageNum ,$cor1="#669900", $cor2="#ffffff"){
		
			$totalPages = $rs->_lastPageNo;
			$totalRows  = $rs->_maxRecordCount;
			$firstPage = 1; 
			$lastPage  = max(0, $totalPages); 
			$prevPage  = max($firstPage, $pageNum - 1);
			$nextPage  = min($lastPage, $pageNum + 1);
						
			$x = $pageNum - $tamanho;
			if ($x < $firstPage) {
				$x = abs($x) + $firstPage;
			} else {
				$x = 0;
			}
			$y = $pageNum + $tamanho;
			if ($y > $lastPage) {
				$y = $y - $lastPage;
			} else {
				$y = 0;
			}
			if ($x > 0) {
				$primeira = $firstPage;
				$ultima   = $tamanho + $x + $pageNum;
			} else 
			if ($y > 0) {
				$ultima   = $lastPage;
				$primeira = $pageNum - $y - $tamanho;
			} else {
				$primeira = $pageNum - $tamanho;
				$ultima   = $pageNum + $tamanho;
			}
			$i = $primeira;
			while ($i <= $ultima) {
				if ($i >= $firstPage && $i <= $lastPage) 
					$paginas[] = $i;
				$i++;
			}
			?>
			
			<table border="0" style="font-family:Arial, Helvetica, sans-serif; font-size:11px; font-weight:bold;" bgcolor="<?= $cor1; ?>" cellspacing="1" cellpadding="5">
				<tr>
	                <td bgcolor="#FFFFFF"><a href="?<?= $this->setParametroUrl("PAGINA", $firstPage,""); ?>">Primeira</a></td>
					<?
					foreach ($paginas as $chave => $valor){
					?>
						<td width="25" align="center"  <?= ($valor == $pageNum) ? "bgcolor='".$cor1."'" : "bgcolor='".$cor2."'"; ?>><a href="?<?= $this->setParametroUrl("PAGINA", $valor,""); ?>" <?= ($valor == $pageNum) ? "style='color:".$cor2."; backgroud-color:".$cor1.";'" : "style='color:".$cor1."; display:block; backgroud-color:".$cor2.";'"; ?> ><?= $valor; ?></a></td>
					<?					
					}
					?>
	           		 <td bgcolor="#FFFFFF"><a href="?<?= $this->setParametroUrl("PAGINA", $lastPage,""); ?>">Última</a></td>
				</tr>
			</table>

		<?		
		}
		
	}
?>
Return current item: Paginacao Class