Foros del Web » Programando para Internet » PHP »

ordenar articulos en base de datos (una sola consulta?)

Estas en el tema de ordenar articulos en base de datos (una sola consulta?) en el foro de PHP en Foros del Web. Quiero organizar un album de fotos en base de datos. Del lado cliente, todo va bien usando jquery UI sortable. Pero en lado cliente, la ...
  #1 (permalink)  
Antiguo 23/11/2010, 15:07
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
Información ordenar articulos en base de datos (una sola consulta?)

Quiero organizar un album de fotos en base de datos. Del lado cliente, todo va bien usando jquery UI sortable. Pero en lado cliente, la duda es como economizar recursos. Si en mi album tengo 30 imagenes, tengo que hacer 30 actualizaciones? Quisiera que no. COmo lo resuelven ustedes?

En principio, lo que tengo es un array con las posiciones y los id de las imagenes:

Código PHP:
Ver original
  1. foreach ($imagenes as $key => $value)
  2.         {
  3.             $posicion = $key+1;
  4.             $id_imagen = $value;
  5.         }
  #2 (permalink)  
Antiguo 23/11/2010, 16:07
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
Respuesta: ordenar articulos en base de datos (una sola consulta?)

Estoy pensando dos cosas:

- crear una tabla para ordenar un album (ya que no todos van a tener un orden necesariamente)
orden_fotos(id_imagen, posicion)

- usar INSERT INTO orden_fotos VALUES (1,2), (2,6), (3,9) ON DUPLICATE KEY UPDATE posicion...

Esta segunda idea parece buena pero no termino de saber qué poner en la condicion onduplicate key. La otra es borrar todos los registros y volver a insertarlos en una sola consulta. Eso estaría bueno. Pero... necesitaría también un id_album para borrar todos los registros de una sola vez.
  #3 (permalink)  
Antiguo 23/11/2010, 16:43
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
Respuesta: ordenar articulos en base de datos (una sola consulta?)

Me va perfecto:

Código PHP:
Ver original
  1. function ordenar_imagenes($id_album, $posiciones)
  2. {  
  3.     $consulta = "DELETE FROM orden_fotos WHERE id_album = '$id_album'";
  4.     mysql_query($consulta) or die("Error al renovar orden: ".mysql_error());   
  5.    
  6.     $insercion = "INSERT INTO orden_fotos VALUES $posiciones";
  7.     mysql_query($insercion) or die("Error al renovar orden de fotos: ".mysql_error());
  8.    
  9.     return true;
  10. }

Código PHP:
Ver original
  1. foreach ($imagenes as $posicion => $id_imagen)
  2.              $filas[] = "($id_album, $id_imagen, $posicion)";
  3.        
  4.         $ordenadas = implode(",", $filas);
  5.        
  6.         if ( ordenar_imagenes($id_album, $ordenadas) )
  7.         die("ok");
  8.             die("mal");

Etiquetas: articulos
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 18:45.