Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

guma

Paginacao estilo do Google

Recommended Posts

E ai pessoal alguem pode me ajudar a fazer uma paginação estilo ao do Google a minha paginação esta quase certo o meu problema que ela nao faz de 10 em 10.

 

Tipo tenho 30 paginas e quero que mostre as 10 primeiras e depois quando a pessoa clica em proximo e mostre da pagina 10 a 20 e assim por diante entenderao se alguem puder me ajudar fico grato.

 

A outra coisa quando chegar no final do numero de Paginas nao pode mais listar tipo a pessoa chegar no 30 e para ai mesmo

 

Valeu meu codigo

 

PHP [/tr][tr]

$sql = "Select * from materias where ";

$sql_res = mysql_query($sql, $conexao) or die ("Não foi possível executar a consulta.");

 

$lpp = 30; // Especifique quantos resultados você quer por página

$total = mysql_num_rows($sql_res); // Esta função irá retornar o total de linhas na tabela

$paginas = ceil($total / $lpp); // Retorna o total de páginas

$totalPG = ceil($total / $lpp); // Retorna o total de páginas

if(!isset($pagina)) { $pagina = 0; } // Especifica uma valor para variavel pagina caso a mesma não esteja setada

$inicio = $pagina * $lpp; // Retorna qual será a primeira linha a ser mostrada no MySQL

$sql = mysql_query("Select * from materiasLIMIT $inicio, $lpp"); // Executa a query no MySQL com o limite de linhas.

$row = mysql_num_rows($sql);

 

[/tr]

 

 

PHP [/tr][tr]

<?

if($pagina >= $totalPG) {

 

}

 

// SE O NUMERO CLICADO FOR ENTRE 0 ATE 10

if ($pagina < 10) {

$resuB = 0;

$resuA = 10;

} else {

$resuB = $pagina;

$resuB = $resuB - 10;

$resuA = $resuB;

$resuA = $resuA + 10;

}

 

 

if ($pagina > 10){

$menos = $pagina - 10;

$url = "$PHP_SELF?pagina=$menos&sessao=$sessao";

echo "<a href='$url'>Anterior</a>"; // Vai para a página anterior

}

 

for($i=$resuB;$i<=$resuA;$i++) { // Gera um loop com o link para as páginas

$url = "$PHP_SELF?pagina=$i&sessao=$sessao";

echo " | <a href='$url'>$i</a>";

}

 

if (($pagina < $totalPG) && ( $i < $totalPG)) {

$mais = $pagina + 10;

$url = "$PHP_SELF?pagina=$mais&sessao=$sessao";

echo " | <a href='$url'>Próxima</a>";

}

 

 

?>

 

[/tr]

 

Ai pessoal valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

Algumas dicas e sugestões iniciais:

1 - no código postado, parece que a variável "$paginas" está sobrando;

 

2 - no SQL onde você usa o LIMIT, está faltando o parametro "$conexao", o q pode estar dando erro, sem executar o comando;

 

3 - sugiro não fazer uma 2a leitura do BD com o LIMIT: isso é muito oneroso (caro). você já leu o banco antes, basta fazer um loop usando um FOR, por exemplo. Ficaria +- assim:

PHP [/tr][tr]

$sql = "SELECT ..."

$resultado = mysql_query($sql, $conexao) or die("ERRO");

 

// LOOP PARA MOSTRAR REGISTROS LIDOS

for($i = 0; $i<mysql_num_rows($resultado); $i++) {

// ....... aqui vao os comandos para cada registro do banco

}

[/tr]

Nesse código, modifique para o nome de suas variáveis:

- o valor inicial do loop ($i=0);

- o valor final do loop (mysql_num_rows($resultado)).

 

Sucesso!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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