Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

como manter o campo de ordem de exibição em php


Você pode usar valores maiores para exibição, como digamos:
apple : 1 000 000

orange : 2 000 000

banana : 3 000 000

Agora, se eu quiser adicionar potato na posição 2 (n=2) eu pego a posição n (=> 2 :orange) e (n-1)(=> 1 :apple) e as divido por 2 para obter a nova posição da batata:

(1.000.000 + 2.000.000) / 2

=1.500.000
apple : 1 000 000

**potato : 1 500 000**

orange : 2 000 000

banana : 3 000 000

Isso funcionará por muito tempo e, se em algum momento você sentir que esgotou esse esquema, ainda poderá multiplicar todos os valores por 1000.

Você também pode continuar usando valor baixo (1, 2, 3, ...) e definir seu tipo como DOUBLE , então eles nunca colidirão ao dividi-los por 2.

EDITAR: Sobre colocar a banana na posição 1:

Usando a fórmula (n+(n-1))/2:

Aqui n =1 (nova posição).

Nossos dados são:
apple : 1 000 000

potato : 1 500 000

orange : 2 000 000

banana : 3 000 000

(1 000000+(0))/2

=500.000

Dou a ordem 500 000 à banana:
**banana : 500 000**

apple : 1 000 000

potato : 1 500 000

orange : 2 000 000

Ainda outra solução:crie um campo de texto que seja um indexador e contenha todos os ids.

"1,2,3,4,5,6,7"

Agora, se eu quiser colocar o elemento id 8 entre 3 e 4, basta substituir ",4," por ",8,4,".

Embora seja mais complicado em termos de computação encontrar o elemento no índice n, eu pessoalmente usaria a primeira solução.