Foros del Web » Programando para Internet » PHP »

Borrar el archivo mas antiguo

Estas en el tema de Borrar el archivo mas antiguo en el foro de PHP en Foros del Web. Hola amigos de toda la comunidad: Tengo un embrollo con un código. Tengo una galería de imágenes que debe mostrar solo 20 imágenes, eso lo ...
  #1 (permalink)  
Antiguo 07/02/2011, 20:49
 
Fecha de Ingreso: febrero-2011
Mensajes: 7
Antigüedad: 13 años, 2 meses
Puntos: 0
Pregunta Borrar el archivo mas antiguo

Hola amigos de toda la comunidad:

Tengo un embrollo con un código.

Tengo una galería de imágenes que debe mostrar solo 20 imágenes, eso lo soluciones con un IF.

Pero necesito que al subir la imagen 21, se borre la primera (mas antigua).

El asunto es que ya lo e intentado comparando la fecha de modificación de la imagen con la del directorio a donde se suben las imágenes, pero me las borra todas.

A alguien se le ocurre como borrar la imagen mas antigua?

Se los agradecería mucho.

  #2 (permalink)  
Antiguo 07/02/2011, 21:23
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Borrar el archivo mas antiguo

Si cuando lo pusiste que borrara por la fecha de modificacion las borraba todas, algo debiste poner mal. Muestranos como lo hiciste.
  #3 (permalink)  
Antiguo 07/02/2011, 21:25
Avatar de jonasanx  
Fecha de Ingreso: enero-2011
Ubicación: La Via Lactea, Mexico, Mexico, Mexico
Mensajes: 134
Antigüedad: 13 años, 3 meses
Puntos: 4
Respuesta: Borrar el archivo mas antiguo

1. ¿por que usas un IF pudiendo usar LIMIT 0,20 en tu SQL?

-----------------
Suponiendo que estés registrando las imágenes en una base de datos (la ubicación fisica).
-----------------

2. En una sentencia SQL podrías seleccionar el valor mínimo en la lista de ID's (SQL MIN() Function), y después borrar ese ID junto con la imagen, ya que este ultimo te proporcionara la ubicación de la imagen.

http://dev.mysql.com/doc/refman/5.5/en/group-by-functions.html#function_min

Esta ultima no creo que sea la mejor solucion, pero es lo primero que se me ocurre.

Última edición por jonasanx; 07/02/2011 a las 21:32
  #4 (permalink)  
Antiguo 08/02/2011, 06:30
 
Fecha de Ingreso: febrero-2011
Mensajes: 7
Antigüedad: 13 años, 2 meses
Puntos: 0
Busqueda Respuesta: Borrar el archivo mas antiguo

Estimados:

No estoy usando sentencias SQL, por que no estoy usando bases de datos

Y les dejo el código con el que traigo las fechas de modificacion:

Código PHP:
        $ultima_modificacion filemtime('.$directory.'/'.$file.');
        
$ultima_modificacion date("j/m/y h:i"$ultima_modificacion);
        
$modificacion_direcctorio date("j/m/y h:i",$directory);
        if(
$ultima_modificacion $modificacion_direcctorio){
            
$directory=$file;
            if(
file_exists($directory))
            {
            if(
unlink($file));
            
$deleteGoTo "index.php"
            if (isset(
$_SERVER['QUERY_STRING'])) {
            
$deleteGoTo .= (strpos($deleteGoTo'?')) ? "&" "?";
            
$deleteGoTo .= $_SERVER['QUERY_STRING'];
            }
            
header(sprintf("Location: %s"$deleteGoTo));
            }
        } 
  #5 (permalink)  
Antiguo 08/02/2011, 07:20
 
Fecha de Ingreso: febrero-2009
Mensajes: 218
Antigüedad: 15 años, 1 mes
Puntos: 9
Respuesta: Borrar el archivo mas antiguo

Lo que podes hacer, es al subir la imagen, agregarle la fecha del día al nombre de la foto.

ejemplo si subis una foto hoy: 080211mifoto.jpg (si subis mas de una foto por día, tambien le podrias agregar la hora)

Despues con una expresion regular obtenes las fechas y eliminas la más vieja.
  #6 (permalink)  
Antiguo 08/02/2011, 10:33
 
Fecha de Ingreso: febrero-2011
Mensajes: 7
Antigüedad: 13 años, 2 meses
Puntos: 0
Pregunta Respuesta: Borrar el archivo mas antiguo

Cita:
Iniciado por fernandozunni Ver Mensaje
Lo que podes hacer, es al subir la imagen, agregarle la fecha del día al nombre de la foto.

ejemplo si subis una foto hoy: 080211mifoto.jpg (si subis mas de una foto por día, tambien le podrias agregar la hora)

Despues con una expresion regular obtenes las fechas y eliminas la más vieja.
Ok, en ese caso tendría que comparar con la fecha actual y borrar la mas antigua. Una cosa así:

IF(080211mifoto.jpg > fechaHoy){
unlink(080211mifoto.jpg)
}

Pero de todas formas se borraría casi todas las fotos, porque si lo recorro con un while me va a tomar el nombre de todas las fotos, borra las que son mas antiguas que hoy y deja solo las que se subieron hoy.

¿Estoy en lo sierto?
  #7 (permalink)  
Antiguo 08/02/2011, 11:42
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Borrar el archivo mas antiguo

Código PHP:
Ver original
  1. $ultima_modificacion = filemtime('.$directory.'/'.$file.');
  2.         $ultima_modificacion = date("j/m/y h:i", $ultima_modificacion);

Tienes un error en esa parte del codigo.
Dale un vistazo a $ultima_modificacion ...
Pones comillas de la nada, tratas de concatenar, luego sales, pones un / y vuelves y poner comillas de la nada.
Con razon te borraba todos los archivos xD
  #8 (permalink)  
Antiguo 08/02/2011, 11:48
 
Fecha de Ingreso: febrero-2011
Mensajes: 7
Antigüedad: 13 años, 2 meses
Puntos: 0
Busqueda Respuesta: Borrar el archivo mas antiguo

Cita:
Iniciado por Ronruby Ver Mensaje
Código PHP:
Ver original
  1. $ultima_modificacion = filemtime('.$directory.'/'.$file.');
  2.         $ultima_modificacion = date("j/m/y h:i", $ultima_modificacion);

Tienes un error en esa parte del codigo.
Dale un vistazo a $ultima_modificacion ...
Pones comillas de la nada, tratas de concatenar, luego sales, pones un / y vuelves y poner comillas de la nada.
Con razon te borraba todos los archivos xD

Lo acabo de revisar, y al imprimirlo con un echo, me imprime la fecha de modificación de los archivos. Asi que al parecer no va por hay el problem

Pero de todas maneras gracias.

Etiquetas: antiguo, borrar, mas
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 07:45.