Foros del Web » Programando para Internet » PHP »

Seleccionar/Ordenar ARCHIVO segun ultima modificacion?

Estas en el tema de Seleccionar/Ordenar ARCHIVO segun ultima modificacion? en el foro de PHP en Foros del Web. Hola gente, estoy con un catálogo de productos, y en el listado, necesito que en cada producto se muestre la primer foto cargada de todos ...
  #1 (permalink)  
Antiguo 23/01/2013, 05:41
Avatar de NnikoO  
Fecha de Ingreso: agosto-2008
Ubicación: Rosario
Mensajes: 245
Antigüedad: 15 años, 8 meses
Puntos: 0
Pregunta Seleccionar/Ordenar ARCHIVO segun ultima modificacion?

Hola gente, estoy con un catálogo de productos, y en el listado, necesito que en cada producto se muestre la primer foto cargada de todos las que haya.

Las fotos se almacenan en carpetas nombradas con la ID del registro, sin guardar en la BD el nombre o la ruta de cada una.

Lo ideal sería filtrar la carpeta de cada artículo, buscando el .jpeg que se haya cargado primero que todos.

Traté usando filemtime(), filectime() pero no tuve resultados aceptables.

Espero que puedan darme una mano, gracias!

<< niko >>

Última edición por NnikoO; 23/01/2013 a las 05:50
  #2 (permalink)  
Antiguo 23/01/2013, 06:56
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Seleccionar/Ordenar ARCHIVO segun ultima modificacion?

Algo asi debería servir.. se trata de obtener la info de los ficheros ponerla en un array, ordenar ese array y coger el primer elemento... no?

Código PHP:
Ver original
  1. <?php
  2.  
  3. $id=X;
  4. $files = array();
  5.  
  6. foreach (new DirectoryIterator('/path/'.$id) as $fileInfo) {    
  7.          $files[$fileInfo->getFileName()] = $fileInfo->getCTime();
  8. }
  9.  
  10. asort($files);
  11.  
  12. $primeraFoto=$files[0];

http://php.net/manual/es/class.directoryiterator.php

http://php.net/manual/es/function.asort.php
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 23/01/2013, 07:16
Avatar de NnikoO  
Fecha de Ingreso: agosto-2008
Ubicación: Rosario
Mensajes: 245
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Seleccionar/Ordenar ARCHIVO segun ultima modificacion?

Si, eso mismo, ver como ordenar el array segun la fecha de modificacion que presenten las imagenes y mostrar la mas "vieja".

DirectoryIterator me tira el siguiente error (confieso que recien conozco esta clase por vos):

Fatal error: Uncaught exception 'RuntimeException' with message 'DirectoryIterator::__construct(galeria_articulos/44) [<a href='directoryiterator.--construct'>directoryiterator.--construct</a>]: failed to open dir: No such file or directory' in /home/bordafa/public_html/prueba/scripts/page_catalogo.php:38 Stack trace: #0 /home/bordafa/public_html/prueba/scripts/page_catalogo.php(38): DirectoryIterator->__construct('galeria_articul...') #1 {main} thrown in /home/bordafa/public_html/prueba/scripts/page_catalogo.php on line 38
  #4 (permalink)  
Antiguo 23/01/2013, 10:05
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Seleccionar/Ordenar ARCHIVO segun ultima modificacion?

No encuentra el path
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #5 (permalink)  
Antiguo 24/01/2013, 05:34
Avatar de NnikoO  
Fecha de Ingreso: agosto-2008
Ubicación: Rosario
Mensajes: 245
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Seleccionar/Ordenar ARCHIVO segun ultima modificacion?

Si, estuve viendo, le puse el path correctamente, pero no muestra ninguna imagen...
  #6 (permalink)  
Antiguo 24/01/2013, 07:19
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Seleccionar/Ordenar ARCHIVO segun ultima modificacion?

Cita:
...pero no muestra ninguna imagen...
El codigo que te puse no muestra ninguna imagen simplemente seleciona el fichero mas antiguo

