Ir para conteúdo
bruno SALVIATI

Subcategorias

Recommended Posts

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

1899235031_ft1.thumb.PNG.fe8b7db2b511de8cb73c0d7738c0a478.PNG

 

acima mostra a tabela de categorias

 

abaixo a de produtos

 

f2.PNG.80ec2ab85c6ef37bc7bd5098aec522b4.PNG

 

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

}

 ?>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • 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 luiscarlos5046
      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?
    • 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??.
    • Por Patrick Ramiro
      Tenho 2 Tabelas (categorias) e (subcategorias) e uma outra que chama Produtos , aguem tem algum tutorial de como devo relacionar essas 3 tabelas e de como montar esse sistema em asp ?
    • Por douglasjoanes
      Boa noite pessoal!
       
      Bom ... não sou novo aqui no fórum mas também não sou ativo. Criei esta conta a um tempo atrás e de lá pra cá deixei de lado a programação. Como disse volto hoje na condição de iniciante e gostaria de pedir uma ajuda a vocês.
       
      Estou desenvolvendo um site de guia de ofertas e não gostaria de usar nenhum tipo de CMS, a primeira dúvida que surgiu foi a seguinte:
       
      Com essa modelagem de tabela.
       
      CAT_OFERTAS
      [cat_id] => 1 [cat_nome] => Moda e Acessórios [cat_url] => moda-e-acessorios [id_pai] => 0
      [cat_id] => 2 [cat_nome] => Masculino [cat_url] => masculino [id_pai] => 1
      [cat_id] => 3 [cat_nome] => Camisetas [cat_url] => camisetas [id_pai] => 2
       
      OFERTAS
      [ofe_id] => 1 [ofe_titulo] => Camiseta Cavalera Estampada [ofe_categoria] => ???
       
      Como eu poderia chegar por exemplo nesse tipo de url?
      Url 1 -> www.meusite.com.br/moda-e-acessorios/masculino/camisetas/camiseta-cavalera-estampada
       
      Como as subcategorias são infinitas, se talvez não existisse a subcategoria "Masculino"
      Url 2 -> www.meusite.com.br/moda-e-acessorios/camisetas/camiseta-cavalera-estampada
       
      Não tenho a mínima ideia de como fazer a url funcionar com esse tipo de modelagem?!
      Na hora da listagem de categorias a pessoa poderia clicar em "Moda e Acessórios" e listar a tal "Camiseta Cavalera Estampada" ou por exemplo clicar em "Masculino" e listar novamente a tal "Camiseta Cavalera Estampada" e assim por diante.
       
      Minha cabeça está dando um nó ... basicamente 3 níveis de categorias pra mim seriam suficientes, mas pode ser que no futuro eu precise ampliar esse número, por isso pensei nesse tipo de modelagem.
       
      Alguém teria um exemplo ou um estudo que me ajudasse a resolver esse meu problema?
       
       
×

Informação importante

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