Jump to content
Fórum Script Brasil
  • 0

Ajuda Com Paginação!


Parenti
 Share

Question

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 to comment
Share on other sites

8 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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

Edited by ESerra
Leia as regras do fórum: "3.1 É proibido postar quaisquer tipos de materiais pornográficos"
Link to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Forum Statistics

    • Total Topics
      149.8k
    • Total Posts
      646.6k
×
×
  • Create New...