Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Felipe Chiarotti

Paginação

Recommended Posts

Olá pessoal, estou montando um sistema de paginação, porém preciso de ajuda, estou utilizando o seguinte código:

   $busca = "SELECT * from games";
                         $total_reg = 12;
                         
                         $pagina=$_GET['pagina'];
                         if (!$pagina) { 
                         $pc = "1"; 
                         
                         } else { $pc = $pagina; }

                         $inicio = $pc - 1;
                         $inicio = $inicio * $total_reg;

                         $limite = mysql_query("$busca LIMIT $inicio,$total_reg");
                         $todos = mysql_query("$busca");
                         
                         $tr = mysql_num_rows($todos);
                         $tp = $tr / $total_reg;

Ele corta tudo certinho, deixa apenas 12 em: www.meusite.com.br/jogos-torrent

 

Porém se eu passo: www.meusite.com.br/jogos-torrent?pagina=2

 

Ele continua exibindo os mesmos 12 artigos. Alguem pode me ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Totalreg não está mudando... na verdade, o segundo parametro do LIMIT do MySQL deve ser aonde termina.

Se você quer buscar de 12 em 12, não pode ser o valor total.

 

Você pode contornar isso multiplicando $total_reg * $_GET['pagina'], como você fez com $inicio.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Maykel-ctba, o segundo parametro do LIMIT não indica a quantidade de registros a serem percorridos?


eu fiz uma assim tempos atras:

if(isset($a)){
        $a=$a;
    }else{
        $a=1;
    }

$quant = 20;

$inicio = ($a*$quant)-$quant;

e o sql ficou assim:

"SELECT * FROM tbl_professor where vrc_nome_professor limit $inicio , $quant;"

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

@Maykel-ctba, o segundo parametro do LIMIT não indica a quantidade de registros a serem percorridos?

eu fiz uma assim tempos atras:

if(isset($a)){
        $a=$a;
    }else{
        $a=1;
    }

$quant = 20;

$inicio = ($a*$quant)-$quant;

e o sql ficou assim:

"SELECT * FROM tbl_professor where vrc_nome_professor limit $inicio , $quant;"

 

Totalreg não está mudando... na verdade, o segundo parametro do LIMIT do MySQL deve ser aonde termina.

Se você quer buscar de 12 em 12, não pode ser o valor total.

 

Você pode contornar isso multiplicando $total_reg * $_GET['pagina'], como você fez com $inicio.

 

Não conjsegui resultados, fiquei meio confuso com esse $total_reg * $_GET['pagina'].

E se não me engano, o primeiro numero do LIMIT define apartir de qual resultado ele pega. E o segundo, quantos percorre

 

Ex: LIMIT 5, 5

Mostrará: 6, 7, 8, 9, e 10

Compartilhar este post


Link para o post
Compartilhar em outros sites

Imprima a consulta e veja se te retorna certo e testa no banco. Já ajuda a entender o que acontece.

 

Eu supus que você colocou o total de registros pelo nome da sua variável, e não o limite máximo de registros a percorrer.

 

Até onde sei, o segundo parametro do limit não é quantos registros devem ser percorridos, mas até qual.

Compartilhar este post


Link para o post
Compartilhar em outros sites

o $total_reg é a quantidade de registros que tu quer apresentar na tua página, semelhante ao $quant que eu mostrei.

O primeiro parametro do LIMIT indica o índice de onde começa a consulta (ex: LIMIT 0,10 inicia no primeiro registro) e o segundo indica quantos registros serão percorridos (ex: LIMIT 5,5 inicia no sexto registro e vai até o decimo primeiro). O primeiro indice na consulta é o 0 (zero) por isso ele subtraiu $inicio = $pc - 1.

Compartilhar este post


Link para o post
Compartilhar em outros sites

faz assim e ve se muda:

