PHP - reordenar campos cada vez que inserto uno nuevo, hago una modificación o elimino un registro

 
Vista:
sin imagen de perfil
Val: 9
Ha aumentado su posición en 9 puestos en PHP (en relación al último mes)
Gráfica de PHP

reordenar campos cada vez que inserto uno nuevo, hago una modificación o elimino un registro

Publicado por Vanesa (4 intervenciones) el 12/01/2021 19:55:52
Hola. Llevo mucho tiempo sin visitar estos foros porque programo puntualmente y me dedico más al tema de la maquetación actualmente.

Estoy intentado desarrollar una función en php , function reordenar (id, orden), que se ejecute cada vez que meto un elemento nuevo en la tabla (mysql), o ejecuto una modificación que conlleve un cambio de orden de los registros, o elimino uno de los registros, pues que el campo "orden" se reordene en cada uno de los registros de la tabla.

El campo orden, va de 1 a el que fuese el último de los registros y siempre serían consecutivos entre todos los registros, no pudiendo ni saltarse ni repetirse.

Ejemplo, tengo 10 registros en la tabla, y quiero cambiar el que hace de orden 5 al 7; lo que significaría, que del 1 al 4 quedarían igual, el 6 pasaría a ser el 5, el 7 pasaría a ser el 6 y el antiguo 5 pasaría a ser el nuevo 7.

He intentado varías cosas, pero no lo consigo. Además también tendría que tener en cuanta cuando el cambio de orden es hacia atrás, por ejemplo del 7 al 5.

Si alguien tiene un pequeño código que resuelva mi problema se lo agradeceré eternamente.

Gracias de antemano!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de joel
Val: 3.819
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

reordenar campos cada vez que inserto uno nuevo, hago una modificación o elimino un registro

Publicado por joel (1260 intervenciones) el 13/01/2021 07:52:37
Hola Vanesa, según entiendo, son varios updates en la tabla para poner a cada uno el numero que deseas, no?

Es que no se si te he entendido bien...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 9
Ha aumentado su posición en 9 puestos en PHP (en relación al último mes)
Gráfica de PHP

reordenar campos cada vez que inserto uno nuevo, hago una modificación o elimino un registro

Publicado por Vanesa (4 intervenciones) el 13/01/2021 09:09:46
Sí. Que me cambio el que yo seleccione a la posición nueva, y reposicione todos los que están entre medias.

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Mauro
Val: 2.710
Plata
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

reordenar campos cada vez que inserto uno nuevo, hago una modificación o elimino un registro

Publicado por Mauro (868 intervenciones) el 13/01/2021 13:35:48
Hola Vanesa:

¿Es necesario almacenar el campo orden? Quiero decir, si tu objetivo es mostrar los registros ordenados por algún criterio natural como la fecha de creación por ejemplo, sería más simple guardar ese dato y realizar el ordenamiento en la consulta (con una cláusula order by).

Mismo si lo que buscas es permitir al usuario definir un orden arbitrario (Tipo drag-and-drop), no creo que necesites re-organizar todos los registros... basta con mantener la relación de orden.

Lo que podrías llegar a necesitar es modificar los que quedarán por debajo del que estás insertando, eso podrías hacerlo con dos consultas:

1 - Obtener todos los registros ordenados: SELECT id, orden FROM tabla ORDER BY orden
2 - Buscar cuál es el orden correspondiente al registro que será el anterior al que quieres insertar
3 - Modificar los que quedarán por debajo: UPDATE tabla SET orden = orden + 1 WHERE orden > $anterior

Coméntame si tienes alguna duda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar