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

Ajuda Com Paginação!


Parenti

Pergunta

Olá comunidade, estou precisando de fazer páginação disso:

<?
          $id_cat = $_GET["id"];
          $consulta = mysql_query("SELECT titulo, id_cat, id, cliques FROM piadas WHERE id_cat='$id_cat' ORDER BY titulo ASC") or die (mysql_error());
          while($n = mysql_fetch_array($consulta)){
$id = $n["id"];
$titulo = $n["titulo"];
$cliques = $n["cliques"];
$id_cat = $n["id_cat"];
echo "<font face=Verdana, Arial, Helvetica, sans-serif><font size=1><a href=\"piada.php?id_cat=$id_cat&id=$id\">$titulo</a> - ($cliques visualizações)</font><br>";
}
?>

Eu já tentei um monte de coisas (que eu achei aqui) só que quando tento colocar no ECHO repete um monte de vezes e não página...

Obrigado pela ajuda....

Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

O alicerce da paginação é a cláusula LIMIT do MySQL, ela define quantos registros vão ser exibidos e partir de quando, por exemplo se colocar:

SELECT titulo, id_cat, id, cliques FROM piadas WHERE id_cat='$id_cat' ORDER BY titulo ASC LIMIT 0, 50

Serão exibidos 50 resultados... começando do número 1 indo até o 50...

No caso você vai ter que trabalhar o LIMIT, o primeiro argumento (no caso o zero) vai ser variável, o segundo (no caso o 50) pode ser fixo...

Para criar uma paginação você tem que entender a lógica, leia um script e ai tente aplicar, se não conseguir volte aqui...

Link para o comentário
Compartilhar em outros sites

  • 0

Tá Legal ESerra, consegui:

<?

$id_cat = $_GET["id"];

$consulta = mysql_query("SELECT titulo, id_cat, id, cliques FROM piadas WHERE id_cat=$id_cat' ORDER BY titulo ASC LIMIT 0, 50") or die (mysql_error());

while($n = mysql_fetch_array($consulta)){

$id = $n["id];

$titulo = $n["titulo"];

$cliques = $n["cliques"];

$id_cat = $n["id_cat"];

echo "<font face=Verdana, Arial, Helvetica, sans-serif><font size=1><a href=\"piada.php?id_cat=$id_cat&id=$id\">$titulo</a> - ($cliques visualizações)</font><br>";

}

?>

só aparece 50 registros, porém como eu faço os links para chamar outra página com mais 50 registros...

obrigago pela atenção

Link para o comentário
Compartilhar em outros sites

  • 0

ESerra , obrigado pela ajuda, consegui fazer o que eu queria.....

na verdade até mais coisas:

Para quem trabalha com o mfpiadas (eu troquei o nome do arquivo piada.php para contoerotico.php):

No arquivo categorias.php

contoseroticos era piadas

contoerotico era piada

Antigo

<?
          $id_cat = $_GET["id"];
          $consulta = mysql_query("SELECT titulo, id_cat, id, cliques FROM contoseroticos WHERE id_cat='$id_cat' ORDER BY titulo ASC") or die (mysql_error());
          while($n = mysql_fetch_array($consulta)){
$id = $n["id"];
$titulo = $n["titulo"];
$cliques = $n["cliques"];
$id_cat = $n["id_cat"];
echo "<font face=Verdana, Arial, Helvetica, sans-serif><font size=1><a href=\"contoerotico.php?id_cat=$id_cat&id=$id\">$titulo</a> - ($cliques visualizações)</font><br>";
}
?>
Novo
<?
$re = mysql_query("SELECT count(*) as total FROM contoseroticos");
$total = mysql_result($re, 0, "total");

$pagina = 0;
if(isset($_GET["pagina"])) {

$pagina = $_GET["pagina"];

}

$limite = 20;
$paginas = ceil($total / $limite);

$inicio = $pagina * $limite;

$sql = mysql_query("SELECT * FROM contoseroticos LIMIT $inicio, $limite");

$conta = mysql_num_rows($sql);

while($n = mysql_fetch_array($sql)){
$id = $n["id"];
$titulo = $n["titulo"];
$contoerotico = $n["contoerotico"];
$str = strlen($contoerotico);
$substr = substr($contoerotico, "0", "100");
$cliques = $n["cliques"];
$id_cat = $n["id_cat"];

if($str > 100){
echo "<font size=2 face=Verdana><a href=\"contoerotico.php?id_cat=$id_cat&id=$id\"><b>$titulo</b></a> - ($cliques visualizações)<br>$substr...</font><br><br>";
}
else{
echo "<font size=1 face=Verdana><a href=\"contoerotico.php?id_cat=$id_cat&id=$id\">$titulo</a> - ($cliques visualizações)<br>$contoerotico</font><br><br>";
}
}

if($pagina > 0) {
   $menos = $pagina - 1;
   $url = $_SERVER["PHP_SELF"]."?pagina=".$menos;
   echo "<font size=2 face=Verdana><a href=\"$url\">Anterior</a></font>";
}
for($i = 1;$i < $paginas; $i++) {
   $url = $_SERVER["PHP_SELF"]."?pagina=".$i;
   echo "<font size=2 face=Verdana> | <a href=\"$url\">$i</a></font>";
}
if($pagina < $paginas) {
   $mais = $pagina + 1;
   $url = $_SERVER["PHP_SELF"]."?pagina=".$mais;

   echo "<font size=2 face=Verdana> | <a href=\"$url\">Próxima</a></font>";

}
?>

Para ver melhor como ficou: CONTEÚDO REMOVIDO

Obrigado pela Ajuda...

Então ESerra, a páginação acima está com problemas:

Está listando todos os arquivos da tabela: contoseroticos

porém eu preciso listar na categoria: Heterosexuais e só listar e paginar essa categoria

coisa que não está acontecendo....

Link para o comentário
Compartilhar em outros sites

  • 0

Acontece que no seu antigo a query estava assim:

SELECT titulo, id_cat, id, cliques FROM contoseroticos WHERE id_cat='$id_cat' ORDER BY titulo ASC
No novo está assim:
SELECT count(*) as total FROM contoseroticos
SELECT * FROM contoseroticos LIMIT $inicio, $limite
Você não está delimitando com a cláusula WHERE.... por exemplo o segundo teria que fica:
SELECT * FROM contoseroticos WHERE id_cat='$id_cat' LIMIT $inicio, $limite

Obviamente, nos links, além da página você terá que passar o $id_cat

Link para o comentário
Compartilhar em outros sites

  • 0

<?
$re = mysql_query("SELECT count(*) as total FROM contoseroticos WHERE id_cat='$id_cat' ORDER BY titulo ASC");
$total = mysql_result($re, 0, "total");

$pagina = 0;
if(isset($_GET["pagina"])) {

$pagina = $_GET["pagina"];

}

$limite = 20;
$paginas = ceil($total / $limite);

$inicio = $pagina * $limite;

$sql = mysql_query("SELECT * FROM contoseroticos WHERE id_cat='$id_cat' LIMIT $inicio, $limite");

$conta = mysql_num_rows($sql);

while($n = mysql_fetch_array($sql)){
$id = $n["id"];
$titulo = $n["titulo"];
$contoerotico = $n["contoerotico"];
$str = strlen($contoerotico);
$substr = substr($contoerotico, "0", "100");
$cliques = $n["cliques"];
$id_cat = $n["id_cat"];

if($str > 100){
echo "<font size=2 face=Verdana><a href=\"contoerotico.php?id_cat=$id_cat&id=$id\"><b>$titulo</b></a> - ($cliques visualizações)<br>$substr...</font><br><br>";
}
else{
echo "<font size=1 face=Verdana><a href=\"contoerotico.php?id_cat=$id_cat&id=$id\">$titulo</a> - ($cliques visualizações)<br>$contoerotico</font><br><br>";
}
}

if($pagina > 0) {
$menos = $pagina - 1;
$url = $_SERVER["PHP_SELF"]."?id_cat=$id_cat&pagina=".$menos;
echo "<font size=2 face=Verdana><a href=\"$url\">Anterior</a></font>";
}
for($i = 1;$i < $paginas; $i++) {
$url = $_SERVER["PHP_SELF"]."?id_cat=$id_cat&pagina=".$i;
echo "<font size=2 face=Verdana> | <a href=\"$url\">$i</a></font>";
}
if($pagina < $paginas) {
$mais = $pagina + 1;
$url = $_SERVER["PHP_SELF"]."?id_cat=$id_cat&pagina=".$mais;

echo "<font size=2 face=Verdana> | <a href=\"$url\">Próxima</a></font>";

}
?>
<br>&nbsp;<br>
          <img border="0" src="imagens/botao_as_mais_clicadas.jpg"><br>
  <?
include("../Connections/config.php");

$consulta = mysql_query("SELECT * FROM contoseroticos ORDER by cliques DESC LIMIT 0,30");
while($dados = mysql_fetch_array($consulta)){
                     $campo1 = $dados["titulo"];
                     $campo2 = $dados["contoerotico"];
               $campo3 = $dados["id_cat"];
               $campo4 = $dados["cliques"];
               $campo5 = $dados["id"];
echo "<font size=2 face=Verdana><a href=\"contoerotico.php?id_cat=$campo3&id=$campo5\">$campo1</a></font><br>";
}
?>

Então, eu já consegui achar vários erros:

1º - id_cat=48&pagina=0 quando só existe uma página

aparece: | Próxima (id_cat=48&pagina=1)

2º - Quando eu Coloco categorias.php, não aparece nada, gostaria de poder colocar uma mensagem...

3º - Para funcionar tive que iniciar id_cat=$id&pagina=0 (Existe outra forma de fazer isso?

<?

$consulta = mysql_query("SELECT * FROM cat ORDER BY nome ASC") or die (mysql_error());

while($verifica = mysql_fetch_array($consulta)){

$id = $verifica["id"];

$nome = $verifica["nome"];

echo"<font face=Verdana size=2><a href=\"categorias.php?id_cat=$id&pagina=0\">$nome</a><br></font>";

}

?>

4º - Na páginação aparece: | 1 | 2 | 3 | Próxima

porém existe a página 0 (que não é listada)

5º - O mesmo que o 1º erro

categorias.php?id_cat=4&pagina=4 (só existe até a página 3)

Se você puder dar uma olhada para corrigir os erros, eu agradeço...

CONTEÚDO REMOVIDO

Editado por ESerra
Leia as regras do fórum: "3.1 É proibido postar quaisquer tipos de materiais pornográficos"
Link para o comentário
Compartilhar em outros sites

  • 0

1,4,5

Quanto a parte da paginação altera isso:

if(isset($_GET["pagina"])) {

$pagina = $_GET["pagina"];

}

Para isso:

$pagina = (isset($_GET["pagina"]))? $_GET["pagina"]:1;

$pagina = $pagina-1;

-------------------

2 - Se, você, faça com if/else, se não estiver definida a categoria, mostra a mensagem, se estiver exibe o conteúde e a paginação...

if(isset($_GET['id_cat'])){

//Aqui exibe a msg

}else{

//Aqui o conteúdo e a paginação

}

-------------------

3 - Você terá que especificar sem assim, sempre vai ter que passar o ID e a página (que quando o cara entrar vai ser a 1, só quando ele for navegando que vai ir mudando)...

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...