10/08/2012, 03:10
|
Colaborador | | Fecha de Ingreso: marzo-2008 Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 8 meses Puntos: 300 | |
Respuesta: Modificar BD para cambiar orden de fotos en galería con CMS lgza79,
el problema no es solo cambiar el orden entre dos fotos, según creo; supongo que a veces solo querrás incluir una foto entre otras dos, y al añadirla modificar los números de todas las siguientes; y tendrás que contemplar la posibilidad de borrar alguna y que se reasignen todos los números desde ella. Debes estudiar todas las posibilidades. La lógica pienso que es sencilla:
si quieres incluir una foto en una posición, tendrás que asignársela escribiéndola; si no se la asignas, tendrá el sistema que asignarle el número de orden más alto más 1, o, lo que es lo mismo, el total de fotos más 1. Si ese número de orden ya está asignado, buscarás todos los registros con un número de orden igual o mayor que ese, y le sumarás 1 al número de orden de todos ellos, y al que deseas le asignarás el número que quieres. Lo de intercambiar orden entre dos registros es fácil; lo programas y ya está: busco uno y le pongo el otro y viceversa. Si eliminas un registro, antes de eliminarlo, compruebas cuál es su número de orden y buscas todos los que tengan un número de orden igual o superior y le restas 1 a ese número de orden. Esa es la lógica general.
Las consultas para hacerlo son de inserción y actualización con filtro de número de orden. Tendrás que controlar en todo momento que el último número de orden sea igual al total de registros, salvo en el caso de inserción, creo. Además deberás hacer un índice único de ese número de orden para evitar repeticiones.
Primero piensa en esto. Luego, la mayor parte del problema la resolverás en el foro de programación. Pero ojo con el orden de acciones pues con el índice único no te permitirá en ningún momento del proceso guardar el mismo número dos veces. Tendrás que usar la memoria del programa para guardar datos y borrar para volver a insertar o actualizar.
Última edición por jurena; 10/08/2012 a las 07:18 |