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

Problema Com Paginação


M@luco Belez@

Pergunta

Olá!!

Eu estava querendo um esquema de paginação, ai eu usei a busca aqui do fórum e achei um que o Gladisson postou, do tipo |1| 2 3....

mas o que acontece é que se a quantidade a ser exbida por página for 2 por exemplo, ele fica assim...

|0| 2 4 6

se qtde for = 3

|0| 3 6 9

abaixo vai o código...

<?PHP

#
# Salve como paginação.php
#
# Para teste acesse:
#
#     http:/localhost/paginacao.php?BLOCO=0&QUANTIDADE=10&RESULTADO_TOTAL=30
#
# Ai é só mudando os valores e veja! Agora é só adptar com as variaveis do script
#
#



#---------------------------------------------------------------------------------
# Em SELECT coloque no LIMIT $BLOCO,$QUANTIDADE


//********************************************************
// Caso $BLOCO não tenha outro valor seu valor será 0.
//********************************************************

IF(!ISSET($BLOCO)) $BLOCO = 0;

//********************************************************

#-------------------------------------
# Quantide de exibição por página!

$QUANTIDADE = 2;

#-------------------------------------
# Total de resultado!
require("conecta.php");
$sql = mysql_query("Select * from noticias Limit $BLOCO,$QUANTIDADE");
$lines = mysql_num_rows($sql);
while ($i = mysql_fetch_array($sql)) {
echo "<b>".$i['titulo']."</b><br>";
$id = $i['id'];
$desc = $i['descricao_peq'];
echo "<b><a href=\"$PHP_SELF?acao=ver&id=$id\">$desc</a>...Leia Mais<br><hr>";
}
$sql1 = mysql_query("Select * from noticias");
$linhas = mysql_num_rows($sql1);
$RESULTADO_TOTAL = $linhas;
//********************************************************


$BLOCOS_TOTAL = $RESULTADO_TOTAL / $QUANTIDADE;


#---------------------------------------------------------------------------------
# Aqui ele irá gerar os blocos para navegação!


ECHO ("| ");

FOR ($DISTRIBUE = 0; $DISTRIBUE < ($BLOCOS_TOTAL) + 0; $DISTRIBUE++) { // Abre distribue


$DISTRIBUE_BLOCOS = $DISTRIBUE * $QUANTIDADE;

#-------------------------------------------------
# Aqui ele mostrará em negrito o bloco atual!


IF ($BLOCO=="$DISTRIBUE_BLOCOS"){

ECHO (" <A HREF=\"?BLOCO=$DISTRIBUE_BLOCOS\"><B>[$DISTRIBUE_BLOCOS]</B></A> |");

} ELSE {

ECHO (" <A HREF=\"?BLOCO=$DISTRIBUE_BLOCOS\">$DISTRIBUE_BLOCOS</A> |");

}



#-------------------------------------------------

} // Fecha distribue



?>

Se alguém puder me ajudar a colocar do tipo |0| 1 2 3 4 5....., póde ser um script diferente tb...

Desde já valeu galera....

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Há uns comentários a fazer sobre essa parte de distribuir os blocos:

ECHO ("| ");

FOR ($DISTRIBUE = 0; $DISTRIBUE < ($BLOCOS_TOTAL) + 0; $DISTRIBUE++) { // Abre distribue

$DISTRIBUE_BLOCOS = $DISTRIBUE * $QUANTIDADE;

#-------------------------------------------------

# Aqui ele mostrará em negrito o bloco atual!

IF ($BLOCO=="$DISTRIBUE_BLOCOS"){

ECHO (" <A HREF=\"?BLOCO=$DISTRIBUE_BLOCOS\"><B>[$DISTRIBUE_BLOCOS]</B></A> |");

} ELSE {

ECHO (" <A HREF=\"?BLOCO=$DISTRIBUE_BLOCOS\">$DISTRIBUE_BLOCOS</A> |");

}

1. Pra que fazer $BLOCOS_TOTAL+0? É o mesmo que se referenciar somente a $BLOCOS_TOTAL

2. A comparação $BLOCO=="$DISTRIBUE_BLOCOS" pode ser substituída por $BLOCO==$DISTRIBUE_BLOCOS, afinal são duas variáveis.

3. Não use MAIÚSCULAS para os comandos do PHP

E, finalmente... a sequência de páginas está daquela forma por causa disso:

$DISTRIBUE_BLOCOS = $DISTRIBUE * $QUANTIDADE

Ou seja, se $QUANTIDADE for igual a 2, a sequência sempre será um múltiplo de 2.

Analise melhor este código que você vai encontrar o erro, OK?

;)

Link para o comentário
Compartilhar em outros sites

  • 0

Correção no código:

<?PHP

#

# Salve como paginação.php

#

# Para teste acesse:

#

#     http:/localhost/paginacao.php?BLOCO=0&QUANTIDADE=10&RESULTADO_TOTAL=30

#

# Ai é só mudando os valores e veja! Agora é só adptar com as variaveis do script

#

#

#---------------------------------------------------------------------------------

# Em SELECT coloque no LIMIT $BLOCO,$QUANTIDADE

//********************************************************

// Caso $BLOCO não tenha outro valor seu valor será 0.

//********************************************************

IF(!ISSET($BLOCO)) $BLOCO = 0;

//********************************************************

#-------------------------------------

# Quantide de exibição por página!

$QUANTIDADE = 2;

#-------------------------------------

# Total de resultado!

require("conecta.php");

$sql = mysql_query("Select * from noticias Limit $BLOCO,$QUANTIDADE");

$lines = mysql_num_rows($sql);

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

echo "<b>".$i['titulo']."</b><br>";

$id = $i['id'];

$desc = $i['descricao_peq'];

echo "<b><a href=\"$PHP_SELF?acao=ver&id=$id\">$desc</a>...Leia Mais<br><hr>";

}

$sql1 = mysql_query("Select * from noticias");

$linhas = mysql_num_rows($sql1);

$RESULTADO_TOTAL = $linhas;

//********************************************************

$BLOCOS_TOTAL = $RESULTADO_TOTAL / $QUANTIDADE;

#---------------------------------------------------------------------------------

# Aqui ele irá gerar os blocos para navegação!

ECHO ("| ");

FOR ($DISTRIBUE = 0; $DISTRIBUE < ($BLOCOS_TOTAL) + 0; $DISTRIBUE++) { // Abre distribue

$DISTRIBUE_BLOCOS = $DISTRIBUE * $QUANTIDADE;

#-------------------------------------------------

# Aqui ele mostrará em negrito o bloco atual!

IF ($BLOCO=="$DISTRIBUE"){

ECHO (" <A HREF=\"?BLOCO=$DISTRIBUE_BLOCOS\"><B>[$DISTRIBUE]</B></A> |");

} ELSE {

ECHO (" <A HREF=\"?BLOCO=$DISTRIBUE_BLOCOS\">$DISTRIBUE</A> |");

}

#-------------------------------------------------

} // Fecha distribue

?>

Este código eu fiz para a Carol, quando ela precisou fiz com um pouco de pressa me desculpe, pois não voltei para ver se tava tudo ok, mais agora eu acho que o problema está resolvido.

Até mais. :rolleyes:

Link para o comentário
Compartilhar em outros sites

  • 0

valeu mesmo Andre e Gladisson...

Eu quebrei um pouco a cabeça e consegui mudar umas coisas pra ficar mais fácil e pra mim entender melhor.... :lol:

<?PHP

#

# Salve como paginação.php

#

# Para teste acesse:

#

#    http:/localhost/paginacao.php?BLOCO=0&QUANTIDADE=10&RESULTADO_TOTAL=30

#

# Ai é só mudando os valores e veja! Agora é só adptar com as variaveis do script

#

#

#---------------------------------------------------------------------------------

# Em SELECT coloque no LIMIT $BLOCO,$QUANTIDADE

//********************************************************

// Caso $BLOCO não tenha outro valor seu valor será 0.

//********************************************************

IF(!ISSET($pagina)) $pagina = 0;

//********************************************************

#-------------------------------------

# Quantide de exibição por página!

$quantidade = 2;

$inicio = $pagina * $quantidade;

#-------------------------------------

# Total de resultado!

require("conecta.php");

$sql = mysql_query("Select * from noticias Limit $inicio,$quantidade") or die("erro de sql:".mysql_error());

$lines = mysql_num_rows($sql);

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

echo "<b>".$i['titulo']."</b><br>";

$id = $i['id'];

echo "$id<br>";

$desc = $i['descricao_peq'];

echo "<b><a href=\"$PHP_SELF?acao=ver&id=$id\">$desc</a>...Leia Mais<br><hr>";

}

$sql1 = mysql_query("Select * from noticias");

$linhas = mysql_num_rows($sql1);

$paginas = ceil($linhas / $quantidade);

//********************************************************

//$BLOCOS_TOTAL = $RESULTADO_TOTAL / $QUANTIDADE;

#---------------------------------------------------------------------------------

# Aqui ele irá gerar os blocos para navegação!

//anterior

if($pagina>0) {

$anterior = $pagina - 1;

echo "<a href=\"?pagina=$anterior\">Anterior</a>";

}

ECHO ("| ");

FOR ($i = 0; $i < ($paginas) + 0; $i++) { // Abre distribue

//$DISTRIBUE_BLOCOS = $DISTRIBUE * $QUANTIDADE;

#-------------------------------------------------

# Aqui ele mostrará em negrito o bloco atual!

IF ($pagina=="$i"){

ECHO (" <A HREF=\"?pagina=$i\"><B>[$i]</B></A> |");

} ELSE {

ECHO (" <A HREF=\"?pagina=$i\">$i</A> |");

}

#-------------------------------------------------

} // Fecha distribue

//proxima

if($pagina < ($paginas - 1)) {

$proxima = $pagina + 1;

echo "<a href=\"?pagina=$proxima\">Próxima</a>";

}

?>

Mais uma vez brigadão pela força que vocês dão aqui no fórum, graças à ele e à vocês hj eu consigo pelo menos me virar com php.....

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
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...