Ir para conteúdo

Arquivado

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

viniciussvl

Como exibir todas as areas de uma determinada categoria?

Recommended Posts

Galera estou precisando muito de ajuda, é o seguinte eu quero exibir da seguinte forma:

xlNGwNy.png

Só que meu loop não tá exibindo assim, ele exibe desse jeito

IgYoXG2.jpgA categoria Em Geral tem duas áreas, e não tá exibindo da forma que eu gostaria... como eu posso arrumar isso?

<?php
include("inc/header.php");
$sqlCategorias = mysqli_query($conexao, "SELECT nomeCategoria, nomeArea FROM area INNER JOIN categoria ON area.idCategoria = categoria.idCategoria");
$sqlWidgets = mysqli_query($conexao, "SELECT tituloWidget, conteudoWidget FROM widget");
?>

<div class="container">
    <section class="categorias col-md-9">

        <?php
            while($row = mysqli_fetch_array($sqlCategorias)):
                $nomeCategoria = $row['nomeCategoria'];
                $nomeArea = utf8_encode($row['nomeArea']);
                
        ?>
        <article>
            <h2><?php echo $nomeCategoria; ?></h2>
            <ul>
                <li><a href="#"><?php echo $nomeArea;?></a></li>
            </ul>
        </article>
        <?php   
            endwhile;
        ?>
    </section>
    <aside class="widgets col-md-3">
        <?php
            while($row = mysqli_fetch_array($sqlWidgets)):
                $tituloWidget = utf8_encode($row['tituloWidget']); 
                $conteudoWidget = utf8_encode($row['conteudoWidget']);
            
        ?>
        <div class="widget">
            <h2><?php echo $tituloWidget; ?></h2>
            <p><?php echo $conteudoWidget; ?></p>
        </div>
        <?php
            endwhile;
        ?>
    </aside>
</div>


<?php
include("inc/footer.php");
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

É um exemplo bem cagado, mas só pra você entender a ideia!

foreach($categorias AS $categoria){
  echo $categoria->titulo;
  // roda uma sql procurando as categorias com "pai" igual à categoria a cima, algo assim:
  $query = "SELECT * FROM tbl_categorias WHERE pai = {$categoria->id}";
  foreach($resultado_de_query AS $filha){
    echo $filha-nome;
  }
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Usando o foreach resolve meu problema?

Então, é que eu sou acostumado a usar foreach, mas a ideia é a seguinte:

Você tem seu loop (while, for, foreach) das categorias "pai", chamemos assim as categorias principais. No seu banco de dados você precisa de um campo que relacione categoria x com y, eu costumo colocar o nome "pai".

Ou seja, se a categoria for uma categoria "principal, ou pai" você seta o campo como 0, se for uma filha, seta o campo com o id do pai dela. Feito isto, na hora do loop, você busca primeiro as categorias com pai = 0, ou seja, as principais, e dentro de cada principal (ou seja, dentro ainda do loop), você faz uma consulta pegando todas as "filhas" com id do respectivo "pai".

Agora releia o código do meu comentário a cima que eu acho que você vai conseguir entender!

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.