$primeraFoto=$files[0];

a partir de ahí con la info que tienes en $primeraFoto debes mostrar la foto....

usa

Código PHP:
Ver original
  1. echo "<pre>";
  2. print_r($primeraFoto);
  3. echo "</pre>";

para ver su contenido y postealo.

En principio deberia dar

array([nombrearchivo]=>fecha)

Luego

$nombrearchivo=array_keys($primeraFoto);

<img src='/path/".$id."/".$nombrearchivo[0]."'>

deberia mostrar la foto.


Código PHP:
Ver original
  1. <?php
  2.  
  3. $id=X;
  4. $files = array();
  5. $dir= new DirectoryIterator('/path/'.$id);
  6.  
  7. foreach ($dir as $fileInfo) {    
  8.          $files[$fileInfo->getFileName()] = $fileInfo->getCTime();
  9. }
  10.  
  11. asort($files);
  12.  
  13. $primeraFoto=$files[0];
  14.  
  15. $nombrearchivo=array_keys($primeraFoto);
  16.  
  17. echo "<img src='/path/".$id."/".$nombrearchivo[0]."'>";
  18.  
  19. ?>

Podria ser que tengas que filtrar las referencias al directorio actual y al superior ("." y "..").


Código PHP:
Ver original
  1. foreach ($dir as $fileInfo) {    
  2.     if($fileInfo->getFileName()!="." && $fileInfo->getFileName()!=".."){
  3.          $files[$fileInfo->getFileName()] = $fileInfo->getCTime();
  4.     }
  5. }
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 24/01/2013 a las 07:41
  #7 (permalink)  
Antiguo 24/01/2013, 09:13
Avatar de NnikoO  
Fecha de Ingreso: agosto-2008
Ubicación: Rosario
Mensajes: 245
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Seleccionar/Ordenar ARCHIVO segun ultima modificacion?

quimfv gracias por la ayuda. Ya me había puesto con eso, pero resulta que cuando tiro el:

Código PHP:
Ver original
  1. echo "<pre>";
  2.     print_r($primeraFoto);
  3.     echo "</pre>";

Aparece vacío, y aplicando todo el script, la línea:
Código PHP:
Ver original
  1. $nombrearchivo=array_keys($primeraFoto);

Me da error, diciendome que $primeraFoto no es un arreglo :/
  #8 (permalink)  
Antiguo 24/01/2013, 14:34
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Seleccionar/Ordenar ARCHIVO segun ultima modificacion?

Cambio de estrategia

1. A $id obvimente le tienes que hacer llegar el id para que construya el path
2. Tienes que filtrar "." y "..", y si tienes ficheros en el mismo path que no son imagenes tambien tendrias que filtrarlos.
3. Testado funciona.

Código PHP:
Ver original
  1. <?php
  2.     $id="X";
  3.     $camino="path";
  4.     $files = array();
  5.     $dir= new DirectoryIterator($camino.'/'.$id);
  6.      
  7.     foreach ($dir as $fileInfo) {
  8.         if($fileInfo->getFileName()!="." && $fileInfo->getFileName()!=".."){
  9.             $file["nombre"]=$fileInfo->getFileName();  
  10.             $file["fecha"] = $fileInfo->getCTime();
  11.             $files[]=$file;
  12.         }
  13.     }
  14.     foreach ($files as $key => $row) {
  15.         $nombre[$key]  = $row['nombre'];
  16.        $fecha[$key] = $row['fecha'];
  17.     }    
  18.     array_multisort($fecha, SORT_ASC, $nombre, SORT_ASC, $files);
  19.     echo "<pre>";
  20.         print_r($files);
  21.     echo "</pre>";
  22.    
  23.     echo "<img src='".$camino."/".$id."/".$files[0]["nombre"]."'>";
  24.      
  25.     ?>
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Etiquetas: imagenes, modificacion, primera, sort
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:16.