Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Somando + 1


marvi

Pergunta

Olá pessoal,

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

tabela1.png

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!

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Marvi... notei ali na sua tabela que o campo nível não obedece a regra de que o próximo nível necessáriamente terá que ser maior que o anterior, é isso mesmo?

porque está assim: 1, 2, 4, 5, 3, 6...

Cofirma essa inf pra mim? Tipo, o próximo nível sempre será maior que o anterior? Qual a lógica adotada na distribuição dos números dos nívei?

[]'s Rafael Spilki

Link para o comentário
Compartilhar em outros sites

  • 0

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?

Link para o comentário
Compartilhar em outros sites

  • 0

então faz assim:

Quando fores adicionar uma nova categoria faz uma query selecionando o top 1 dos id_categoria ordendando de forma descendente, desta forma terá o último registro adicionado nessa sua tabela... sabendo qual foi o ultimo registro você pega o RS ("nivel") + 1 e terá o número do próximo nível... sacou?

Assim:

sql = "Select top 1 * from sua_tabela oreder by id_categoria desc"
set rs...
novonivel = rs("nivel") + 1
'depois disso basta fazer a instrução de insert com o value do campo nivel sendo igual a novonivel

Sacou?

[]'s Rafael Spilki

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...