Ir para conteúdo

Arquivado

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

luiscarlos5046

Categoria, listar subcategorias só que tenham produtos cadastrados

Recommended Posts

Olá Galera!
Alguém pode me dar um help?
Nesta Query eu listo todos os subgrupos(subcategorias) de um grupo(categoria), mas gostaria de não exibir os subgrupos vazios.... alguém tem algum exemplo pra me passar?

 

SELECT g.*, sg.id AS idsg, sg.subgrupo
FROM grupo g, subgrupo sg, produtos p
WHERE sg.id = p.id_subgrupo
AND sg.id_grupo = 1
GROUP BY sg.id

ou esse

 

SELECT grupo.*, subgrupo.id AS idsg, subgrupo.subgrupo
FROM grupo
INNER JOIN subgrupo ON subgrupo.id_grupo = grupo.id	
WHERE grupo.id = 1

Ambos funcionam da mesma forma, mas traz uma subcategoria cuja não existem produtos cadastrados (Vazios)

 

Alguém pode me dar uma luz de como fazer isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por bruno SALVIATI
      Olá estou precisando de ajuda com subcategorias, eu tenho um banco de dados que tem tabelas abaixo :

       
      acima mostra a tabela de categorias
       
      abaixo a de produtos
       

       
      posto isso eu no meu index retorno as categorias usando um foreach, solicitando que tudo que for categoria seja listado ou seja eu nao escrevo o nome de cada uma eu faço o banco fazer uma lista no meu layout mostrando todas as categorias que eu tenho, e cada uma puxa os produtos mas eu preciso criar uma subcategorias por exempplo

      marcar, como honda, fiat , renoaut por exemplo, 
      ai estas sao as categorias primarias 
      quando listar e alguem clicar ou passar o mouse sobre a Honda por exemplo
      Tem que aparecer as subs por exemplo
       
      carros, peças, cabeçote , pino, seja la o que for, estou dando um exemplo que tem bastante subcategorias, preciso pegar este bando e fazer ele me trazer subs atraves das categorias pensei em usar o ID da tabela um ou a REFERENCIA da tabela 2 mas infelizmente ainda estou estudando e nao faço a menor ideia de como fazer isso vou deixar meu codigo foreach aqui embaixo :


       
       <div class="col-md-6">
                                <div class="list-group">
                                  <div class="header-search">
                                     <form method="POST">
                                           <div class="dropdown">
                                                <select class="dropbtn" ><option align="center" hidden> <i class="glyphicon glyphicon-list">Categorias</i></option></select>
                                                <div class="dropdown-content">
                                               <a href="{$PAG_PRODUTOS}">Todos</a> 
                                                   
                                                {foreach from=$CATEGORIAS item=C}
                                                 <a href=" {$C.cate_link}">{$C.cate_nome}</a> 
                                                {/foreach}
                                                
                                              
                                          </div>
                                         </div>
                                         <form method="POST">
                                        <input name="txt_buscar" class="input" placeholder="Digite para buscar">
                                        <button class="search-btn">Buscar</button>
                                        </form>
                                      </form>
                                  </div> 
                              </div> 
                            </div> 


      e este é o PHP da categorias se precisar do de produtos me avise, no momento esta funcionando perfeitaente o que estou pedindo é ajuda para inserir subcategorias utilizando o que tenho feito

      PHP

       
      <?php 
      Class Categorias extends Conexao{
          private $cate_id, $cate_nome, $cate_slug;
          

          function __construct(){
              parent::__construct();
          }
          function GetCategorias(){
              //query para buscar os produtos de uma categoria especifica.
              $query = "SELECT * FROM {$this->prefix}categorias";
              $this->ExecuteSQL($query);
              $this->GetLista();
              
          }
          private function GetLista(){
              $i = 1;
              while($lista = $this->ListarDados()):
              $this->itens[$i] = array(
                   'cate_id' => $lista['cate_id'],
                   'cate_nome'  => $lista['cate_nome'] ,  
                   'cate_slug'  => $lista['cate_slug'] ,  
                   'cate_link'  => Rotas::pag_Produtos(). '/' .$lista['cate_id'] . '/' . $lista['cate_slug']  , 
                  
                  'cate_link_adm'  => Rotas::pag_ProdutosADM(). '/' .$lista['cate_id'] . '/' . $lista['cate_slug']  , 
                          );
              $i++;
              endwhile;
          }
          function Inserir($cate_nome){
              
              // trato os campos
              $this->setCate_nome($cate_nome);
              $this->setCate_slug($cate_nome);

              
              // monto a SQL
              $query = " INSERT INTO {$this->prefix}categorias (cate_nome, cate_slug )";
              $query.= " VALUES (:cate_nome, :cate_slug )";
              // passo so parametros
              $params = array(':cate_nome' => $this->getCate_nome(),
                              ':cate_slug' => $this->getCate_slug(),
                            
                  );
              // executo a minha SQL
                  if($this->ExecuteSQL($query, $params)):
                      return TRUE;
                      
                  else:
                      return FALSE;
                      
                  endif;
              
              
          }

          function Editar($cate_id,$cate_nome){
              
              // trato os campos
              $this->setCate_nome($cate_nome);
              $this->setCate_slug($cate_nome);
              
              // monto a SQL
              $query = " UPDATE {$this->prefix}categorias ";
              $query.= " SET cate_nome = :cate_nome, cate_slug = :cate_slug ";
              $query.= " WHERE cate_id = :cate_id ";
              // passo so parametros
              $params = array(':cate_nome' => $this->getCate_nome(),
                              ':cate_slug' => $this->getCate_slug(),
                              ':cate_id'   => (int)$cate_id,
                  );
              // executo a minha SQL
                  if($this->ExecuteSQL($query, $params)):
                      return TRUE;
                      
                  else:
                      return FALSE;
                      
                  endif;
              
              
          }
           function Apagar($cate_id){
              
                // verifico se  tenho itens antes de apagar a categoria
                $pro = new Produtos();
                $pro->GetProdutosCateID($cate_id);
                
              if( $pro->TotalDados() > 0):
                    echo '<div class="alert alert-danger" > Esta categoria tem: ';
                    echo $pro->TotalDados();
                    echo ' produtos. Não pode ser apagada, para apagar precisa primeiro apagar os produtos dela </div>';
           
                    // se nao tiver produtos nela  eu apago 
               else:
                  
                       // monto a SQL
              $query = " DELETE FROM {$this->prefix}categorias";
              $query.= " WHERE cate_id = :id";
              
              // passo os parametros
              $params = array(':id' => (int)$cate_id);
              // executo a SQL
          
               if($this->ExecuteSQL($query, $params)):
                      return TRUE;
                      
                  else:
                      return FALSE;
                      
                  endif;
              
              endif;
           
              
          }
          
          //MÉTODOS GET
           function getCate_nome() {
              return $this->cate_nome;
          }
          function getCate_slug() {
              return $this->cate_slug;
          }
          //MÉTODOS SET
          function setCate_nome($cate_nome) {
             
              $this->cate_nome = filter_var($cate_nome, FILTER_SANITIZE_STRING);
          }
          function setCate_slug($cate_slug) {
             
              
              $this->cate_slug = Sistema::GetSlug($cate_slug);
          }
      }
       ?>
       
    • Por gust.php
      Prezados, boa noite.
       
      Nunca fiz isso e estou dúvidas.
       
      Tenho as tabelas CATEGORIAS e SUBCATEGORIAS. Os cadastros e relacionamentos estão funcionando perfeitamente, tudo ok aqui.
      Tenho também a tabela PRODUTOS.
       
      Digamos que eu tenha produtos que fazem parte de categorias que não tem subcategoria, e tenho produtos que fazem parte de subcategorias de alguma categoria.
       
      Como fazer o relacionamento desses produtos?
       
      Vou relacionar a tabela PRODUTOS com CATEGORIAS e SUBCATEGORIAS ?
      A dúvida surgiu pois um produto pode fazer parte de uma categoria que não tem subcategoria, mas posso ter também produtos que fazem parte de subcategorias de uma categoria.
      E qual a cardinalidade desse relacionamento?
       
      Ja vi gente fazendo o relacionamento só com SUBCATEGORIA, mas e se não existir subcategoria????
       
      produto many to many categoria
      produto many to many subcategoria
       
      produto
      id | produto 
       
      prod_cat
      cat_id | prod_id
       
      categoria
      id | categoria 
       
      subcategoria
      id | categoria 
       
      prod_subcat
      subcat_id | prod_id
       
      Como resolver isso de um forma correta?
    • Por L@nder
      Olá pessoal
       
      Estou quebrando a cabeça para fazer com que o php liste as categorias e sub-categorias.do menu da página que estou fazendo.
      A estrutura do menu deve ser esta
      ============================
      Categoria 1
      Subcategoria Subcategoria Subcategoria Categoria 2
      Subcategoria Subcategoria Subcategoria Categoria 3
      Subcategoria Subcategoria Subcategoria ==============================
       
      Eu fiz a consulta e fiz com que as categorias sejam listadas, porém não estou conseguindo fazer listar abaixo de cada categoria suas respectivas sub-categorias.
       
      Segue abaixo o código que estou usando para listar as categorias.
       
      <?php
      $sql = mysqli_query($conn, "SELECT * FROM categoria ORDER BY categoria ASC");
      while($dados=mysqli_fetch_array($sql))
      {
          echo '<li><span class="opener">' . $dados['categoria'] . '</span><ul>';
          echo '<li><a href="#">subcategoria</a></li>'; //E justamente nesta linha que preciso fazer aparecer as subcategorias que estão na tebela "sub_categoria"
          echo '</ul></li>';
      }
      ?> 
       
      Se alguém puder me ajudar ficarei agradecido.
    • Por Paulo Dos Reis
      Bom tarde.
      Estou com dificuldade em inserir um conteúdo dentro de uma subcategoria ou pagina de lista de produtos em minha loja.(somente
       html)
      por exemplo eu tenho uma categoria (A ) e tenho duas subcategorias (B) E (C) dentro de (A). Eu consegui colocar o conteúdo dentro das subcategorias (B) e (C), mas quero o conteúdo só dentro da subcategoria (B). O codigo que eu cheguei a isso é:
       
      {{#list_page}} ------->Tag de abertura da página de listagem de produtos
      {{#each categories}}----->Itera sobre as categorias.
      {{#each children}} ----> Itera sobre as subcategorias.
      {{#if is_current}} ------->Renderiza o conteúdo do bloco se a página da categoria ou subcategoria estiver sendo exibida.
      <p>conteudo aqui</p>
      {{/if}}
      {{/each}}
      {{/each}}
      {{/list_page}}
       
      Tenho quase certeza que preciso especificar a url da subcategoria mas não encontro uma maneira de fazer isso. como??.
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.