PHP - ordenar datos de directorio en php

 
Vista:

ordenar datos de directorio en php

Publicado por estibaliz2006 (4 intervenciones) el 06/04/2007 16:32:40
hola. tengo una duda que por más que trato de dar solución no lo consigo. bueno. tengo un directorio donde a su vez hay tanto archivos como directorios. estos datos los muestro leyendo el directorio y los muestro en columnas, tales como:

nombre --- (donde se recogen los nombres bien del archivo bien del subdirectorio)

tamaño --- (donde recojo el tamaño del archivo o el tamaño global del subdirectorio)

fecha --- (donde se recoge la fecha en la que fue añadido el archivo al directorio o bien la fecha de creación del subdirectorio)

este listado lo muestra sin ningún tipo de orden. tal cual. yo lo que quiero es que, en el título de cada uno de esos campos, es decir, 'nombre', 'tamaño' y 'fecha', al pinchar en ellos, los resultados se muestren ordenados de menor a mayor según el campo en el que pinche.
he estado indagando y he tratado de obtenerlo con la función sort, pero no hay manera.
cómo obtengo el contenido del directorio y de cada campo. a través de este código:

leo lo que hay en el directorio (tanto archivos como subdirectorios):

Código PHP:
$path = "directorio";
if ($handle = opendir($path))
{
while (false !== ($file = readdir($handle)))

{

if ($file != "." && $file != "..")

{

$fName = $file;

$file = $path.'/'.$file;

y una vez tengo ya el acceso para leerlos, los pongo en cada campo.

así, en el campo 'nombre', el código que utilizo para obtener los nombres de los ficheros o subdirectorios es el siguiente:

Código PHP:
if(is_file($file))////si es un fichero
{
print"<a href='".$file."'>".$val."</a>";
}

if(is_dir($file))////si es un directorio
{
print "<a href='index.php?mod=10&path=$file'>$val</a>";
}

en el campo 'tamaño' para calcular los tamaños de cada fichero o de cada subdirectorio, utilizo este código:

Código PHP:
////tamaño si es un archivo//////////
if(is_file($file))
{
$tama = ( filesize( "$file" ) );

// formateo los numeros a dos decimales
if ( $tama >= 1073741824 )
{
$tama = round( $tama / 1073741824 * 100 ) / 100 . " " . "Gb";
}
else if ( $tama >= 1048576 )
{
$tama = round( $tama / 1048576 * 100 ) / 100 . " " . "Mb";
}
else if ( $tama >= 1024 )
{
$tama = round( $tama / 1024 * 100 ) / 100 . " " . "Kb";
}
else
{
$tama = $tama . " " . "b";
}
echo ("$tama");
}

////final tamaño si es un archivo/////////

else

////tamaño si es un directorio//////////////

if(is_dir($file))
{
$tama = ( dirsize( "$file" ) );
// formateo los numeros a dos decimales
if ( $tama >= 1073741824 )
{
$tama = round( $tama / 1073741824 * 100 ) / 100 . " " . "Gb";
}
else if ( $tama >= 1048576 )
{
$tama = round( $tama / 1048576 * 100 ) / 100 . " " . "Mb";
}
else if ( $tama >= 1024 )
{
$tama = round( $tama / 1024 * 100 ) / 100 . " " . "Kb";
}
else
{
$tama = $tama . " " . "b";
}
echo ("$tama"); }

por último, en el campo 'fecha', que recoge la fecha en la que fue subido el archivo o fue creado el subdirectorio, el código es este:

Código PHP:
echo date("j.n.Y H:i:s",filemtime($file))

bien, pues cómo hago esto? ya os digo que me he roto la cabeza con la función sort, creando un array pero no hay forma.
me ayudáis?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder