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

Duvida, dividir conteúdos em paginas, php


HUGO BORGES

Pergunta

Galera criei o seguinte scrip em php + mysql:

<?
 // Ver todos os comentarios  -------------------------
 if(@$_REQUEST['action']=="todasnot"){

  // Recebe id para consulta
  $tipo = $_REQUEST['tipo'];

  // Faz consulta no banco de dados para ver os menbros da equipe
  $consulta = mysql_query("select * from noticias where tipo='$tipo' order by id desc");

  while($resultado = mysql_fetch_object($consulta)) {

  echo "<hr>";
  echo "<table>";
  echo "<tr>";
  echo "<td align=center width =150><img src='Imagens/Imagens_BD/Noticias/$resultado->imagem' width=116 height=87</td>";
  echo "<td width =600>
         <p align=left><b>$resultado->titulo</b><br>Postado por: $resultado->autor, em $resultado->date</p>
         <p align=left><a href=index.php?pagina=Paginas/Noticia.php&action=vernot&id=$resultado->id&tipo=1><b>Leia Mais...</b></a></p>
        </td>";
  echo "</tr>";
  echo "</table>";

  }

  echo "<hr>";

 }
?>

Bom o que ele faz?

Ele a um scrip que faz a leitura das notícias do BD, quando a variavel action=todasnot.

O problema e que tem muitas notícias e a pagina esta muito pesada para carregar.Queria saber como faço para que aparece apenas 5 notícias e em baixo delas apareça assim:

1 2 3 Proxima->

E quando a pessoa clica no 2 ele mostra mais 5 notícias e assim vai.

Link para o comentário
Compartilhar em outros sites

10 respostass a esta questão

Posts Recomendados

  • 0

Primeiro podias determinar a quantidade de notícias com este SQL:

SELECT COUNT(*)
FROM NOTICIAS WHERE TIPO = '$tipo';
Colocar o valor retornado em $qtdRegistros. Depois, calcular a quantidade de páginas:
$qtdRegistrosPorPagina = 5; // Ajustar este valor conforme o desejado.
$qtdPaginas = ceil( $qtdRegistros / $qtdRegistrosPorPagina );
Finalmente, a consulta dos registros para uma página específica ficaria assim:
$primeiroRegistro = ($pagina - 1) * $qtdRegistrosPorPagina;
$ultimoRegistro = $primeiroRegistro + $qtdRegistrosPorPagina - 1;
SELECT *
FROM NOTICIAS WHERE TIPO = '$tipo'
ORDER BY ID DESC LIMIT $primeiroRegistro, $ultimoRegistro;

Editado por Ensjo (Emerson Costa)
Link para o comentário
Compartilhar em outros sites

  • 0

Ensjo, tentei fazer como você falou mas não deu certo. Olha o código abaixo se é assim:

<?

// Ver todos as notícias -----------------------------------

