Ir ao conteúdo
  • Cadastre-se

PHP Erro na quantidade de registros retornados em um select Mysql / PHP


Posts recomendados

<?php
$conn = new Conexao();
//aqui busco a lista das categorias com seus ID no banco de dados
$sql =("SELECT * FROM filmes_cat WHERE status='ativo' AND id!='2' ORDER BY nome ASC");
$gravar = FALSE;
$categorias = $conn->Executar($sql,$gravar);
?>
<ul id="categorias">
<?php
	foreach($categorias as $categ):  //echo"<br><br><b>".$categ['id']."</b><br><br>";
  		//aqui busco a quantidade de filmes por categoria no banco de dados
		$sql =("SELECT * FROM filmes WHERE status='ativo' AND categoria =".$categ['id']); 
		$gravar = FALSE;            
		$filmes = $conn->Executar($sql,$gravar);
        	$totalFilmes = count($filmes);
		?>
  
		<li class="item_normal">
          <a href="<?php echo $_SERVER['REQUEST_URI']; ?>?url=aplicativo/visao/categoria&categoria=<?php echo $categ['nome'].'&id='.$categ['id']; ?>">
              <div class="banner" style="background-image: url(<?php echo $_SERVER['REQUEST_URI']; ?>painel/uplouds/categorias/<?php echo $categ['imagem']; ?>);"></div>
              <div class="efeito-hover">
                  <div id="dados">
                      <div id="titulo"><h5><?php echo $categ['nome']; ?></h5></div>
                      <div id="total"><?php echo $totalFilmes; ?> <?php echo $categ['id'] == 1 ? 'Animes' : 'Filmes'; ?></div>
                  </div>
              </div>
          </a>
		</li>
		<?php
        unset($totalFilmes);
        unset($filmes);
        unset($sql);
   	endforeach;
    unset($conn);
    ?>
</ul>

essa lista de categorias é criada dentro do foreach, e é pra ser informado a quantidade de filmes  em  cada categoria(iteração do foreach) como na imagem anexada. mas não to conseguindo buscar os valores corretos.

não consigo identificar onde estou errando

cinetelaCategorias.png

Link para o comentário
Compartilhar em outros sites

Um problema possível é que o método Executar da classe Conexao pode estar retornando um resultado diferente do esperado ou mesmo nenhum resultado, o que pode afetar a contagem dos filmes. Certifique-se de que a consulta SQL esteja correta e esteja retornando o resultado esperado.

Outra possibilidade é que o uso da função count pode não estar funcionando corretamente no array $filmes. Verifique se esse array está sendo preenchido corretamente e se o tipo de dados é um array.

Uma sugestão para depurar esse problema é verificar o conteúdo das variáveis $filmes e $totalFilmes em cada iteração do loop. Isso pode ajudar a identificar onde está o erro.

Espero que isso ajude!

Link para o comentário
Compartilhar em outros sites

@Roberto Marcos Acho uma boa você optar pro fazer uma subquery para não ter que fazer uma nova chamada, só para pegar o total de filmes para cada categoria, sem contar que nela você só precisa pegar o campo id e contar, e não retorna todos os dados e pegar o numero de linha encontradas na sua tabela.

 

Fiz uns ajustes aqui:

<?php
$sql =<<<SQL
    SELECT 
        *,
        (
            SELECT COUNT(f.id)
            FROM filmes f 
            WHERE status = 'ativo' AND f.categoria = fc.id
        ) as total_categoria
    FROM filmes_cat fc
    WHERE status = 'ativo' AND id != '2' 
    ORDER BY nome ASC
SQL;

$categorias = (new Conexao())->Executar($sql, false);
?>
<ul id="categorias">
<?php foreach($categorias as $categ): ?>
    <?php
        $urlImage      = $_SERVER['REQUEST_URI'] . 'painel/uplouds/categorias/' . $categ['imagem'];
        $urlParameters = $_SERVER['REQUEST_URI'] . '?' . http_build_query([
            "url"       => 'aplicativo/visao/categoria',
            "categoria" => $categ['nome'],
            "id"        => $categ['id']
        ]);
    ?>
	<li class="item_normal">
        <a href="<?= $urlParameters ?>" title="<?= $categ['nome'] ?>">
            <div 
                class="banner" 
                style="background-image: url(<?= $urlImage ?>);"
            ></div>
            <div class="efeito-hover">
                <div id="dados">
                    <div id="titulo">
                        <h5><?= $categ['nome']; ?></h5>
                    </div>
                    <div id="total">
                        <?= $totalFilmes; ?> <?= $categ['id'] == 1 ? 'Animes' : 'Filmes'; ?>
                    </div>
                </div>
            </div>
        </a>
	</li>
<?php endforeach; ?>    
</ul>

 

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!