Array
(
    [0] => stdClass Object
        (
            [Votos_Balanceados] => 1
            [id] => 485027
            [titulo] => Listagem de categorias com seus produtos
            [dataCadastro] => DateTime Object
                (
                    [date] => 2014-07-09 16:38:45
                    [timezone_type] => 3
                    [timezone] => America/Sao_Paulo
                )

            [isFirstPost] => -1
            [idUsuario] => 244531
            [status] => A
            [isExample] => 
            [NomeUsuario] => Ronaldo Lanhellas
            [Apelido] => 
            [Foto] => 244531_20150129162200.jpg
            [Conteudo] => Mostre como você está tentando fazer no MySQL ou no PHP para que eu possa tentar lhe ajudar.
        )

)

Listagem de categorias com seus produtos

PHP
Wellington Silva
   - 09 jul 2014

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

Post mais votado

Ronaldo Lanhellas
   - 09 jul 2014

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

1
|
0

Wellington Silva
   - 09 jul 2014

esqueci de citar estou utilizando o codeigniter tambem.

#Código

// 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
                );
            }
            
        }

0
|
0

Ronaldo Lanhellas
   - 09 jul 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.

1
|
0

Wellington Silva
   - 09 jul 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..

#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..

0
|
0

Ronaldo Lanhellas
   - 09 jul 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:

#Código

  <?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 ?

1
|
0

Wellington Silva
   - 09 jul 2014

se eu entendi bem seria o mesmo que:
#Código

<?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.

0
|
0

Ronaldo Lanhellas
   - 09 jul 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:

#Código

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

1
|
0

Ronaldo Lanhellas
   - 09 jul 2014

Corrigindo, o código seria:

#Código

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

1
|
0

Wellington Silva
   - 09 jul 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.

0
|
0

Ronaldo Lanhellas
   - 09 jul 2014

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

1
|
0

Wellington Silva
   - 09 jul 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:
#Código

<?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:
#Código
{PRODUCTS}
    <li>{PRODUCT_NAME}</li>
{/PRODUCTS}

0
|
0

Ronaldo Lanhellas
   - 09 jul 2014

Que bom que funcionou.

1
|
0

William (devwilliam)
   - 09 jul 2014

Finalizando tópico!

0
|
0