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

Página de categoria


jamiel

Pergunta

É uma página própria para listar postagens de uma determinada categoria. Há uma  tabela post  e outra categoria

No começo da página eu chamo no nome da categoria. O código:

             <?php
              $id = $_GET["id"]; //Quando clico na origem (http://localhost/cftv/single-categoria.php?id=2)
              $sql = "SELECT cat_nome FROM categoria WHERE cat_id = ".$id; // Então, requisito o nome da categoria com base no id vindo do GET
              $qry = @mysqli_query($conexao, $sql);
              $linha = mysqli_fetch_array($qry);

              echo "<h1>".$linha["cat_nome"]."</h1>"; // Até aqui, tudo certo. Aparece sempre o nome da categoria que eu cliquei. Se fosse na outra categoria (Ex: 3), outro nome apareceria.
              
             ?>

 

Agora, eu pretendo lista apenas postagens desta categoria. Aí, deu um branco e eu não estou conseguindo raciocinar sobre a solução:

<?php
                 
                  $id  = $_GET["id"];
                 
                  $sql = "SELECT * FROM post p, categoria c WHERE p.cat_id = ".$id;
                  $qry = @mysqli_query($conexao, $sql);
                  while ($linha = @mysqli_fetch_array($qry)) {

                ?>

               <a href='single-post.php?post_id=<?php echo $linha["post_id"] ?>'><h2><?php echo $linha["post_title"] ?></h2></a>
               <br>
               <img src='<?php echo $linha["post_img"];?>' class="img-responsive" style="height: 200px;" > 
               <br>

               <p>
               <?php $text = $linha["post_msg"]; echo substr($text, 0, 300) . '...'; ?>
               </p>

               <p>
               <span class="fa fa-clock-o" style="color: #0098da;"></span><strong> <?php echo $linha["post_data"] ?></strong> <br>
               <span class="fa fa-file-text-o" style="color: #0098da;"></span><strong> <?php echo $linha["post_tags"] ?></strong> <br>
               <span class="fa fa-list-ul" style="color: #0098da;"></span><strong> <?php echo $linha["cat_nome"] ?></strong> 
               </p>

               <p><a href="single-post.php?post_id=<?php echo $linha["post_id"] ?>" class="btn btn-default default-custom">LER MAIS</a></p>

               <br>

                <?php } ?>
                
               
                    <?php echo $paginacao; ?>

 

Do jeito que está o segundo código (parei aí...), aparece uma postagem dessa categoria. O problema é que a postagem aparece infinitamente .... 

Agradeço desde já qualquer ajuda...

 

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Acredito que o problema está na sua consulta, você precisa fazer um JOIN, algo assim:

// você deve filtrar ou converter esse valor para evitar sql injection
$id  = (int)$_GET["id"];

$sql = "
	SELECT
			*
		FROM post p
		INNER JOIN categoria c ON c.cat_id = p.cat_id
		WHERE p.cat_id = $id
";
$qry = @mysqli_query($conexao, $sql);

 

Link para o comentário
Compartilhar em outros sites

  • 0
4 horas atrás, Stoma disse:

Acredito que o problema está na sua consulta, você precisa fazer um JOIN, algo assim:


// você deve filtrar ou converter esse valor para evitar sql injection
$id  = (int)$_GET["id"];

$sql = "
	SELECT
			*
		FROM post p
		INNER JOIN categoria c ON c.cat_id = p.cat_id
		WHERE p.cat_id = $id
";
$qry = @mysqli_query($conexao, $sql);

 

Estou terminando programação nível 01. Mas, pratico muito pouco. 

E sobre essa sua resolução: ficou show! Tá funcionando tranquilamente aqui. 

Lembro de ter estudado JOIN. Mas, sem praticar rsrsrs
Não entendi esse "ON" ... 

De qualquer forma, muito obrigado...

Link para o comentário
Compartilhar em outros sites

  • 0

Praticar é muito importante na área da programação, porque nem sempre o que se vê num livro/vídeo dá certo, além de que às vezes você quer mudar uma coisinha no funcionamento e aí é preciso mudar bastante a lógica do código. Mas continue praticando, com o tempo vai ficando mais "fácil" rs

O JOIN é muito usado nas consultas ao banco de dados, e serve para juntar dados de diferentes tabelas em uma mesma "linha" (ex, tabela post e tabela categoria). E o ON é a cláusula que indica qual coluna de uma tabela faz referência à outra (no seu caso, cat_id de post faz referência à cat_id de categoria).

Caso queira entender melhor, dá uma lida neste artigo:

http://www.devmedia.com.br/sql-join-entenda-como-funciona-o-retorno-dos-dados/31006

Abraço

Link para o comentário
Compartilhar em outros sites

  • 0
Em 24/05/2016 at 17:50, Stoma disse:

Praticar é muito importante na área da programação, porque nem sempre o que se vê num livro/vídeo dá certo, além de que às vezes você quer mudar uma coisinha no funcionamento e aí é preciso mudar bastante a lógica do código. Mas continue praticando, com o tempo vai ficando mais "fácil" rs

O JOIN é muito usado nas consultas ao banco de dados, e serve para juntar dados de diferentes tabelas em uma mesma "linha" (ex, tabela post e tabela categoria). E o ON é a cláusula que indica qual coluna de uma tabela faz referência à outra (no seu caso, cat_id de post faz referência à cat_id de categoria).

Caso queira entender melhor, dá uma lida neste artigo:

http://www.devmedia.com.br/sql-join-entenda-como-funciona-o-retorno-dos-dados/31006

Abraço

Muito obrigado!

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