// 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"; } }