Foros del Web » Programando para Internet » PHP »

Reorganizar entradas

Estas en el tema de Reorganizar entradas en el foro de PHP en Foros del Web. Lo que quiero hacer creo que requiere tmb de jquery pero lo quiero manejar para php lo que hago es organizar por id DESC las ...
  #1 (permalink)  
Antiguo 23/01/2013, 00:51
Avatar de Capimaster  
Fecha de Ingreso: agosto-2004
Mensajes: 494
Antigüedad: 20 años, 3 meses
Puntos: 2
Reorganizar entradas

Lo que quiero hacer creo que requiere tmb de jquery pero lo quiero manejar para php

lo que hago es organizar por id DESC las entradas de una tabla...
pero quiero poder organizar diferente por ejemplo arrastrar con una flechita hacia abajo y que le cambie el id.. pero q tmb a los demas para reordenar diferente!!

Me cuesta mucho trabajo explicar esto.. espero alguien me pueda entender

es para reorganizar las entras

5
4
3
2
1

y si quiero que el 5 que esta hasta arriba baje 2 niveles

5-2
3+1
4+1
y el nuevo orden seria asi..

5 = 3
4 = 5
3 = 4
2 = 2
1 = 1
__________________
http://www.elcapitolio.com.mx - Ocotlán, Jalisco, México
  #2 (permalink)  
Antiguo 23/01/2013, 03:01
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: Reorganizar entradas

No uses nunca el id para eso....

Primero porque cambiar el id de un registro es como si cambiaras la cedula de identidad de una persona, tendras problemas si tienes relaciones con otras tablas....

Ademas si el id es autoinc nada te asegura que sea correlativo puedes tener 1,3,4,6,7...

Yo crearia un campo nuevo llamado orden a este le puedes hacer los cambios que quieras puesto que no es el identificador... lo mantendria siempre correlativo es decir si se elimina un registro digamos el registro con orden=3

Haces

1,2,3,4,5

1,2,4,5

UPDATE tutabla SET orden=orden+1 WHERE orden>3

1,2,3,4

y para cambiar el orden de los registros lo puedes hacer como sigue

El 5 con id=X passarlo al 7

1,2,3,4,5,6,7

UPDATE tutabla SET orden=orden-1 WHERE orden>5 AND orden<=7

1,2,3,4,5(X),5,6

UPDATE tutabla SET orden=7 WHERE id=X

1,2,3,4,5,6,7


Si vas a usar una flechita para indicar en que dirección quieres mover un registro luego sabes que registro vas a mover con programación externa puedes calcular exactamente el orden del registro superior o inferior (orden+1 o orden-1) con lo que fácilmente puedes hacer los update... siempre apoyando te en el orden del registro a mover y su id.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 23/01/2013 a las 03:11
  #3 (permalink)  
Antiguo 23/01/2013, 12:47
Avatar de Capimaster  
Fecha de Ingreso: agosto-2004
Mensajes: 494
Antigüedad: 20 años, 3 meses
Puntos: 2
Respuesta: Reorganizar entradas

Buena tarea... lo hice de la siguiente manera, aun que no se si es la mejor forma.. pero al parecer funciona...

las flehas las hice asi:
Código HTML:
<td align="center"><a href="?subir=<?php echo $row_Recordset1['id']; ?>&orden=<?php echo $row_Recordset1['orden']; ?>">Subir</a></td>
      <td align="center"><a href="?bajar=<?php echo $row_Recordset1['id']; ?>&orden=<?php echo $row_Recordset1['orden']; ?>">Bajar</a></td> 
y el codigo asi
Código PHP:
if (isset($_GET['subir']))
{
    
mysql_select_db($database_noticias$noticias);
    
$inicio $_GET['orden'];
    
$fin $_GET['orden']+1;
$up1 'UPDATE fotografos SET orden=orden-1 WHERE orden>'.$inicio.' AND  orden<='.$fin;
mysql_query($up1$noticias) or die(mysql_error());    
    
$update 'UPDATE fotografos SET orden=orden+1 WHERE id='.$_GET['subir'].'';
$Result2 mysql_query($update$noticias) or die(mysql_error()); 
}

if (isset(
$_GET['bajar']))
{
    
mysql_select_db($database_noticias$noticias);
    
$inicio $_GET['orden'];
    
$fin $_GET['orden']-1;
$up1 'UPDATE fotografos SET orden=orden+1 WHERE orden<'.$inicio.' AND  orden>='.$fin;
mysql_query($up1$noticias) or die(mysql_error());    
    
$update 'UPDATE fotografos SET orden=orden-1 WHERE id='.$_GET['bajar'].'';
$Result2 mysql_query($update$noticias) or die(mysql_error()); 

si hay alguna forma de simplificarlo, te agradezco... solo seria por conocimiento. por que como repito funciona!

Pregunta extra.... como puedo saber cuando es el primer y ultimo registro para en relativos casos poder no imprimir la flecha hacia arriba o hacia abajo
__________________
http://www.elcapitolio.com.mx - Ocotlán, Jalisco, México

Última edición por Capimaster; 23/01/2013 a las 12:49 Razón: pregunta extra
  #4 (permalink)  
Antiguo 24/01/2013, 02:24
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: Reorganizar entradas

Código PHP:
Ver original
  1. ...
  2.     $inicio = $_GET['orden'];
  3.     $fin = $_GET['orden']+1;
  4. ...
  5. WHERE orden>'.$inicio.' AND  orden<='.$fin;

Incio=5 -> fin=6 ->WHERE orden>5 AND orden<=6;

Ahi puedes simplificar el where

'...WHERE orden='.$fin;

Lo mismo en bajar...
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Etiquetas: entradas, tabla
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 13:11.