Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: 177600531 en 11 Febrero 2013, 22:23 pm



Título: Ordenar archivos de un directorio por fecha
Publicado por: 177600531 en 11 Febrero 2013, 22:23 pm
Bueno pues como dice el titulo del post lo que intento hacer es ordenar los archivos de un directorio por fecha pero no me sale lo he intentado con la función filemtime pero sin resultados, llevo ya medio día intentando por todos los medios ordenarlos y no lo consigo también he buscado en google unas cuantas horas. Agradeceria mucho que alguien que sepa más php que yo me ayudara con este problema que tengo, ósea mostrar los archivos de un directorio pero ordenarlos por fecha, el ultimo archivo subido que sea el primero y etc…

Gracias con antelación.

Esto es lo que tengo de momento.

Código
  1. <?php
  2. if ($gestor = opendir('files')) {
  3. echo "<ul>";
  4.    while (false !== ($arch = readdir($gestor))) {
  5.   if ($arch != "." && $arch != "..") {
  6.   echo "<li><a href=\"files/".$arch."\" class=\"linkli\">".$arch."</a></li>\n";
  7.   }
  8.    }
  9.    closedir($gestor);
  10. echo "</ul>";
  11. }
  12. ?>


Título: Re: Ordenar archivos de un directorio por fecha
Publicado por: EFEX en 11 Febrero 2013, 22:58 pm
Código
  1. <?php
  2. if ($gestor = opendir('files/')) {
  3. while (false !== ($arch = readdir($gestor))) {
  4. if ($arch != "." && $arch != "..") {
  5. $archivos[filemtime($arch)] = $arch;  // Hacemos un listado de archivos junto con su fecha de modificacion
  6. }
  7. }
  8. closedir($gestor);
  9. echo "<ul>";
  10. sort($archivos, SORT_NUMERIC);  //Ordenamos por fecha
  11. foreach ($archivos as $key => $archivo) {
  12. $fecha = date('F d Y, H:i:s',filemtime($archivo));  //Obtenemos la fecha en formato de mes, dia, año, hora, minutos, segundos
  13. echo "<li><a href=\"files/".$archivo."\" class=\"linkli\">".$archivo."</a></li> Fecha ".$fecha."\n";
  14. }
  15. echo "</ul>";
  16. }
  17. ?>
  18.  


Título: Re: Ordenar archivos de un directorio por fecha
Publicado por: 177600531 en 12 Febrero 2013, 12:20 pm
Gracias por tu ayuda, la verdad es que ya lo había resuelto, siempre me saltaba un warning en la función filemtime pero hacia su trabajo al final he resuelto el problema con un:
Código
  1. <?
  2. ?>

Dejo el code con el que al final resolví el problema también por si a alguien le sirve en un futuro y que no se pase comiéndose el coco un día entero. Gracias por todo.

Saludos.

Código
  1. <?php
  2. $directorio = 'files';
  3. function ordenar($a,$b){
  4. global $directorio;
  5. $a = filemtime($directorio.$a);
  6. $b = filemtime($directorio.$b);
  7. if ($a == $b) {
  8. return 0;
  9. }
  10. return ($a < $b) ? -1 : 1;
  11. }
  12. $dir="files";  
  13. $directorio = opendir($dir);  
  14. while ($archivo = readdir($directorio)) {  
  15. if ($archivo=="." || $archivo=="..") { echo " "; } else {  
  16. $archivos[$archivo] = $archivo;
  17. }
  18. }  
  19. ksort ($archivos);
  20. usort($archivos, "ordenar");
  21. foreach ($archivos as $archivo) {  
  22. echo "<a href=\"files/".$archivo."\" class=\"linkli\">".$archivo."</a><br>";
  23. }
  24. ?>