Foros del Web » Programando para Internet » PHP »

leer directorio alfabeticamente

Estas en el tema de leer directorio alfabeticamente en el foro de PHP en Foros del Web. hola.. tengo un script ke lee los archivos de un directorio pero no me los ordena, como pued hacer para ke me los lea ordenados ...
  #1 (permalink)  
Antiguo 17/04/2003, 17:10
Avatar de vampira  
Fecha de Ingreso: noviembre-2002
Mensajes: 247
Antigüedad: 21 años, 5 meses
Puntos: 0
leer directorio alfabeticamente

hola.. tengo un script ke lee los archivos de un directorio pero no me los ordena, como pued hacer para ke me los lea ordenados alfabeticamente?

saludos..
  #2 (permalink)  
Antiguo 17/04/2003, 17:16
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 22 años, 3 meses
Puntos: 5
Convierte los nombres a strings, luego los metes a un array...

y luego sorteas el array...



Creo que puede funcionar.
__________________
Manoloweb
  #3 (permalink)  
Antiguo 17/04/2003, 17:16
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Si pones el código que usas tal vez te podrémos orientar mejor ..

En principio no sé si usa un array para mostar esos directorios .. De todas formas la solución mas rápida es usar lo que uses y volcarlo a un array para luego aplicar cualquier función de ordenamiento de arrays .. como asort() .. y funciones afines ..

En resumen .. para "volcar" tu listado de archivos a un array ...

Si hace algun echo $archivo .. usa $archivos_array[]=$archivo; .. y en lugar de presentar (hacer el "echo") ahí en ese bucle .. lo haces leyendo el $archivos_array con un bucle foreach() por ejemplo previo haber usado asort($archivos_array) para ordenarlo ..

Un saludo,

pd: Intentalo hacer como te menciono .. y con lo que tegas si tienes problemas preguntas las dudas puntuales ..
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #4 (permalink)  
Antiguo 17/04/2003, 17:25
Avatar de lado2mx
Colaborador
 
Fecha de Ingreso: agosto-2001
Ubicación: Veracruz
Mensajes: 3.720
Antigüedad: 22 años, 8 meses
Puntos: 9
pues si es el script que se obtiene directamente de la página de PHP, pues creo que el listado de los archivos los hace alfabéticamente.

Ejemplo usado es en mi página: http://www.ladodos.com/webtotal/codigos.php

Ahi se listan alfabéticamente.

Chequen el código fuente de este:

http://www.ladodos.com/webtotal/codi...directorio.php

Salu2
  #5 (permalink)  
Antiguo 17/04/2003, 17:32
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 22 años, 3 meses
Puntos: 5
Pues en esa pagina que pones... no veo nada alfabetico...




Saludos
__________________
Manoloweb
  #6 (permalink)  
Antiguo 17/04/2003, 17:33
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Sigo opinando en: ARRAY's Power xDD

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #7 (permalink)  
Antiguo 17/04/2003, 17:39
Avatar de vampira  
Fecha de Ingreso: noviembre-2002
Mensajes: 247
Antigüedad: 21 años, 5 meses
Puntos: 0
gracias x las sugerencias...
y si kisiera ordenarlos x fecha descendente seria lo mismo?, tendria ke leer la fecha de modificiacion y luego crear el array y ordenarlo??

este es mi codigo... lee los archvos de un directorio thumbs y los muestra como imagenes...

Código PHP:
  <table width="54%" border="1" bordercolor="#FFFFFF" align="center">
 <? $path="galeria/thumbs";
  
