Ver Mensaje Individual
  #1 (permalink)  
Antiguo 19/03/2010, 13:52
nietecito7
 
Fecha de Ingreso: enero-2008
Mensajes: 34
Antigüedad: 17 años
Puntos: 0
Exclamación Reordenar tablas MYSQL

Buenas,

Tengo una tabla en MYSQL la cual consta de lo siguiente:
CREATE TABLE IF NOT EXISTS `projects` (
`id` int(11) NOT NULL default '0',
`nombre` varchar(30) NOT NULL default '',
`nombre2` varchar(30) NOT NULL default '',
`info` varchar(40) NOT NULL default '',
`info2` varchar(40) NOT NULL default '',
`year` varchar(20) NOT NULL default '',
`location` varchar(40) NOT NULL default '',
`foto` varchar(70) NOT NULL default '',
`foto1` text NOT NULL,
`foto2` text NOT NULL,
`foto3` text NOT NULL,
`foto4` text NOT NULL,
`foto5` varchar(200) NOT NULL default '',
`foto6` varchar(200) NOT NULL default '',
`foto7` varchar(200) NOT NULL default '',
`foto8` varchar(200) NOT NULL default '',
`foto9` varchar(200) NOT NULL default '',
`foto10` varchar(200) NOT NULL default '',
`foto11` varchar(200) NOT NULL default '',
PRIMARY KEY (`id`)

Tenemos un Panel de Control en el cual los usuarios pueden eliminar las fotos, aquí es cuando viene el problema.
Al eliminar una foto queremos que toda la tabla se reordene por número corelativos. Es decir, si eliminamos foto3 : foto 4 pasa a ser la foto3 y sucesivamente.
Este es el codigo en cuestión:
Código PHP:
if($_GET['foto_o']){
$foto_o addslashes($_GET['foto_o']);
$p addslashes($_GET['p']);
$result mysql_query("SELECT * FROM projects WHERE id='$p'") ;
while(
$row mysql_fetch_array$result )) {

        
$foto $row['foto']; 
        
$foto1 $row['foto1']; 
        
$foto2 $row['foto2']; 
        
$foto3 $row['foto3']; 
        
$foto4 $row['foto4']; 
        
$foto5 $row['foto5']; 
        
$foto6 $row['foto6']; 
        
$foto7 $row['foto7']; 
        
$foto8 $row['foto8']; 
        
$foto9 $row['foto9']; 
        
$foto10 $row['foto10']; 
        
$foto11 $row['foto11']; 
        
$fotos = array();
$fotos[1]=$foto1;
$fotos[2]=$foto2;
$fotos[3]=$foto3;
$fotos[4]=$foto4;
$fotos[5]=$foto5;
$fotos[6]=$foto6;
$fotos[7]=$foto7;
$fotos[8]=$foto8;
$fotos[9]=$foto9;
$fotos[10]=$foto10;
$fotos[11]=$foto11;

        }
        
$nom_e "foto".$foto_o

$num=12;
$num2 0;
echo 
"La foto que vas a borrar es: " ; echo $foto_o; echo "<br>"
while(
$num2<$num){
echo 
$num2;
if(
$num2<foto_o){echo "MENOR";}
if(
$num2==foto_o){
      echo 
"IGUAL";
        if(
$num2==0){ $name_n "foto"; } else {   $name_n "foto".$num2; }
        
$result mysql_query("UPDATE projects SET $num2='' WHERE id='$p'") ;}
if(
$num2>foto_o){
echo 
"MAYOR";
$num_n $num2-1;
        
$nom_e "foto".$num_n
        
        
$result mysql_query("UPDATE projects SET $nom_e='$fotos[$num2]' WHERE id='$p'") ;}
        
        
 
$num2++;
}      
 
$status =  "La foto se ha eliminado correctamente";

Como vereis, la petición de eliminar foto se pasa por método GET con el nombre: foto_o.
El problema se presenta cuando las comparaciones no las hace. Ejemplo: Eliminamos FOTO NUMERO 3 (foto3) y el resultado que devuelve es : 0 = 3, en vez de seguir el flujo del código, cuando tendria que ser, logicamente, MENOR QUE 3 Y simplemente mostrar el mensaje: MENOR.

Muchisimas gracias de antemano, toda ayuda es bien recibida.

Gracias.

P.D.: Si sabeis alguna otra fórmula mejor, compartidla por favor.