$total_reg = 12;
                         
                         
                         if (!isset($_GET['pagina']) { 
                         $pc = 1; 
                         
                         } else { $pc = $_GET['pagina']; }

                         $inicio = $pc - 1;
                         $inicio = $inicio * $total_reg;

                         $limite = mysql_query("$busca LIMIT $inicio,$total_reg");
                         $todos = mysql_query("$busca");
                         
                         $tr = mysql_num_rows($todos);
                         $tp = $tr / $total_reg;

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

faz assim e ve se muda:

$total_reg = 12;
                         
                         
                         if (!isset($_GET['pagina']) { 
                         $pc = 1; 
                         
                         } else { $pc = $_GET['pagina']; }

                         $inicio = $pc - 1;
                         $inicio = $inicio * $total_reg;

                         $limite = mysql_query("$busca LIMIT $inicio,$total_reg");
                         $todos = mysql_query("$busca");
                         
                         $tr = mysql_num_rows($todos);
                         $tp = $tr / $total_reg;

Isto está até me dando agonia, de ver este 0 Retornando, por mais que eu altere o código. Não resolveu..

 

Eu Descobri o problema, eu acho. A variavel $pc, está retornando SEMPRE 1, sendo que ela deveria retornar o numero listado na url. Por isso o $inicio fica sempre em 0. Pois $inicio = $pc -1;

 

Então eu deixei o if deste jeito para que eu possa identificar:

 

if (!isset($_GET['pagina'])) {
$pc = 1;
echo $pc;
} else { $pc = $_GET['pagina']; echo $pc.'else'; }
E percebi, que ele nunca está retornando o ELSE, mesmo que passe o valor, por isso ele sempre recebe $pc = 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

faz assim e veja como vai ficar:

 if (!isset($_GET['pagina']) { 
                         $pc = 1; 
                         
                         } else { $pc = $_GET['pagina']; }

                         echo $pc;//verifica o valor que vai aparecer aki.
                         $inicio = $pc - 1;
                         $inicio = $inicio * $total_reg;

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

faz assim e veja como vai ficar:

 if (!isset($_GET['pagina']) { 
                         $pc = 1; 
                         
                         } else { $pc = $_GET['pagina']; }

                         echo $pc;//verifica o valor que vai aparecer aki.
                         $inicio = $pc - 1;
                         $inicio = $inicio * $total_reg;

Uma dúvida. Não está tendo algum tipo de conflito por caus da url amigável?

www.site.com.br/jogos?pagina=2

?

Compartilhar este post


Link para o post
Compartilhar em outros sites

amigo, ta faltando um ")" no final do primeiro if que lhe mandei, vou corrigir nos posts,


<?php
$total_reg = 12;
                         
                         
if (!isset($_GET['pagina'])) 
{ 
	$pc = 1; 
}else 
{ 
	$pc = $_GET['pagina']; 
}
echo "este é o pc após o if ".$pc."<br/>";
$inicio = $pc - 1;
$inicio = $inicio * $total_reg;

?>

testa assim e vê o resultado de $pc apos o if.


pra fazer o teste, usa www.site.com.br/jogos?pagina=2 e vê se ao final do if ele vai imprimir o numero 2.

Compartilhar este post


Link para o post
Compartilhar em outros sites

amigo, ta faltando um ")" no final do primeiro if que lhe mandei, vou corrigir nos posts,

<?php
$total_reg = 12;
                         
                         
if (!isset($_GET['pagina'])) 
{ 
	$pc = 1; 
}else 
{ 
	$pc = $_GET['pagina']; 
}
echo "este é o pc após o if ".$pc."<br/>";
$inicio = $pc - 1;
$inicio = $inicio * $total_reg;

?>

testa assim e vê o resultado de $pc apos o if.

pra fazer o teste, usa www.site.com.br/jogos?pagina=2 e vê se ao final do if ele vai imprimir o numero 2.

 

Não se preocupe quanto ao ")", eu adicionei todas as vezes que me enviou o codigo. Então amigo, como eu disse. NÃO está retornando a variável da url. Pòis ele sempre imprime o "1", definido caso "não exista" o ?pagina=x

Ele não está recebendo nada, e está sempre imprimindo 1. Com ?pagina=qualquernumero. E Sem o ?pagina=x.

Ele apenas imprime o 1!

Por isso acho que seja algo relacionado a url amigavel

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pera... você tem URL amigável então...

Logo, parâmetros devem estar sendo descartados dela! ;-)

 

Onde estão os códigos que montam estas URLs? (htaccess e páginas de controle, caso existam).

 

Se for o caso, você pode usar o mesmo funcionamento atual, e ao inves de usar ?pagina=2, use /jogos/2 e extraia da URL tal parâmetro!

Compartilhar este post


Link para o post
Compartilhar em outros sites
RewriteEngine On


RewriteCond %{SCRIPT_FILENAME} !-f


RewriteCond %{SCRIPT_FILENAME} !-d


RewriteRule ^(.*)$ index.php?url=$1 [L]

PROBLEMA RESOLVIDO, MUITO OBRIGADO HAHA, ja ajeitei aqui. Peço desculpas aos dois pelo incomodo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.