$dir_handle = @opendir($path) or die("Unable to open $path");

  
$i=0;
 
  while (
$file readdir($dir_handle)) {
    if (
$file != "." && $file != "..") { 
     
$i++;
     if (((
$i%7)== 0) || (i==1)) 
      { echo 
"<tr>";  }   ?>
      <td width="23%" OnMouseOver="this.style.backgroundColor='#990000'" OnMouseOut="this.style.backgroundColor='#DBE7F3'"> 
      <a href="javascript:NewWindow=window.open('galeria/ver_foto.php?foto=<?=$file?>&texto=Patricia Villarreal 400m libres','AppWin','width=656,height=450,toolbar=0,location=0,directories=0,status=0,menuBar=0,scrollBars=0,resizable=0'); NewWindow.focus();"> 
      <img src="galeria/thumbs/<?=$file?>" width="59" height="59" alt="<?=$file?>" border="0"></a></td>
    <? if (($i%6)== 0
      { echo 
"</tr>";  }
      } 
// if   
   
// while               
  
  //closing the directory
  
closedir($dir_handle);
  
?>
  </table>
  #8 (permalink)  
Antiguo 17/04/2003, 17:51
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Te vendría bien un array bidimensional tipo:

Código PHP:
$archivos_array[]['nombre']=$file;
$archivos_array[]['fecha_modificacion']=fileatime($file); // no sé si con eso sobra o tendras q indicar el path tambien ...
$archivos_array[]['etc']="etc"
Y para obtener la fecha de la última modificación .. puedes usar:
filectime() o fileatime() ...

Y todo ese HTML .. sacarlo fuera de ese bucle que lees el directorio .. ahora tendras que usar otro bucle para presentar tus archivos leyendolos del array .. previo ordenar con:

array_multisort()

Si los arrays bidimiensionales te complican .. usa arrays unidimensionaleas .. pero ahí te complicaras a la hora de ordenar y mantener los indices ..

Un saludo,

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #9 (permalink)  
Antiguo 17/04/2003, 18:34
 
Fecha de Ingreso: agosto-2002
Ubicación: Colón - Entre Rios - Argentina
Mensajes: 647
Antigüedad: 21 años, 8 meses
Puntos: 8
Yo lo haria de esta forma: cuando creo el array le pongo de indice el nombre del archivo (ya que no puede haber 2 iguales en el mismo directorio), y de valor en timestamp devuelto por filemtime();
Algo asi:
Código PHP:
$d dir("/windows/escritorio");
while(
$entry $d->read()) {
    
$entradas[$entry] = filemtime($d->path."/".$entry);
}
$d->close(); 
Despues usas asort() o arsort() para que sea un orden ascendiente/descendiente. Tambien recordá que cuando muestres la fecha debes usar date() para convertir el timestamp en el array a un formato "legible".
Por ej:
Código PHP:
asort ($entradas);   // esto lo puedes reemplazar por arsort($entradas);
foreach ($entradas as $archivo => $timestamp) {
    echo 
date("d-m-y"$timestamp)." - <b>$archivo</b><br>\n";

No puedes usar funciones de orden que no mantengan la relacion de índices.
Repasa las funciones de matrices del manual ofical, es un tema bastante util y entretenido (xDD).
http://www.php.net/manual/es/ref.array.php

Pasate por aqui, que tambien te puede servir:
http://www.forosdelweb.com/showthrea...hreadid=124134

Saludos!
  #10 (permalink)  
Antiguo 16/07/2004, 02:19
 
Fecha de Ingreso: febrero-2004
Mensajes: 1.987
Antigüedad: 20 años, 2 meses
Puntos: 22
Este valor sólo es cacheado durante el tiempo de vida de una petición simple.

Estoy colocando mal el clearcache?

$file = 'charlas/'.SESSION_ID().'.txt';
$ac = filectime($file);
clearstatcache();
echo time(date('Y-m-d')).' <-<br>';
echo $ac.'<br>1089964197 estava antes';
$ram =time(date('Y-m-d'))-$ac;
echo "exito!: $ram";
  #11 (permalink)  
Antiguo 16/07/2004, 06:49
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Anarko .. creo que te equivocastes de mensaje .. Inicia un nuevo tema con tu pregunta concreta.

Un saludo,
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 14:48.