Arquivado
Este tópico foi arquivado e está fechado para novas respostas.
Ajuda com categorias e subcategorias infinitas
Por
douglasjoanes, em PHP
Recommended Posts
-
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 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?
-