Foros del Web » Programando para Internet » PHP »

Ordenando registros de una tabla utilizando un campo desde PHP

Estas en el tema de Ordenando registros de una tabla utilizando un campo desde PHP en el foro de PHP en Foros del Web. Hola a todos. Tengo una aplicación que crea un listado de elementos, y lo guarda en la base de datos. La tabla tiene un id ...
  #1 (permalink)  
Antiguo 30/03/2009, 15:22
Avatar de alexbariv  
Fecha de Ingreso: septiembre-2003
Ubicación: Mérida, Venezuela
Mensajes: 766
Antigüedad: 20 años, 7 meses
Puntos: 0
Pregunta Ordenando registros de una tabla utilizando un campo desde PHP

Hola a todos.

Tengo una aplicación que crea un listado de elementos, y lo guarda en la base de datos. La tabla tiene un id normalito y uno de posición. Algo así:

Código PHP:
  nombre   |  posicion
-----------------------------
  
manzana  |    1
  pera     
|    2
  fresa    
|    
  piña     
|    
La idea es que el usuario al insertar una fruta nueva vea un combo con las opciones, "insertar antes de", "insertar después de". Entonces suponiendo que el usuario seleccione " insertar 'melón' antes de 'pera' ", la aplicación atualice automáticamente todo lo superior a la pera por los valores correspondientes:

Código PHP:
  nombre   |  posicion
-----------------------------
  
manzana  |    1
  melon    
|    2
  pera     
|    3
  fresa    
|    
  piña     
|    
Esto lo he logrado a medias con este algoritmo:

Código PHP:

        $query 
"SELECT id_fruta,posicion FROM $tabla
                  WHERE posicion > {$_POST['posicion']}
                  ORDER BY posicion ASC"
;
        
$rs    $db->query($query);

        while (
$row $rs->fetch()) {

            
$p $row[1]+1;

            
$query  "UPDATE $tabla SET posicion = $p
                       WHERE id_fruta = {$row[0]}"
;

            
$db->exec($query);

        }

        
$query  "INSERT INTO $tabla(nombre,posicion)
                   VALUES ('{$_POST['nombre']}',{$_POST['posicion']})"

El post de posición siempre tendrá el número de la fruta que voy a cambiar de posición, por eso a todas las demás le sumo 1 para desplazarlas, y a la que estoy insertando le coloco el valor que seleccione.

El rollo que tengo es que no he logrado la organización a la hora de modficiar, es decir, decirle a una fruta "mover a despues de..." porque siempre se desordena. Puedo querer moverla al principio, al final, o insertarla en cualquier parte de la lista.

La base de datos es PostgreSQL y accedo a ella con PDO.

Espero haberme explicado bien en este rollo.

Agradezco de antemano toda la ayuda que puedan brindarme.

Éxitos y gracias.
__________________
"Piensa como una persona de acción y actúa como una persona que piensa."
  #2 (permalink)  
Antiguo 30/03/2009, 15:34
Avatar de farra  
Fecha de Ingreso: marzo-2008
Ubicación: Aqui estoy
Mensajes: 574
Antigüedad: 16 años, 2 meses
Puntos: 20
Respuesta: Ordenando registros de una tabla utilizando un campo desde PHP

Proba algo asi:
UPDATE $tabla SET posicion = posicion+1 WHERE posicion > $_POST['posicion']
__________________
Firma:
Es mas dificil para el mono entender que el hombre desciende de el....

PD: Siempre doy karma al que me da una buena respuesta... ;0)
  #3 (permalink)  
Antiguo 30/03/2009, 19:05
Avatar de alexbariv  
Fecha de Ingreso: septiembre-2003
Ubicación: Mérida, Venezuela
Mensajes: 766
Antigüedad: 20 años, 7 meses
Puntos: 0
Respuesta: Ordenando registros de una tabla utilizando un campo desde PHP

Uhm... parece que esa es... a ver que tal va. Gracias! :D
__________________
"Piensa como una persona de acción y actúa como una persona que piensa."
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 00:58.