Created
February 5, 2009 10:13
-
-
Save stvkoch/58637 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* PAGINADOR DE QUALQUER TIPO DE DADOS | |
* Description: Retorna um html de paginação | |
* | |
* Ex: //..codigo que lista sua consulta | |
$records = $mymodel->find("SELECT * FROM mytable where name LIKE '%Pedro%' LIMIT " . ($resultsPerPag * $_REQUEST['p'] . " , $resultsPerPag"); | |
showtablewithrecords( $records ); | |
$totalsearch = $mymodel->count("SELECT * FROM mytable where name LIKE '%Pedro%'" | |
* echo paginator($totalsearch, $resultsPerPage, $urlmysearch, 7); | |
* | |
* @param $aCount | |
* - quantidade total de dados que a consulta retorna = COUNT(*) | |
* @param $resultsPerPage | |
* - Quantos registos por pagina esta definido em sua consulta | |
* @param $url | |
* - url que o paginador deve redirecionar para que voce possa tratar da pagina seguinte | |
* @param $elements | |
* - quantidade de elementos que o paginador deve tratar | |
* @return $html gerado com as paginas | |
*/ | |
function paginator($aCount, $resultsPerPage, $url, $elements = 7){ | |
$page = isset($_REQUEST['p']) ? $_REQUEST['p'] : 1; | |
$totalPages = round(($aCount / $resultsPerPage ) + 0.499, 0); | |
if($totalPages <=1) | |
return ''; | |
$html = ($page > 1) ? link_to('Anterior', $url.'&p='.($page-1), array('class'=>'prev') ) : '<span class="prev">'.'Anterior'.'</span>'; | |
$ii = $page - round(($elements-0.49)/2); | |
if($ii<1){ | |
$ii=1; | |
$runpages = ($totalPages>$elements)? $elements : $totalPages; | |
}else if( ($page + round(($elements-0.49)/2)) > $totalPages){ | |
$ii = $totalPages - ($elements - 1); | |
$runpages = $totalPages; | |
}else{ | |
$runpages = $page + round(($elements-0.49)/2); | |
$ii = $page - round(($elements-0.49)/2); | |
} | |
if($totalPages<=$elements){ $runpages = $totalPages; $ii=1; } | |
for($i=$ii;$i<=$runpages; $i++){ | |
$html .= ($page==$i) ? "<span class=\"current\">$i</span>" : link_to($i, $url.'&p='.$i ); | |
} | |
if($page < $totalPages){ | |
$p = $page+1; | |
$html .= link_to('próximo', $url.'&p='.$p, array('class'=>'next') ); | |
}else{ | |
$html .= '<span class="next">'.'próximo'.'</span>'; | |
} | |
return $html; | |
} | |
function link_to($name, $url=null, $html=array()){ | |
$link = '<a href="'.htmlentities(url($url)).'"'; | |
foreach($html as $k=>$v) | |
$link .= " $k=\"$v\""; | |
$link .= '>'.$name.'</a>'; | |
return $link; | |
} | |
function url($options){ | |
if(!is_array($options)){ | |
if(strcmp($options, 'back')==0) | |
if(isset($_ENV["HTTP_REFERER"])) | |
return $_ENV["HTTP_REFERER"]; | |
else | |
return 'java script:history.back()'; | |
else | |
return $options; | |
} | |
return $url; | |
} | |
?> | |
<?php echo paginator( 120, 10, 'http://localhost/search.php?word=Pedro');?> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment