Ir para conteúdo

POWERED BY:

Arquivado

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

Thiago K.

Ordem do ID dinâmica

Recommended Posts

Caros,

 

Estou tentando isso já faz um tempo e até agora sem sucesso. Então vou explicar o que gostaria de fazer e me digam se isso é possível.

Atualmente consigo fazer com que o usuário escolha a ordem por exemplo dos ítens de um menu com uma coluna IDordem.

Então na listagem tem um campo input numérico onde posso inserir um número que será a ordem de exibição do menu.

 

Exemplo:

 

IDordem | Menu

1 | Quem somos

2 | Onde estamos

3 | Novidades

4 | Promoções

5 | Destaques

6 | Contato

 

Se eu quero mudar essa ordem, exemplo que eu quero que o destaques fique antes de onde estamos então eu pego e altero o valor do IDordem.

O problema é que se eu coloco o número 2 para o destaques, ele fica duplicado, ai tenho que mudar tudo o que está abaixo dele, exemplo abaixo.

 

IDordem | Menu

1 | Quem somos

2 | Destaques

2 | Onde estamos

3 | Novidades

4 | Promoções

6 | Contato

 

Então tenho que mudar o onde estamos para 3, o novidades para 4 e assim por diante.

 

Queria fazer isso de uma maneira mais dinâmica, onde ele alteraria o que está abaixo automaticamente.

 

Isso por que já me pediram para deixar essa opção de escolher a ordem em cardápio de alimentos onde tinham mais de 100 cadastros.

Agora imaginem o cara ter que mudar se ele quer trocar a ordem de algo lá de cima da tabela.

A solução para esse caso foi colocar de 10 e 10, então ele teria um "range" de números para não ter esse problema, só que isso é peão demais!!

 

Alguém já fez ou viu algo assim?

 

Obrigado e espero que tenham conseguido entender a minha explicação.

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

quando alterar tem que alterar os demais também

 

seria algo assim

 

Voce tem que saber qual esta mudando e para que valor apenas

 

Exemplo

 

OrdemMenu = 2

NomeMenu = "Destaques"

 

Sendo assim temos dois updates

 

O primeiro altera o que você deseja mudar de ordem

"UPDATE NOME_TABELA SET IDordem = " & OrdemMenu & " WHERE Menu = '" &NomeMenu& "'"

 

O segundo ajusta os demais ignorando o que alterou

"UPDATE NOME_TABELA SET IDordem = IDordem + 1 WHERE IDordem >= " & OrdemMenu & " AND Menu <> '" &NomeMenu& "'"

 

Veja se resolve

Compartilhar este post


Link para o post
Compartilhar em outros sites

quando alterar tem que alterar os demais também

 

seria algo assim

 

Voce tem que saber qual esta mudando e para que valor apenas

 

Exemplo

 

OrdemMenu = 2

NomeMenu = "Destaques"

 

Sendo assim temos dois updates

 

O primeiro altera o que você deseja mudar de ordem

"UPDATE NOME_TABELA SET IDordem = " & OrdemMenu & " WHERE Menu = '" &NomeMenu& "'"

 

O segundo ajusta os demais ignorando o que alterou

"UPDATE NOME_TABELA SET IDordem = IDordem + 1 WHERE IDordem >= " & OrdemMenu & " AND Menu <> '" &NomeMenu& "'"

 

Veja se resolve

 

 

Olá Mário,

 

Muito obrigado!! Realmente você resolveu uma dúvida que eu tinha a tempos.

 

Finalmente consegui e agora os números não se repetem, mas tem uma coisa que eu observei. Quando eu altero um número ele acaba pulando 1 então se na tabela temos registro da seguinte forma:

 

IDordem

1

2

3

4

5

6

7

8

 

E eu mudo o 5 para 2 ele fica

 

IDordem

1

2

3

4

5

7

8

9

 

Repare que o número 6 some.

 

Tem idéia porque isso acontece?

 

Obrigado novamente!

Compartilhar este post


Link para o post
Compartilhar em outros sites

é verdade precisa de colocar a informação do ID anterior no segundo UPDATE

 

Primeiro tem que selecuinar o ID anterior

 

"SELECT IDordem FROM NOME_TABELA WHERE Menu = '" &NomeMenu& "'"

Aramzena em OrdemMenuAnterior

 

"UPDATE NOME_TABELA SET IDordem = IDordem + 1 WHERE IDordem >= " & OrdemMenu & " AND IDordem < " & OrdemMenuAnterior & " AND Menu <> '" &NomeMenu& "'"

Acho até que o ultimo AND nem será mais necessário com esta alteração

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, eu tentei dessa forma, mas agora duplica!

 

Se eu mudo o 5 para 2 ele repete o 5 ficando dois iguais. Não entendi porque!

 

IDordem

1

3

4

5

5

7

8

9

 

Vou continuar testando aqui, mas de qualquer forma a primeira opção me ajudou muito, mesmo que fique faltando um número.

Compartilhar este post


Link para o post
Compartilhar em outros sites

provavelmente esta atualizando o IDordem tb, você pode fazer isso tb atraves de array

Compartilhar este post


Link para o post
Compartilhar em outros sites

deve ta faltando alguma pequena correção mas não consegui fazer de forma rápida aqui

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.