Listagem de categorias com seus produtos

09/07/2014

0

PHP

Olá,

Preciso de uma luz.
Estou tentando listar as categorias e junto delas todos produtos que estão vinculado a mesma..

Por exemplo:

Categoria 1
PRODUTO1
PRODUTO2
PRODUTO3
Categoria 2
PRODUTO4
PRODUTO5

de todas as formas que tento, eu só consigo listar as categorias corretamente, os produtos repetem da "categoria 1" para "categoria 2"

estou utilizando PHP e MySQL
Wellington Silva

Wellington Silva

Responder

Post mais votado

09/07/2014

Mostre como você está tentando fazer no MySQL ou no PHP para que eu possa tentar lhe ajudar.

Ronaldo Lanhellas

Ronaldo Lanhellas
Responder

Mais Posts

09/07/2014

Wellington Silva

esqueci de citar estou utilizando o codeigniter tambem.

// Pega todos as Categorias (Grupos)
$objGroup = $this->m_products->getGroups();
        
        foreach($objGroup as $groups) {
            
            $data['GROUP'][] = array(
                'GROUP_CODE' => $groups->product_group_id,
                'GROUP_NAME' => $groups->name
            );
            
            // Pega os produtos cujo a categoria seja a id passada como parametro
            $objProducts = $this->m_products->getProductAsGroup($groups->product_group_id);
            
            
            foreach($objProducts as $products) {

                // Coloco dentro de um array para visualizar no layout
                $data['PRODUCTS'][] = array(
                    'PRODUCT_CODE' => $products->product_id,
                    'PRODUCT_NAME' => $products->name
                );
            }
            
        }
Responder

09/07/2014

Ronaldo Lanhellas

Não estou conseguindo ver onde você está "mostrando" os dados para o usuário. Creio que lá seja o ponto onde queremos chegar.
Responder

09/07/2014

Wellington Silva

fica meio dificil de explicar pois estou utilizando o codeigniter, assim sendo utilizo o recurso de layout dele..
mais tentarei lhe explicar da melhor forma com código..

<?php foreach($data['GROUP'] as $group) {?>
                <div class="panel panel-default">
                    <div class="panel-heading">
                        <h4 class="panel-title"><?php echo $group['name']?></h4>
                    </div>
                    <div class="panel-collapse collapse">
                        <div class="panel-body">
                            <?php foreach($data['PRODUCTS'] as $products) {?>
                                 <li><?php echo $products['name']?></li>
                            <?php }?>
                        </div>
                    </div>
                </div>
<?php }?>


a forma do resultado para usuário seria algo parecido com isso qe estou fazendo..
Responder

09/07/2014

Ronaldo Lanhellas

Bom, o problema é que você está iterando o mesmo vetor de produtos para os 2 grupos, sem nenhum filtro, e nesse caso ele vai mesmo repetir os produtos para cada categoria.

No trecho abaixo:

  <?php foreach($data['PRODUCTS'] as $products) {?>
                                 <li><?php echo $products['name']?></li>
                            <?php }?>


Você tem que de alguma forma checar se o $products atual faz parte do $group atual, se isso for verdade então você mostra o produto. Entendeu ?
Responder

09/07/2014

Wellington Silva

se eu entendi bem seria o mesmo que:
<?php foreach($data['PRODUCTS'] as $products) {
    if($groups->product_group_id == $products->product_group_id) { ?>
        <li><?php echo $products['name'] ?></li>
<?php } }?>


porem ele fica do mesmo jeito, não muda nada colocando a clausula ou não.
Responder

09/07/2014

Ronaldo Lanhellas

Acho que o certo seria $group e não $groups, pois você está comparando o item atual do foreach do grupo com o foreach do produto, veja:

<?php foreach($data['PRODUCTS'] as $products) {
    if($groups->product_group_id == $products->product_group_id) { ?>
        <li><?php echo $products['name'] ?></li>
<?php } }?>
Responder

09/07/2014

Ronaldo Lanhellas

Corrigindo, o código seria:

<?php foreach($data['PRODUCTS'] as $products) {
    if($group->product_group_id == $products->product_group_id) { ?>
        <li><?php echo $products['name'] ?></li>
<?php } }?>
Responder

09/07/2014

Wellington Silva

isso mesmo, encontrei meu problema.. ainda não tentei refazer tudo no modo de trabalho do codeigniter, porem refiz toda essa parte na unha, e problema resolvido..
valeu pessoal, vocês aqui são rapidos ajudou muito mesmo.
Responder

09/07/2014

Ronaldo Lanhellas

Mas o problema era a troca do $groups para $group ? Ou era outra coisa ?
Responder

09/07/2014

Wellington Silva

o problema foi o seguinte, eu estavo utilizando a estrutura do codeigniter de layouts.. eu estava escrevendo tudo no controller para exibir na view..
oque eu fiz foi escrever o trecho na view essa parte:
<?php foreach($data['PRODUCTS'] as $products) {
    if($group->product_group_id == $products->product_group_id) { ?>
        <li><?php echo $products['name'] ?></li>
<?php } }?>


que no caso estava:

    <li></li>
{/PRODUCTS}
Responder

09/07/2014

Ronaldo Lanhellas

Que bom que funcionou.
Responder

09/07/2014

William

Finalizando tópico!
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar