Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Modificar BD para cambiar orden de fotos en galería con CMS

Estas en el tema de Modificar BD para cambiar orden de fotos en galería con CMS en el foro de Mysql en Foros del Web. Esto es lo que quiero hacer, tengo un "CMS" o lo intento hacer, de una galería de fotos... En este se tiene que poder agregar ...
  #1 (permalink)  
Antiguo 10/08/2012, 00:48
Avatar de lgza70  
Fecha de Ingreso: febrero-2011
Mensajes: 29
Antigüedad: 13 años, 9 meses
Puntos: 1
Pregunta Modificar BD para cambiar orden de fotos en galería con CMS

Esto es lo que quiero hacer, tengo un "CMS" o lo intento hacer, de una galería de fotos...
En este se tiene que poder agregar y quitar fotos para llamarlas desde mi base de datos con el orden que están las llama por id y mostrar en la galería de la página (ya me salió =D), pero también en ese CMS debo poder cambiar el orden, si tengo una foto en último lugar y la quiero pasar arriba que lo modifique en mi base de datos y pues al refrescar página ya saldrían con el nuevo orden, pensé en agregar dos botones al CMS, uno para mover hacia arriba y el otro pues para abajo. Y agregar una nueva columna en mi base de datos (no se si se pueda) que tenga los numeros en orden dependiendo de la cantidad de fotos que haya cada una con el número que le toque (Para ahora en lugar de mandar llamar las fotos por la id, llamarlas a que me las acomode por estos números).

Encontre algo muy parecido a lo que pensaba:


Add another column in the table that will control the display order of records
ID Name Displayorder
1: oranges 1
2: apples 2
3: lemon 3
4: grapes 4

If 3:lemon is desired to be moved up the final picture will be

1: oranges 1
3: lemon 2
2: apples 3
4: grapes 4

1. Find display order of lemon (3).
2. Find record that has display order of one up (2) i.e. apple.
3. Update the table set displayorder=2 where id=3
4. Update the table set displayorder=3 where id=2

Query the table with order by displayorder


Eso es lo que creo que lo puede resolver:
Que cuando le de click al botón ya sea para arriba o para abajo
1. Encontrar ese número de posición de la foto
2. Que encuentre el numero de posición de la foto que esté arriba o abajo(dependiendo de a donde vaya).
3. Actualizar en la base de datos el numero de la foto que quiero mover por el número de posición de la otra a donde la quiero.
4. Actualizar el número de la otra foto al número de posición que tenía la que moví.

(Es lo que dice arriba jaja)

Pero no see ni qué comandos utilizar!

Para empezar cómo debe de ser la columna a agregar en la base de datos? (Si es que se puede lo que quiero)
y dos, cómo le digo que haga lo de los números anteriores? :S

Espero me ayuden, o si hay una mejor opción, lo que sea se los agredecería bastante!
  #2 (permalink)  
Antiguo 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

Etiquetas: bd, cms, fotos, modificar, orden
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:58.