Ir para conteúdo

POWERED BY:

Arquivado

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

marvi

[Resolvido] Somando + 1

Recommended Posts

Olá pessoal,

 

No banco existe um campo chamado nivel que é com ele que faço o sistema, veja a tabela de categorias e subcategorias:

 

Imagem Postada

 

Só que isso foi feito manualmente e a inserção de categorias e subcategorias já faço através de um painel, mas quero incrementar esse campo nivel também, alguém tem uma idéia de como fazer essa sequência?

 

Veja que se o id_categoriapai for 48, por exemplo, o nivel está sendo número 2 até o id_categoriapai mudar para outro numero e que seria 50, que está mais abaixo e assim o nivel fica 3. Então como fazer com que o nivel some + 1?

 

Pois ele vai ter que comparar e ver o último número, nesse caso é 61 com nivel 6... Ai se entra outra categoria com o número da id_categoriapai 61 ainda ele não soma + 1, ele fica com o 6 e se vai para 62 ele soma + 1 (se caso ele, o número 62, não exista no id_categoriapai). Entendem?

 

Agora na hora de o usuário criar por um painel sua subcategoria no banco eu tenho que fazer uma contagem tipo 1+1 para inserir um novo nivel no campo nivel da tabela, isso?

 

Na verdade o que ocorre é:

 

Ele cadastra uma categoria chamada Casa e dentro dessa categoria uma subcategoria chamada Cadeira e dentro desta subcategoria outra subcategoria chamada Cadeira Azul e assim vai se preciso...

 

Mas ele pode ir e criar uma outra categoria chamada Prédio e dentro dessa categoria uma subcategoria chamada Apartamento e dentro desta subcategoria outra subcategoria chamada Apartamento de dois quartos e assim vai se preciso... Por exemplo.

 

Como processa a idéia de nível? Nivel 1 é sempre para as categorias e nivel 2,3 e etc são para subcategorias? Vou ter que fazer uma soma e reconhecer se ele é categoria ou subcategoria, isso?

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Com relação aos niveis isso pode ser feito de diversas formas. Pode ser feita por funções redundantes (estou montando uma para testar a montagem de BreadCrumbs), pode ser feita dessa forma que está fazendo.

 

Para fazer dessa sua forma você deve, ao inserir uma nova categoria, selecionar a categoria "pai" dela, caso a nova seja a "pai" você não seleciona nada. Com isso você faz, antes do INSERT, um select na tabela e verifica qual ao valor do "nível" que está na tabela.

 

Entendeu a lógica?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você entendeu o processo né?

 

O nivel só vai ser superior do outro se o id_categoriapai for um novo número não usado ainda...

 

Veja que no id_categoriapai temos o número 57 duas vezes e no campo nivel logo do lado, correspondente, temos o numero 5 duas vezes também.

 

Então para que o campo nivel que tem o numero 5 se torne o numero 6 o id_categoriapai tem que possuir um numero novo nele... que no caso é o 61 e assim poderá ter o nivel de numero 6... Se esse 61 se repetir 3 ou 4 vezez ou mais teremos o nivel 6 repetido 3 ou 4 vezes ou mais... e assim vai...

 

Sabendo que esses números de id_categoriapai não é nada mais que os números id_categoria que foi jogado no campo id_categoriapai para informar que ele tem subcategorias, entende?

 

É tipo: toda vez que surge um número de id_categoriapai que não foi usado ainda, se soma o último número do campo nível (que provavelmente vai ser o maior) e soma mais 1. Como foi o nível de numero 5 que passou a ter o nivel de numero 6 = 5+1 = 6

 

Entendeu?

Compartilhar este post


Link para o post
Compartilhar em outros sites

"Para fazer dessa sua forma você deve, ao inserir uma nova categoria, selecionar a categoria "pai" dela, caso a nova seja a "pai" você não seleciona nada. Com isso você faz, antes do INSERT, um select na tabela e verifica qual ao valor do "nível" que está na tabela."

 

Você quer que toda vez que eu for inserir algo no banco, pegue o valor do id_categoria desse algo e faça um select procurando saber se já existe no campo id_categoriapai e se tiver não faço nada: simplesmente insere esse produto e repete o numero do nivel correspondente ao id_categoriapai encontrado, isso?

 

Caso não encontre nesse select eu insiro no id_categoriapai e pego o ultimo ou o maior numero do nivel e somo mais 1 e coloco no campo nivel, isso? Mais como somar esse nível mais 1?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aehhhh!

 

Pode postar o trecho para que alguém que possua a mesma duvida?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Somar + 1?

 

Teve um desafio de ASP aqui, anos atrás, que o objetivo era fazer manualmente um campo numero, virar auto numero, ao cadastrar no banco..

 

creio que resolvesse seu problema..

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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