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

[RESOLVIDO] Paginação: Número de resultados diferentes por página


fabioweirich

Pergunta

Olá galera, eu tenho o site da minha agência de modelos, e na página de casting já está tudo funcionando perfeitamente, mas tem uma pequeno problema que eu ainda não consegui resolver e conto com a ajuda de vocês.

O casting é separados por loiras, morenas, ruivas, etc e todos estão cadastradas numa única tabela que eu chamo de casting geral.

Cada página exemplo Loiras, Morenas, etc tem o seu código para buscar na tabela apenas o perfil correspondente, mas na paginação aparecem as vezes 45 resultados, na pagina 2 aparecem 30 resultados, na página seguinte 10 resultados, e isso ocorre porque o LIMIT está varrendo pelo ID na tabela.

Segue o link para que possam ver a página Online e logo abaixo o código fonte da página.

www.fweventos.com.br/?p=loiras

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

<?php
    $cat    = 'femloira';
    $desc    = 'loiras';
    $limite = 45; // Define o limite de registros a serem exibidos
?>    

<?php
// Turn off all error reporting
error_reporting(0);
?>

<?php

    $selecao = 'castinggeral';


//    Seta as configurações para Paginação

    $pagina = preg_replace('/[^0-9]/', '', $_GET["pag"]);
    $pagina = filter_var($pagina, FILTER_VALIDATE_INT);    

    if(!$pagina)
    {
        $pagina = 1;
    }    
    
    $inicio = ($pagina * $limite) - $limite;
    
//    Seta as configurações para Paginação

        

//CONECTA AO MYSQL
    $conn = mysqli_connect("host", "user", "senha", "database");

    if (!$sql = mysqli_query($conn, "SELECT id, status, fotoperfil, nome, altura, busto, cintura, quadril, categoria, foto1_tamanho, foto2_tamanho, foto3_tamanho, foto4_tamanho, foto5_tamanho, foto6_tamanho, foto7_tamanho, foto8_tamanho, foto9_tamanho FROM $selecao WHERE categoria = '$cat' LIMIT $inicio, $limite")){
    
    echo '<br><br><h2>Não foi possível se conectar ao banco de dados.<br>
    Verifique se o endereço digitado está correto.</h2>';
    }

    $consulta = mysqli_query($conn, "SELECT id FROM $selecao WHERE categoria = '$cat'");    
    $total_registros = mysqli_num_rows($consulta);
    $total_paginas = Ceil($total_registros / $limite);    

?>


<br><br>

<body class="Eventos"><h4>Clique nas imagens para amplia-las</h4><br>

<a name="top"></a>

<div class="descricao">
<?php echo ucwords($desc); ?>
</div>

<div id="thumbs">

<?php
    
    $group    = 0;

while ($row = mysqli_fetch_row($sql)) {
$id         = $row[0];
$status        = $row[1];
$fotoperfil    = $row[2];
$nome        = $row[3];

Abaixo disso fica o código que exibe as imagens, abaixo segue o código da páginação.

<?php
    
    if($pagina > 1){
    echo "<a href=\"?p=$desc&pag=1\">Primeira página</a>";
    }
        for($i=1; $i <= $total_paginas; $i++)
        {
             if($pagina == $i)
             {
                 echo " ".$i." ";
             }
             else
             {
                 echo "<a href=\"?p=$desc&pag=$i\">$i</a>";
    
             }
        }
    if($pagina <> $total_paginas){
    echo "<a href=\"?p=$desc&pag=$total_paginas\">Última página</a>";
    }

?>

Alguém consegue me dizer como resolver o problema de algumas páginas exibirem diferentes números de resultados ao invés dos 45 que foi setado?

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

3 respostass a esta questão

Posts Recomendados

  • 0

Boa noite,

Não está no código acima enviado, mas será possível que :

$status        = $row[1];

não seja comparado posteriormente e a modelo não seja exibida? (isso se $status for algo do tipo : aceitando trabalho / não aceitando ou ativo/não ativo)

Se for isso, teria de acrescentar no $select:

 if (!$sql = mysqli_query($conn, "SELECT id, status, fotoperfil, nome, altura, busto, cintura, quadril, categoria, foto1_tamanho, foto2_tamanho, foto3_tamanho, foto4_tamanho, foto5_tamanho, foto6_tamanho, foto7_tamanho, foto8_tamanho, foto9_tamanho FROM $selecao WHERE categoria = '$cat' and status=1 LIMIT $inicio, $limite")){

considerando 'status=1' = ativo, e 'status=0' = não ativo, ou algo parecido.

Link para o comentário
Compartilhar em outros sites

  • 0

Muito bem observado Sandro2011

Status serve para diferenciar homens, mulheres e fotos que não foram aprovadas, por isso elas era contadas mas não apareciam...

Graças a sua ajuda, resolvi meu problema.

Muito obrigado

Segue abaixo, como deixei o código...

	if (!$sql = mysqli_query($conn, "SELECT id, status, fotoperfil, nome, altura, busto, cintura, quadril, categoria, foto1_tamanho, foto2_tamanho, foto3_tamanho, foto4_tamanho, foto5_tamanho, foto6_tamanho, foto7_tamanho, foto8_tamanho, foto9_tamanho FROM $selecao WHERE categoria = '$cat' AND status = 1 ORDER BY estrelas DESC LIMIT $inicio, $limite")){
	
	echo '<br><br><h2>Não foi possível se conectar ao banco de dados.<br>
	Verifique se o endereço digitado está correto.</h2>';
	}

	$consulta = mysqli_query($conn, "SELECT id FROM $selecao WHERE categoria = '$cat' AND status = 1");	
	$total_registros = mysqli_num_rows($consulta);
	$total_paginas = Ceil($total_registros / $limite);	

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,3k
    • Posts
      652,3k
×
×
  • Criar Novo...