Ver Mensaje Individual
  #2 (permalink)  
Antiguo 23/07/2013, 02:43
quimfv
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Cambiar posiciones de los post

Yo usaría una tabla auxiliar

Destacados
id
id_post FK tablapost.id_post ON DELETE RESTRICT
orden INTEGER

ON DELETE RESTRICT antes de borrar un post de la tabla de post si és un destacado debes eliminarlo de destacados y corregir los ordenes.

Con esta query optienes el orden que deseas
Código MySQL:
Ver original
  1. SELECT tablapost.*,destacdos.orden
  2. FROM tablapost LEFT JOIN destacdos ON tablapost.id_post=destacados.id_post
  3. ORDER BY if(destacdos.orden IS NULL,1,0),destacdos.orden,tablapost.id_post;

Ahora solo tienes que gestionar la lista de la tabla auxiliar....

Si siempre actualizas el primero es relativamente fácil

Código MySQL:
Ver original
  1. UPDATE destacados SET orden=orden+1;
  2. INSERT INTO destacados (id_post,orden) VALUES (XX,1);
Si no

Código MySQL:
Ver original
  1. UPDATE destacados SET orden=orden+1 WHERE orden>Y;
  2. INSERT INTO destacados (id_post,orden) VALUES (XX,Y);

donde Y es la posición donde quieres insertar el destacado....

Para eliminar destacados debes saber el id_post y el orden que ocupa

Código MySQL:
Ver original
  1. SELECT orden FROM destacados WHERE id_post=X -- --> Y
  2. DELETE FROM destacados WHERE id_post=X
  3. UPDATE destacados SET orden=orden-1 WHERE orden>Y;
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 23/07/2013 a las 03:03