Ir para conteúdo
wolfphw

Script para paginação bem simples

Recommended Posts

Cara, otimo script, simples e eficiente.O unico problema é que se as registes_globals estiverem desligadas ele da alguns problemas, mas nada que não seja facilmente resolvido.Valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pior.. eu nem tinha me ligado nisso.. mas eh coisa simples de resolver mesmo... :D/>vlw pela lembrança.. vou fazer um outro arrumando isso.. e quando terminar de arrumar eu posto aki...

Editado por Mário Monteiro
  • +1 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma coisa que eu esqueci tb, quando você tiver um campo de busca por alguma coisa na página você vai ter que fazer o form que manda a busca mandar o valor via GET, e acrescentar o nome do campo e o valor na linha do link da página de paginação....

 

aki vai o exemplo de como ficaria se o nome do campo for busca

 

paginacao.php

<style type="text/css"><!--.pgoff {font-family: Verdana, Arial, Helvetica; font-size: 11px; color: #FF0000; text-decoration: none}a.pg {font-family: Verdana, Arial, Helvetica; font-size: 11px; color: #003366; text-decoration: none}a:hover.pg {font-family: Verdana, Arial, Helvetica; font-size: 11px; color: #0066cc; text-decoration:underline}--></style><?php	$quant_pg = ceil($quantreg/$numreg);	$quant_pg++;		// Verifica se esta na primeira página, se nao estiver ele libera o link para anterior	if ( $pg > 0) { 		echo "<a href=".$PHP_SELF."?pg=".($pg-1) ."&busca=$busca class=pg><b>« anterior</b></a>";	} else { 		echo "<font color=#CCCCCC>« anterior</font>";	}		// Faz aparecer os numeros das página entre o ANTERIOR e PROXIMO	for($i_pg=1;$i_pg<$quant_pg;$i_pg++) { 		// Verifica se a página que o navegante esta e retira o link do número para identificar visualmente		if ($pg == ($i_pg-1)) { 			echo " <span class=pgoff>[$i_pg]</span> ";		} else {			$i_pg2 = $i_pg-1;			echo " <a href=".$PHP_SELF."?pg=$i_pg2&busca=$busca class=pg><b>$i_pg</b></a> ";		}	}		// Verifica se esta na ultima página, se nao estiver ele libera o link para próxima	if (($pg+2) < $quant_pg) { 		echo "<a href=".$PHP_SELF."?pg=".($pg+1)."&busca=$busca class=pg><b>próximo »</b></a>";	} else { 		echo "<font color=#CCCCCC>próximo »</font>";	}?>
Se notar eu acrescentei isso &busca=$busca nas seguintes linhas

echo "<a href=".$PHP_SELF."?pg=".($pg-1) ."&busca=$busca class=pg><b>« anterior</b></a>";

echo " <a href=".$PHP_SELF."?pg=$i_pg2&busca=$busca class=pg><b>$i_pg</b></a> ";

echo "<a href=".$PHP_SELF."?pg=".($pg+1)."&busca=$busca class=pg><b>próximo »</b></a>";

  • +1 4

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara, peguei seu codigo, fiz umas alterações... e fikou MASSA =)logico que as alterações foram mais adaptações que outra coisa... hehehe...brigadão brow por disponibilizar ele pra gente!!! =)

  • +1 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem como eu vi tem muita gente que pega uns scripts de paginação e acabam penando numas partes...

 

Entaum eu fiz um script bem simplificado para qualquer um poder utilizar sem problemas...

 

Ele é dividido em 2 arquivos... um que é o arquivo onde você vai fazer a sua consulta SQL e outro é o que monta a paginação....

 

 

pagina.php

<?php//######### INICIO Paginação	$numreg = 40; // Quantos registros por página vai ser mostrado	if (!isset($pg)) {		$pg = 0;	}	$inicial = $pg * $numreg;	//######### FIM dados Paginação		// Faz o Select pegando o registro inicial até a quantidade de registros para página	$sql = mysql_query("SELECT * FROM tabela LIMIT $inicial, $numreg");	// Serve para contar quantos registros você tem na seua tabela para fazer a paginação	$sql_conta = mysql_query("SELECT * FROM tabela");		$quantreg = mysql_num_rows($sql_conta); // Quantidade de registros pra paginação		include("paginacao.php"); // Chama o arquivo que monta a paginação. ex: << anterior 1 2 3 4 5 próximo >>		echo "<br><br>"; // Vai servir só para dar uma linha de espaço entre a paginação e o conteúdo		while ($aux = mysql_fetch_array($sql)) {		/* Ai o resto é com voces em montar como deve parecer o conteúdo */	}?>

 

paginacao.php

<style type="text/css"><!--.pgoff {font-family: Verdana, Arial, Helvetica; font-size: 11px; color: #FF0000; text-decoration: none}a.pg {font-family: Verdana, Arial, Helvetica; font-size: 11px; color: #003366; text-decoration: none}a:hover.pg {font-family: Verdana, Arial, Helvetica; font-size: 11px; color: #0066cc; text-decoration:underline}--></style><?php	$quant_pg = ceil($quantreg/$numreg);	$quant_pg++;		// Verifica se esta na primeira página, se nao estiver ele libera o link para anterior	if ( $pg > 0) { 		echo "<a href=".$PHP_SELF."?pg=".($pg-1) ."class=pg><b>« anterior</b></a>";	} else { 		echo "<font color=#CCCCCC>« anterior</font>";	}		// Faz aparecer os numeros das página entre o ANTERIOR e PROXIMO	for($i_pg=1;$i_pg<$quant_pg;$i_pg++) { 		// Verifica se a página que o navegante esta e retira o link do número para identificar visualmente		if ($pg == ($i_pg-1)) { 			echo " <span class=pgoff>[$i_pg]</span> ";		} else {			$i_pg2 = $i_pg-1;			echo " <a href=".$PHP_SELF."?pg=$i_pg2 class=pg><b>$i_pg</b></a> ";		}	}		// Verifica se esta na ultima página, se nao estiver ele libera o link para próxima	if (($pg+2) < $quant_pg) { 		echo "<a href=".$PHP_SELF."?pg=".($pg+1)." class=pg><b>próximo »</b></a>";	} else { 		echo "<font color=#CCCCCC>próximo »</font>";	}?>

Caro Wolfphw,

tentei estou tentando usar o seu script mas, não está sequenciando os registros. Tipo: aparece o "anterior", o "próximo", os números, contabiliza o número de páginas pela quantidade de registros mas, quando passo o mouse em cima do numero "2", o rodape me mostra que é o número "1". Quer dizer, a página "1" ao invés de ser "1" é "0".

 

A outra coisa é que quando clico no "próximo", ele não avança a sequencia dos meus registros. Tipo: se a primeira página é de 1 até 5, quando clico no "próximo" ou no número "2", os registros continuam sendo os cinco primeiros. Ele não avança do 6 a 10, entendeu?

 

Pode me dizer que preciso inserir aqui?

 

while ($aux = mysql_fetch_array($sql)) {

------> /* Ai o resto é com voces em montar como deve parecer o conteúdo */

}

?>

Desculpe mas ainda tô num nível iniciante pra intermediário.

 

Espero que possa me ajudar. Estou batendo cabeça com essa paginação.

 

Boa noite.

Compartilhar este post


Link para o post
Compartilhar em outros sites

tentei estou tentando usar o seu script mas, não está sequenciando os registros. Tipo: aparece o "anterior", o "próximo", os números, contabiliza o número de páginas pela quantidade de registros mas, quando passo o mouse em cima do numero "2", o rodape me mostra que é o número "1". Quer dizer, a página "1" ao invés de ser "1" é "0".

tipo ele quando você passa o mouse nos numero e no rodapé mostra outro anterior é pq o certo a numeração começa com o numero 0, dai pro visual começar aparecendo por 1 em diante eu mando na hora do visual ele mostrar o valor da página + 1..

 

 

A outra coisa é que quando clico no "próximo", ele não avança a sequencia dos meus registros. Tipo: se a primeira página é de 1 até 5, quando clico no "próximo" ou no número "2", os registros continuam sendo os cinco primeiros. Ele não avança do 6 a 10, entendeu?

Esse minha paginação nao tem esse função de mostrar um bloco de página como você esta querendo, se tiver digamos 200 páginas ele vai mostrar todas.

 

 

while ($aux = mysql_fetch_array($sql)) {

------> /* Ai o resto é com voces em montar como deve parecer o conteúdo */

}

?>

Ai você vai fazer a amostra do seu conteúdo.. a estrutura de como ele vai aparecer dentro de tabelas, tipo esse exemplo:

Imagem Postada

Editado por Mário Monteiro

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha, eu não estou a conseguir fazer isto funcionar... Quando eu clico em próximo ele não vai para a próxima página, fica na mesma.

 

 

Veja o link: CLIQUE AQUI

Editado por ULTIMATE

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala pessoal.... firme???Eu segui o seu script, porém aqui tenho que trabalhar com SQLServer, e nele não tem o LIMIT! Como faço para paginar????Alguém pode me ajudar por favor?ABRAX!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara me da uma força aqui!Como faço para adaptar este código da seguinte maneira!Na minha tabela nao são todas as linhas que vao ser mostradas, apenas as que no campo "assunto" tem um valor x!Como entao criar a paginação par mostar apenas uma linha de cada vez e só as linhas que no campo assunto com tem o valor x?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara me da uma força aqui!Como faço para adaptar este código da seguinte maneira!Na minha tabela nao são todas as linhas que vao ser mostradas, apenas as que no campo "assunto" tem um valor x!Como entao criar a paginação par mostar apenas uma linha de cada vez e só as linhas que no campo assunto com tem o valor x?

basta você colocar o nome do campo e o valor do campo na sua consulta ao banco de dados...assim:
// Faz o Select pegando o registro inicial até a quantidade de registros para página	$sql = mysql_query("SELECT * FROM tabela WHERE coluna='valor' LIMIT $inicial, $numreg");	// Serve para contar quantos registros você tem na seua tabela para fazer a paginação	$sql_conta = mysql_query("SELECT * FROM tabela WHERE coluna='valor'");

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá pessoal! Alguem sabe uma solução para este script de paginação? Porque tipo lista tudo direitinho mais ao clicar na pagina 2 fica tudo em branco... pois eu estou ultilizando em uma pagina de pesquisa!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para resolver o problema de quem estava tendo problema em clicar em "próximo" e ele não ir para a página correspondente, mude as variáveis $pg para $_GET['pg'] em paginação.php e em página.php troque$inicial = $pg * $numregpor $inicial = $_GET['pg'] * $numreg;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigo eu usei o seu script so que estou tendo um problema na hora de mudar de pagina.

ele aparece as seguintes paginas.

ex:

ID: Data: Nome:

Excluir 1 23/04/2007 Video do Cutlas Jogando CS

Excluir 2 23/04/2007 Video do Cutlas Jogando CS1

Excluir 3 23/04/2007 Video do Cutlas Jogando CS2

Excluir 4 23/04/2007 Video do Cutlas Jogando CS3

Excluir 5 23/04/2007 Video do Cutlas Jogando CS4

 

[1] 2 3 próximo »

 

so que quando eu clico em proximo ele volta para a index do site.

 

eu gostaria de saber se tenho que criar alguma pagina chamada pg.

 

pois quando eu passo o mouse em cima do link aparece na barra isso

 

http://localhost/ult/admin/index.php?pg=1

 

eu estou usando uma função aki para visualizar os resultados na mesma pagina.

 

<?php

$pag = $_GET['pag'];

if ($pag == ""){

$pag = "menu.php";}

include ($pag);

?>

 

ai no caso o href que eu uso é assim

 

<a href="?pag=exemplo.php">

 

abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá pessoal, sou iniciante em PHP, mas trabalho a 20 anos com programação em diversas linguagens. Gostaria de agradecer pelo script de paginação, e eu dei um jeito nele já que ele apresentou alguns problemas. Agora, pelo menos aqui está 100%, com essas modificações. Se alguém verificar alguma coisa que derrepente poderia ser solucionada mais facilmente, com outro comando porfavor me digam, como já disse sou iniciante. Obrigado a todos. ----------------------------------------------------------pag_curso.php<?php// Incluindo a conexão com o banco include('sgbd/conn.php');//######### INICIO Paginação $numreg = 10; // Quantos registros por página vai ser mostrado if (!isset($pg)) { $pg = 0; } $inicial = @$_GET['pg'] * $numreg;//######### FIM dados Paginação // Faz o Select pegando o registro inicial até a quantidade de registros para página $sql = mysql_query("select * from cursos LIMIT $inicial, $numreg"); // Serve para contar quantos registros você tem na seua tabela para fazer a paginação $sql_conta = mysql_query("SELECT * FROM cursos"); $quantreg = mysql_num_rows($sql_conta); // Quantidade de registros pra paginação include("paginar_curso.php"); // Chama o arquivo que monta a paginação. ex: << anterior 1 2 3 4 5 próximo >> echo "<br><br>"; // Vai servir só para dar uma linha de espaço entre a paginação e o conteúdo while ($aux = mysql_fetch_array($sql)) { echo "<a href=" , $aux['endereco'] , ">" , $aux['descricao'], "</a>", "<br/>"; }?>----------------------------------------------------------paginar_curso.php<style type="text/css"><!--.pgoff {font-family: Verdana, Arial, Helvetica; font-size: 11px; color: #FF0000; text-decoration: none}a.pg {font-family: Verdana, Arial, Helvetica; font-size: 11px; color: #003366; text-decoration: none}a:hover.pg {font-family: Verdana, Arial, Helvetica; font-size: 11px; color: #0066cc; text-decoration:underline}--></style><?php $quant_pg = ceil($quantreg/$numreg); $quant_pg++; // Verifica se esta na primeira página, se nao estiver ele libera o link para anterior if ( @$_GET['pg'] > 0) { echo "<a href=".$_SERVER['PHP_SELF']."?pg=".(@$_GET['pg']-1)." class=pg ><b>« Anterior</b></a>"; } else { echo "<font color=#CCCCCC>« anterior</font>"; } // Faz aparecer os numeros das página entre o ANTERIOR e PROXIMO for($i_pg=1; $i_pg<$quant_pg;$i_pg++) { // Verifica se a página que o navegante esta e retira o link do número para identificar visualmente if (@$_GET['pg'] == ($i_pg-1)) { echo " <span class=pgoff>[$i_pg]</span> "; } else { $i_pg2 = $i_pg-1; echo " <a href=".$_SERVER['PHP_SELF']."?pg=$i_pg2 class=pg><b>$i_pg</b></a> "; } } // Verifica se esta na ultima página, se nao estiver ele libera o link para próxima if ((@$_GET['pg']+2) < $quant_pg) { echo "<a href=".$_SERVER['PHP_SELF']."?pg=".(@$_GET['pg']+1)." class=pg ><b>próximo »</b></a>"; } else { echo "<font color=#CCCCCC>próximo »</font>"; }?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Porque que com o include não esta funcionando.Toda vez que clico em próximo ele volta pra index.php.Na minha pagina.php eu coloquei o form e este codigo:$busca = ""; if ($_GET["busca"]!=""){ $txt_criterio = $_GET["busca"]; echo $txt_criterio;} Mas não esta fazendo a busca não.Abraços a todos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Parabéns pelo script

 

Mas agora gostaria de saber como que eu limito o número de páginas que apareceram

 

Tipo se tiver mais de 30 páginas colocar "...." entre as páginas, assim o script ficaria completo

 

Como por exemplo

post-52269-1179891409_thumb.png

Compartilhar este post


Link para o post
Compartilhar em outros sites

Parabéns pelo script

 

Mas agora gostaria de saber como que eu limito o número de páginas que apareceram

 

Tipo se tiver mais de 30 páginas colocar "...." entre as páginas, assim o script ficaria completo

 

Como por exemplo

Tipo nesse seu caso você vai ter que fazer um monte de IFs para faer testes.... eu jah pensei em fazer algo dessa forma.. mas naum mexi nada ainda sobre isso...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.