Ir para conteúdo
Fórum Script Brasil
  • 0

Paginacao Php Vs. Mysql


Guest He

Pergunta

<?
$conecta = mysql_connect("localhost", "usr", "usr") or print(mysql_error());
mysql_select_db("main", $conecta) or print(mysql_error());
$sql = mysql_query("SELECT * FROM errors");

$lpp = 2; // Especifique quantos resultados você quer por página
$total = mysql_num_rows($sql); // Esta função irá retornar o total de linhas na tabela
$paginas = 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 errors LIMIT $inicio, $lpp"); // Executa a query no MySQL com o limite de linhas.

while($l = mysql_fetch_array($sql)) {
     echo "Resultado...$l[id]<br>";
}

// Agora o mais importante, gera os links....

if ($pagina > 0) {
     $menos = $pagina - 1;
     $url = "$PHP_SELF?pagina=$menos";
     print "<a href=\"$url\">&laquo; Anterior</a>";
} else {
     print "&laquo; Anterior";
}

for($i = 0; $i < $paginas; $i++) {
     $linksp = $i + 1;
     if ($pagina == $i) {
             print " | <b>$linksp</b>";
     } else {
             $url = "$PHP_SELF?pagina=$i";
             print " | <a href=\"$url\">$linksp</a>";
     }
}

if($pagina < ($paginas - 1)) {
     $mais = $pagina + 1;
     $url = "$PHP_SELF?pagina=$mais";
     print " | <a href=\"$url\">Pr&oacute;xima &raquo;</a>";
} else {
     print " | Pr&oacute;xima &raquo;";
}
?>

Oi! Tenho uma pergunta sobre o codigo... o que falta pra ele ficar PERFEITO seria o seguinte:

Como eu tenho pouco espaco pra exibir as paginas eu queria o seguinte:

No momento ele esta fazendo assim:

Anterior - 1 - 2 - 3 - 4 - 5...... e continua pra sempre.....

Imagine se eu quero exibir UM registro por pagina, e eu tenho 100 registros, ele vai criar exibir as paginas de 1-100!!!

Eu queria que fosse assim:

quando a pessoa entra tem:

Anterior - 1 - 2 - 3 - 4 - 5 - Proxima

---e quando a pessoa clicar em Proxima ele vai pra:

Anterior - 2 - 3 - 4 - 5 - 6 - Proxima

Entenderam?

Pra não ocupar TANTO espaco na pagina, porque eu tenho uma tabela de 100px pra exibir minhas paginas e se eu exibir mais de 5 paginas ele quebra a tabela!

podem me ajudar com isso? E' urgente!! :(

Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0
Guest He, AKA teixmat, AKA utgroup

Ah não, espere....

Ele ta fazendo assim:

Na pagina um ele mostra 4 registros (o tanto certo);

Na pagina dois também.

Na pagina 3 ele mostra 2 registros!

e ainda coloca uma pagina 4 com NENHUM registro...

--->um erro que acabei de perceber. :(

MAS EU CONTINUO AGRADECENDO! :lol: :D :lol:

Link para o comentário
Compartilhar em outros sites

  • 0

Cara...eu acho que era isso...talvez você tenha que adaptar os nomes dos campos e tabelas...mas o código é esse... espero que tenha entendido alguma coisa...hehe ^_^

Páginação de fotos com "registros/página" variável:

<?php

include "connect.php"; ##aqui você põe a sua página de conexão, seleção de tabela...essas coisas... =)

###operações iniciais

$rpp = "2"; ##número de registros por página

$pg_atual = $_GET[id];

if(!isset($_GET[id])){$pg_atual = 1;}  ##aqui você tem que dizer pro script que a página atual vai ser "1" caso o cara entre lá pela primeira vez

$sql_ver = mysql_query("SELECT * FROM screenshots LIMIT ".(($pg_atual-1)*$rpp).",".$rpp.";"); #aqui ele pega o scr da foto com base na sua posição na tabela e não na sua id...

$sql_tudo = mysql_query("SELECT * FROM screenshots ORDER BY id;");

$r_total = mysql_num_rows($sql_tudo);     ##pega o número de fotos

$pg_total = ceil($r_total/$rpp); ## $pg_total = $r_total dividido por $rpp arredondado pra cima [ceil()]

///operações iniciais

###imprime a foto

while ($l = mysql_fetch_array($sql_ver)){

echo "<tr>";

echo "<td>";

echo "<img src=\"$l[original]\">";

echo "</td>";

echo "</tr>";

echo "<BR>Imagem = <b>$l[original]</b>";

echo "<BR>Página atual: <b>$pg_atual/$pg_total</b>";

echo "<br>";

}

///imprime a foto

##tente não usar as ids...elas podem variar muito...se você deleta alguma no meio, você pode ter problemas...trabalhe com o a posição na tabela

###imprime os links

if ($pg_atual == 1){ ##se a página atual for 1, não mostra o anterior...hehe

echo "";

}

else {

echo "|<a href='ver_foto2.php?id=1'> Primeira </a> |";

echo "<a href='ver_foto2.php?id=". ($pg_atual - 1) ."'> Anterior </a> | ";

}

##tirei esse while porque você pode poupar conexão com o DB...simplesmente fazendo um FOR aqui... tem o mesmo efeito...e é mais rápido!

for ($id_num = 1; $id_num <= $pg_total; $id_num++){ ##Começa com $id_num =1, executa o código e incrementa [$id_num++] enquanto $id_num for menor que $pg_total

  if ($id_num == $pg_atual){echo " $id_num | ";continue;} ##vê se está na página atual, se estiver, não imprime o link e passa para a próxima tentativa...

echo "<a href=\"ver_foto2.php?id=$id_num\">$id_num</a> | ";

}

if ($pg_atual == $pg_total){

echo "";

}

else {

echo "<a href='ver_foto2.php?id=".($pg_atual + 1)."'> Próxima </a>"; ##se a página atual for a última, não mostra o próxima

echo "|<a href='ver_foto2.php?id=".$pg_total."'> Última </a> ";

echo " | ";

}

///imprime os links

?>

Ps: Qualquer coisa, é só perguntar... :rolleyes:

Editado por 404error
Link para o comentário
Compartilhar em outros sites

  • 0
Guest He, AKA teixmat, AKA utgroup

Ele tah mostrando o mesmo registro em todas as paginas...

tipo:

Pagina 1:

Id: 1

Pergunta: Como?

Resposta: Assim.

Id: 1

Pergunta: Como?

Resposta: Assim.

Pagina 2:

Id: 1

Pergunta: Como?

Resposta: Assim.

Id: 1

Pergunta: Como?

Resposta: Assim.

e tal... :(

Link para o comentário
Compartilhar em outros sites

  • 0
Ele tah mostrando o mesmo registro em todas as paginas...

tipo:

Pagina 1:

Id: 1

Pergunta: Como?

Resposta: Assim.

Id: 1

Pergunta: Como?

Resposta: Assim.

Pagina 2:

Id: 1

Pergunta: Como?

Resposta: Assim.

Id: 1

Pergunta: Como?

Resposta: Assim.

e tal... :(

Isso era um erro no meu script cara...errei quando fui transpor pra cá...desculpa...

Já editei o post com ele, está legal agora...

O erro era:

(($pg_atual-1)*$rrp)
Não existe nenhuma $rrp... o certo seria:
(($pg_atual-1)*$rpp)

Malz ae... :rolleyes:

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...