Este script utiliza CSS e JavaScript para paginar resultados de uma consulta a banco de dados (no caso, MySQL) de forma que seja preciso carregar uma única vez a página e não uma vez a cada página de resultados.
Basicamente o script funciona assim:
– É executada a consulta ao banco de dados;
– É montado um DIV para cada página de resultado, sendo que o primeiro permanece visível e os demais, ocultos;
– Ao clicar no número de página, o DIV visível atualmente é ocultado e o correspondente a página desejada é exibido.
Adicionalmente coloquei um formulário para que seja pesquisada uma string MySQL diretamente.
Este exemplo utiliza o banco information_schema do phpMyAdmin (a título de exemplo). Código totalmente comentado.
Você precisa informar a string de pesquisa (pode configurar uma padrão) e o número de linhas por página (opcional, pois o padrão é 25).
function ir(p){ var np=parseInt(document.np.np.value); var obj; for(var i=1;i'; //monta o javascript que irá exibir/ocultar a paginação for($i=0;$i<$nc;$i++){ //monta um array com os campos da consulta $campos[$i]=mysql_field_name($q,$i); } $p=1;//seta a primeira página $l=1;//seta a primeira linha $rows=1;//seta o contador geral de linhas while($r=mysql_fetch_array($q)){ //pega cada linha do resultado da consulta if($p==1){$visibility="visible";$display="inline";}else{$visibility="hidden";$display="none";}; //se é a primeira página, exibe o div, senão oculta o div if($l==1){//se é a primeira linha da página, coloca o título primeiro $div.=' ';//fecha a tabela $links.='['.$p.']';//monta o link para as páginas $p++;//próxima página $l=1;//reinicia a contagem de linha }else{//senão é o máximo de linhas da página $l++;//aumenta a linha }//fecha if do número de linhas $rows++;//aumenta o contador geral de linhas }//fim while que pega cada linha do resultado $div.='
'; while(list($k,$c)=each($campos)){//monta cada coluna do título $div.=' ';//fecha a linha do título }//fim do if da primeira linha (título) $div.=''.$c.' '; }// fim while do título reset($campos);//resseta os campos $div.='';//abre a linha de dados while(list($k,$c)=each($campos)){//monta as colunas de resultado $v=$r[$c]; $div.=' ';//fecha linha do resultado if($l==$np || $rows==$nr){//se a linha é igual ao máximo de linhas por página ou se chegou à última linha do resultado $div.=''.$v.' '; }//fecha while que monta os dados reset($campos);//resseta os campos $div.=''.$links.''; echo $div;//escreve as páginas } ?>Paginação com troca rápida