// função que cria uma paginação de resultados com LIMIT no SQL
// sql = sql sem limit
// per_page = quantidade de registros por página
// formato do SQL com o total: 1 - count, 2 - nunrows
// formato do Limit: LIMIT $start, $per_page
function makelist($sql,$type = 1, $per_page = 10) {
global $start, $end, $screen, $pages, $total_records, $db;
$end = $per_page;
$res = $db->Execute($sql) or die($sql."
".$db->ErrorMsg());
if ($type == 2) $total_records = $res->RowCount();
else {
$reg = $res->FetchRow();
$total_records = $reg[0];
}
$pages = ceil($total_records / $per_page);
unset($res);
if (!isset($screen)) $screen = 0;
$start = $screen * $per_page;
}
// função para imprimir os controles de navegação da paginação de resultados
// vars = variáveis passadas via método GET
// qtd_list = quantidade de itens de navegação por página
// qtd_page = quantidade de páginas (navegação rápida anterior e próximo)
function print_list($vars,$qtd_list = 10, $qtd_page = 10) {
global $start, $end, $screen, $pages, $total_records, $db, $PHP_SELF;
// PRIMEIRO e ANTERIOR
if ($screen > 0) {
$url = $PHP_SELF."?screen=0".$vars;
echo "Primeiro \n";
if ($screen > 1) {
$url = $PHP_SELF."?screen=" . ($screen-1) . "&bTipo=$bTipo&bOrdem=$bOrdem&bChave=$bChave&bFluxo=$bFluxo";
echo "Anterior\n";
}
}
// -10 REGISTROS
if ($screen >= $qtd_page) {
$url = $PHP_SELF."?screen=" . ($screen-$qtd_page) . $vars;
echo " -$qtd_page \n";
}
// PAGINAÇÃO
for ($i = 1; $i <= $pages; $i++) {
if ($i >= $screen-($qtd_list-1) and $i <= $screen+($qtd_list+1) ) {
$url = $PHP_SELF . "?screen=" . ($i-1) . $vars;
if ($screen+1 == $i) $mostra_i = "[ $i ]";
else $mostra_i = $i;
echo " $mostra_i ";
}
}
// +10 REGISTROS
if ($screen+$qtd_page < $pages) {
$url = $PHP_SELF."?screen=" . ($screen+$qtd_page) . $vars;
echo " +$qtd_page \n";
}
// PRÓXIMO e ÚLTIMO
if ($screen+1 < $pages) {
if ($screen+2 < $pages) {
$url = $PHP_SELF . "?screen=" . ($screen + 1) . $vars;
echo "Próximo\n";
}
$url = $PHP_SELF . "?screen=".($pages-1).$vars;
echo " Último\n";
}
}