if(@$_REQUEST['action']==todasnot"){

// Recebe id para consulta

$tipo = $_REQUEST['tipo];

$qtdRegistrosPorPagina = 1; // Ajustar este valor conforme o desejado.

$qtdPaginas = ceil( $qtdRegistros / $qtdRegistrosPorPagina );

// Faz consulta no banco de dados para ver os menbros da equipe

$consulta = mysql_query("select * from noticias where tipo='$tipo' ORDER BY ID DESC LIMIT $primeiroRegistro, $ultimoRegistro;");

$primeiroRegistro = ($pagina - 1) * $qtdRegistrosPorPagina;

$ultimoRegistro = $primeiroRegistro + $qtdRegistrosPorPagina - 1;

while($resultado = mysql_fetch_object($consulta)) {

echo "<hr>";

echo "<table>";

echo "<tr>";

echo "<td align=center width =150><img src='Imagens/Imagens_BD/Noticias/$resultado->imagem' width=116 height=87</td>";

echo "<td width =600>

<p align=left><b>$resultado->titulo</b><br>Postado por: $resultado->autor, em $resultado->date</p>

<p align=left><a href=index.php?pagina=Paginas/Noticia.php&action=vernot&id=$resultado->id&tipo=1><b>Leia Mais...</b></a></p>

</td>";

echo "</tr>";

echo "</table>";

}

echo "<hr>";

}

?>

Poderia me falar onde esta errado?

olha o erro que ta dando:

Notice: Undefined variable: qtdRegistros in /opt/lampp/htdocs/www/HDR info/Paginas/Noticia.php on line 233

Notice: Undefined variable: primeiroRegistro in /opt/lampp/htdocs/www/HDR info/Paginas/Noticia.php on line 238

Notice: Undefined variable: ultimoRegistro in /opt/lampp/htdocs/www/HDR info/Paginas/Noticia.php on line 238

Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /opt/lampp/htdocs/www/HDR info/Paginas/Noticia.php on line 244

Link para o comentário
Compartilhar em outros sites

  • 0

Ctrl+C Ctrl+V é um problema, lol. Que tal ler o erro?

Notice: Undefined variable: qtdRegistros in /opt/lampp/htdocs/www/HDR info/Paginas/Noticia.php on line 233

$qtdRegistrosPorPagina = 1; // Ajustar este valor conforme o desejado.
$qtdPaginas = ceil( $qtdRegistros / $qtdRegistrosPorPagina );
Você não declarou a variável $qtdRegistros . Notice: Undefined variable: primeiroRegistro in /opt/lampp/htdocs/www/HDR info/Paginas/Noticia.php on line 238 Notice: Undefined variable: ultimoRegistro in /opt/lampp/htdocs/www/HDR info/Paginas/Noticia.php on line 238
$consulta = mysql_query("select * from noticias where tipo='$tipo' ORDER BY ID DESC LIMIT $primeiroRegistro, $ultimoRegistro;");
Você está usando as variáveis $primeiroRegistro e $ultimoRegistro ANTES de declará-las. Não serve. Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /opt/lampp/htdocs/www/HDR info/Paginas/Noticia.php on line 244
while($resultado = mysql_fetch_object($consulta)) {

Como sua consulta não funcionou pelo erro anterior, mysql_fetch_object não tem como funcionar.

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

  • 0

Na minha postagem tinha DUAS consultas SQL, e no teu código só tem uma. A primeira serve para determinar a quantidade total de registros que a tua consulta produz.

Depois da linha "$tipo = $_REQUEST['tipo'];", adiciona:

$consulta = mysql_query( "select count(*) as qtd from noticias where tipo='$tipo';" );
if ( $resultado = mysql_fetch_object( $consulta ) ) {
  $qtdRegistros = (integer) $resultado->qtd;
} else {
  $qtdRegistros = 0;
}
A atribuição das variáveis $primeiroRegistro e $ultimoRegistro também deve ser feita ANTES da segunda consulta, já que a segunda consulta depende do valor dessas variáveis. E antes mesmo dessas atribuições é preciso obter a variável $pagina, que te diz a página que estás exibindo atualmente. Então essa parte do código fica assim:
if ( isset ( $_REQUEST['pagina'] ) ) {
  $pagina = (integer) $_REQUEST['pagina'];
} else {
  $pagina = 1;
}

$primeiroRegistro = ( $pagina - 1 ) * $qtdRegistrosPorPagina;
$ultimoRegistro = $primeiroRegistro + $qtdRegistrosPorPagina - 1;

$consulta = mysql_query( "select * from noticias where tipo='$tipo' order by id desc limit $primeiroRegistro, $ultimoRegistro;" );
E para criar a lista de links para cada página (os links "1, 2, 3...", adiciona no final do script:
$esteScript = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
echo '<p>';
for ( $i = 1; $i <=  $qtdPaginas; $i++ ) {
  echo '<a href="' . $esteScript . '&tipo=' . $tipo . '&pagina=' . $i . '">' . $i . '</a>';
  if ( $i != $qtdPaginas ) echo ', ';
}
echo '</p>';

Editado por Ensjo (Emerson Costa)
Link para o comentário
Compartilhar em outros sites

  • 0

Bom depois de muito esforço eu criei um e funcionou, olha como ficou o código abaixo.

<?
 // Ver todos as notícias -----------------------------------
 if(@$_REQUEST['action']=="todasnot"){

  // Recebe id para consulta
  $tipo = $_REQUEST['tipo'];

  // Variáveis da paginação
  $exibe = 5; //Exibe a quantidade de notícia
  $contador = 0;
  $npagina = 0;
  if (isset($_REQUEST["contador"]) && !empty($_REQUEST["contador"])) { $contador = $_REQUEST["contador"]; }
  if (isset($_REQUEST["npagina"]) && !empty($_REQUEST["npagina"])) { $npagina = $_REQUEST["npagina"]; }
  if ($npagina == '-1'){ $contador = $contador - 5; }
  if ($npagina == '1'){ $contador = $contador + 5; }

  // Faz consulta no banco de dados para ver os menbros da equipe
  $consulta = mysql_query("select * from noticias order by id desc LIMIT $contador, $exibe");

  while($resultado = mysql_fetch_object($consulta)) {

  echo "<hr>";
  echo "<table>";
  echo "<tr>";
  echo "<td align=center width =150><img src='Imagens/Imagens_BD/Noticias/$resultado->imagem' width=116 height=87</td>";
  echo "<td width =600>
         <p align=left><b>$resultado->titulo</b><br>Postado por: $resultado->autor, em $resultado->date</p>
         <p align=left><a href=index.php?pagina=Paginas/Noticia.php&action=vernot&id=$resultado->id&tipo=1><b>Leia Mais...</b></a></p>
        </td>";
  echo "</tr>";
  echo "</table>";

  }

  echo "<hr>";

  echo "<br><br>";
  echo "<p align=center>";
  if ($contador == '0'){
   echo "<b>< Próximas</b>";
  }else{
   echo "<a href=index.php?pagina=Paginas/Noticia.php&action=todasnot&tipo=$tipo&contador=$contador&npagina=-1><b>< Próximas</b></a>";
  }
  echo "&nbsp;&nbsp;&nbsp;";
  if(mysql_num_rows($consulta) == 0){
   echo "<b>Anteriores ></b>";
  }else{
   echo "<a href=index.php?pagina=Paginas/Noticia.php&action=todasnot&tipo=$tipo&contador=$contador&npagina=1><b>Anteriores ></b></a>";
  }
  echo "</p>";

 }

?>

A unica coisa e que não gera o link 1,2,3 etc...

Ma gora um assim, < Próximas Anteriores >

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,1k
    • Posts
      651,8k
×
×
  • Criar Novo...