Foros del Web » Programando para Internet » PHP »

Ordenar resultados de readdir()

Estas en el tema de Ordenar resultados de readdir() en el foro de PHP en Foros del Web. Saludos, tengo un problemilla, quiero ordenar los resultados de un readdir pero no encuentro la forma, imagino que será sencillo pero yo no he sido ...
  #1 (permalink)  
Antiguo 05/08/2004, 12:40
 
Fecha de Ingreso: agosto-2004
Ubicación: Valencia
Mensajes: 149
Antigüedad: 19 años, 8 meses
Puntos: 0
Ordenar resultados de readdir()

Saludos,
tengo un problemilla, quiero ordenar los resultados de un readdir pero no encuentro la forma, imagino que será sencillo pero yo no he sido capaz, os copio el código que utilizo actualmente para ver que puedo hacer:
<?
$dir="fotos/";
$directorio=opendir($dir);
echo "<b>Directorio actual:</b> <br>&nbsp;&nbsp;&nbsp;$dir<br>";
echo "<b>Archivos:</b> <br>";
while ($archivo = readdir($directorio)) {
if ($archivo==".") { echo " "; } else if ($archivo=="..") { echo " "; } else {
echo "<p>";
$archivo2=$archivo;
$archivo = str_replace("_", "&nbsp;", $archivo);
echo "<a href=\"fotos.php?seccion=$archivo2\" target=\"_blank\">$archivo</a>";
}
}
closedir;
?>
Lo que hace este scrip es listar las carpetas que hay dentro de fotos, pero sin ordenar, y yo las quiero ordenar de forma alfabética, agradecería mucho cualquier ayuda.
  #2 (permalink)  
Antiguo 05/08/2004, 14:46
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Tienes que leer el directorio (sus archivos) .. almacenarlos en un array -> ordenar el array y luego presentar leer ese nuevo array (ordenado) para representar tus links o resto de código:

Código PHP:
<?
$archivos
=array();
$dir="fotos/";
$directorio=opendir($dir); 
echo 
"<b>Directorio actual:</b> <br>&nbsp;&nbsp;&nbsp;$dir<br>"
echo 
"<b>Archivos:</b> <br>"
while (
$archivo readdir($directorio)) {
// Incluyo chequeo para no almacenar las entradas de directorios ni directorios (is_dir())
   
if ($archivo !="." && $archivo !=".." && !is_dir($archivo)) { 
       
// acomulas los nombres de archivos en un array.
      
$archivos[]=$archivo;
  } 
}
closedir

// Ordenas tu array:
sort($archivos); 
// (y mueves el puntero interno del array al principio ..)
reset($archivos); 

// Lees tu array de $archivos
foreach ($archivos as $archivo){
   echo 
"<p>";
   
$archivo2=$archivo;
   
$archivo str_replace("_""&nbsp;"$archivo);
   echo 
"<a href=\"fotos.php?seccion=$archivo2\" target=\"_blank\">$archivo</a>";   
}
?>

Un saludo,

Última edición por Cluster; 06/08/2004 a las 07:53
  #3 (permalink)  
Antiguo 06/08/2004, 06:35
 
Fecha de Ingreso: agosto-2004
Ubicación: Valencia
Mensajes: 149
Antigüedad: 19 años, 8 meses
Puntos: 0
Hola Cluster,
gracias por tomar tiempo y responder a mi pregunta.
He implementado el código pero sigue sin ordenar los resultados, además salen . y .., quizás el error sea que tiene que leer directorios, o sea carpetas, no archivos.
Seguiré probando y ya os contaré,
Salu2.
  #4 (permalink)  
Antiguo 06/08/2004, 07:52
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Ok, me equivoqué en el operador en el IF() .. no es || (or) sino && (AND) .. (fué un despiste ¬¬)

Y en lugar de asort() usar sort() .. (parece que hay un problema por ahí con los indices .. en el foreach() sólo tomo valores no los indices).

Un saludo,
  #5 (permalink)  
Antiguo 06/08/2004, 11:58
 
Fecha de Ingreso: agosto-2004
Ubicación: Valencia
Mensajes: 149
Antigüedad: 19 años, 8 meses
Puntos: 0
Aquí os dejo el código final y funciona correctamente:

<?
$archivos=array();
$dir="fotos/";
$directorio=opendir($dir);
echo "<b>Directorio actual:</b> <br>&nbsp;&nbsp;&nbsp;$dir<br>";
echo "<b>Archivos:</b> <br>";
while ($archivo = readdir($directorio)) {
// Incluyo chequeo para no almacenar las entradas de directorios ni directorios (is_dir())
if ($archivo==".") { echo " "; } else if ($archivo=="..") { echo " "; } else {
// acomulas los nombres de archivos en un array.
$archivos[]=$archivo;
}
}
closedir;

// Ordenas tu array:
sort($archivos);
// (y mueves el puntero interno del array al principio ..)
reset($archivos);

// Lees tu array de $archivos
foreach ($archivos as $archivo){
echo "<p>";
$archivo2=$archivo;
$archivo = str_replace("_", "&nbsp;", $archivo);
echo "<a href=\"fotos.php?seccion=$archivo2\" target=\"_blank\">$archivo</a>";
}
?>
  #6 (permalink)  
Antiguo 11/06/2006, 21:43
 
Fecha de Ingreso: diciembre-2004
Mensajes: 354
Antigüedad: 19 años, 4 meses
Puntos: 2
Tabla

Alguen me podria ayudar en como ese mismo codigo mostrarlo en una tabla de X celdas para el lado?
__________________
Pedro Pablo Vivanco D.
Webmaster todoalbo.cl
[email protected]
http://www.todoalbo.cl
"Dios creo el Cielo, Colo-Colo le puso todas sus Estrellas"
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 23:21.