Listagem de categorias com seus produtos
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
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
Curtidas 0
Melhor post
Ronaldo Lanhellas
09/07/2014
Mostre como você está tentando fazer no MySQL ou no PHP para que eu possa tentar lhe ajudar.
GOSTEI 1
Mais Respostas
Wellington Silva
09/07/2014
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 ); } }
GOSTEI 0
Ronaldo Lanhellas
09/07/2014
Não estou conseguindo ver onde você está "mostrando" os dados para o usuário. Creio que lá seja o ponto onde queremos chegar.
GOSTEI 1
Wellington Silva
09/07/2014
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..
a forma do resultado para usuário seria algo parecido com isso qe estou fazendo..
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..
GOSTEI 0
Ronaldo Lanhellas
09/07/2014
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:
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 ?
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 ?
GOSTEI 1
Wellington Silva
09/07/2014
se eu entendi bem seria o mesmo que:
porem ele fica do mesmo jeito, não muda nada colocando a clausula ou não.
<?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.
GOSTEI 0
Ronaldo Lanhellas
09/07/2014
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 } }?>
GOSTEI 1
Ronaldo Lanhellas
09/07/2014
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 } }?>
GOSTEI 1
Wellington Silva
09/07/2014
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.
valeu pessoal, vocês aqui são rapidos ajudou muito mesmo.
GOSTEI 0
Ronaldo Lanhellas
09/07/2014
Mas o problema era a troca do $groups para $group ? Ou era outra coisa ?
GOSTEI 1
Wellington Silva
09/07/2014
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:
que no caso estava:
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}
GOSTEI 0
Ronaldo Lanhellas
09/07/2014
Que bom que funcionou.
GOSTEI 1
William
09/07/2014
Finalizando tópico!
GOSTEI 0