Ir para conteúdo
DeanPage

Cadastrando produto. Na categoria e na subcategoria.

Recommended Posts

O usuário tem uma tela, onde ele realiza o cadastro de um produto.

 

Ele seleciona uma categoria e uma subcategoria em um combobox (os value desses <option> são os mesmo já cadastrados no bd)

 

No Banco de dados tenho 3 tabelas:

 

- Categorias (previamente preenchida com 10 categorias)

cat_id, cat_mome

 

- Subcategorias (previamente preenchida com x sub-categorias)

sub_id, sub_nome, sub_id_cat ( sub_id_cat, previamente preenchido com as id das categorias

 

- Produtos

prod_id, prod_nome, prod_desc, prod_img, prod_id_cat, prod_i_subcat (prod_id auto incrementa)

 

 

Minha dúvida é como eu levaria isso para o banco de forma relacionada?

 

 

Penso que na página que realizará a conexão e a inserção:

 

- Os valores do combobox (categoria e subcategoria) estariam em nas suas variaveis;

- Correria o banco comparando esses valores com as ID nas tabela categorias e subcategorias;

- Encontrando armazenaria em outra variavel;

- Iria inserir na tabela PRODUDO na categoria x, na subcategoria x...

 

Não sei se essa lógica faz muito sentido, visto que não achei nada de comandos para fazer esse INSERT

 

Bom, seria essa minha questão.... ...se alguém compreendeu e puder dar uma luz. (está em pdo a execussão)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Minha opinião é que a um alto acoplamento das tabelas, uma tabela de produtos necessariamente não há a necessidade de ter campos da categoria e subcategoria. Neste caso é melhor ter uma associação ou seja uma tabela separada, onde armazenada o ID do Produto e da Categoria, e a mesma coisa para as subcategorias. Ou somente uma única tabela para as categorias, onde as subcategorias teria um campo para armazenar a ID da categoria principal.

Exemplo Basico

shcdt3B.png

Com associação você deixa seu db desacoplado, e seu produto pode ter quantas categorias quiser, use joins para o select.

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 Caio_Lourençon
      Olá estou desenvolvendo um projeto utilizando a extensão MySQLi, e nisso aproveitando para utilizar algumas funções orientada a objeto! Gostaria de tirar umas dúvidas em relação a listagem de dados, são duas perguntas:   1) Utilizar a função foreach() ao invés de um while() com a função fetch_array() dentro, tem uma listagem mais rápida ou mais lenta? Pois com ambas consigo trazer os dados, No momento estou utilizando a foreach por ser mais rápida de se digitar.
      2) Utilizo muitas listagens de tabelas diferentes na mesma página sempre chamando um novo SELECT, seria melhor criar uma função com um SELECT dentro para eu sempre reutiliza-lá ou não iria mudar muita coisa em questão de desempenho?
       
      Agradeço qualquer informação.
    • Por gersonab
      Procuro uma revenda de hospedagem confiável, ja adianto que uolhost e locaweb estão fora dos planos.
    • Por Jefferson andre
      Ola, estou criando um contador de acessos diario mas nao funciona, a tabela tem o campo data no formato date e o campo contador int(10)
       
      A ideia eh verificar a data e se nao existir incluir na tabela, se existir adicionar ao contador
       
      Parece que o erro esta no formato da data, nem manualmente consigo incluir na tabela via localhost ou na hospedagem da google
       
      Agradeço qualquer ajuda
       
      <?php // fazendo uma conexão com o banco de dados include("conexao.php"); // grava a data atual em uma variavel date_default_timezone_set('America/Sao_Paulo'); $date = date('d-m-Y'); //$sql = "SELECT codigo FROM contador"; $resultado = $arquivo->query("SELECT data,contador FROM contador_diario WHERE data = '$date'"); if (mysqli_num_rows($resultado)== true){ // registro ja existe } else { // resultado nao encontrado entao inserir $sql = "INSERT INTO contador_diario ('data', 'contador') VALUES ('$date', '1')"; if ($arquivo->query($sql) == TRUE) { echo "Data cadastrada com sucesso"; } else { echo "Erro: " . $sql . "<br>" . $arquivo->error; } } // refaz a pesquisa para registrar o contador $resultado = $arquivo->query("SELECT data,contador FROM contador_diario WHERE data = '$date'"); // igualar a array a uma variavel $linha=mysqli_fetch_array($resultado); $cod_2 = $linha["contador"]+1; // lista a variavel //echo "<font face='Arial'><span class='style14'>$cod_2</span></font>"; $sql = "UPDATE contador_diario SET contador=$cod_2"; if ($arquivo->query($sql) === TRUE) { // echo "Alteração efetuada com sucesso"; } else { // echo "Erro alterando o contador de visitas diario" . mysqli_error($arquivo); } // fecha a conexao mysqli_close($arquivo); ?>  
    • Por gersonab
      Tenho este sql que funciona normal:
      <?php $idtor = (int)$_GET['id_tor']; $dia = $_GET['dia']; $sql3 = "SELECT * FROM cantos INNER JOIN campeonato ON id_camp = id_campeonato INNER JOIN torneio ON id_tor = id_torneio WHERE data = :dia AND id_torneio = :idtor ORDER BY cantosfim DESC, pontos DESC, cantos DESC"; $stmt = $pdo->prepare($sql3); $stmt->bindParam(':idtor', $idtor); $stmt->bindParam(':dia', $dia); $stmt->execute(); while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { ?> porém este outro não retorna nada, nem erro...
      <?php $idtor = (int)$_GET['id_tor']; $consul = "SELECT id_cantos, id_torneio, id_campeonato, SUM(cantosfim) AS cantfin, SUM(pontos) AS pontfin FROM cantos INNER JOIN campeonato ON id_camp = id_campeonato INNER JOIN torneio ON id_tor = id_torneio WHERE id_tor = :idtor ORDER BY pontfin DESC, cantfin DESC"; $stmt = $pdo->prepare($consul); $stmt->bindValue(':idtor', $idtor); $stmt->execute(); while ($lin = $stmt->fetch(PDO::FETCH_ASSOC)) { ?> não consigo encontrar o erro.
×

Informação importante

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