Foros del Web » Programando para Internet » PHP »

Consulta sobre script

Estas en el tema de Consulta sobre script en el foro de PHP en Foros del Web. Hola gente, les comento me daria verguneza pedir ayuda asi... pero nada, el sitio que estoy haciendo es para compartir libros digitales.. para todo el ...
  #1 (permalink)  
Antiguo 13/09/2006, 22:29
 
Fecha de Ingreso: septiembre-2006
Mensajes: 2
Antigüedad: 17 años, 7 meses
Puntos: 0
Consulta sobre script

Hola gente, les comento me daria verguneza pedir ayuda asi... pero nada, el sitio que estoy haciendo es para compartir libros digitales.. para todo el mundo.

Tengo el siguiente problema: hago que php liste los directorios y archivos pero de una forma desordenada no alfabetica. Ademas, no diferencia entre directorio y archivo. Alguien sabe como hacer para que pueda listar los directorios con libros de manera ordenada alfabeticamente y diferenciando entre directorios y archivos?. El codigo que tnego es el siguiente, les agradezco la ayuda.

PD: mas de 6k de libros para descargar :D.-

Código PHP:
$dir = (isset($_GET['dir']))?$_GET['dir']:"C:\Archivos de programa\eMule\Incoming\librod\libros"
$directorio=opendir($dir);  
echo 
"<b>Directorio actual:</b><br>$dir<br>";  
echo 
"<b>Archivos:</b><br>";  
while (
$archivo readdir($directorio)) {  
  if(
$archivo == '.'
    echo 
"<a href=\"?dir=.\">$archivo</a><br>";  
  elseif(
$archivo == '..'){  
    if(
$dir != '.'){  
      
$carpetas split("/",$dir);  
      
array_pop($carpetas);  
      
$dir2 join("/",$carpetas);  
      echo 
"<a href=\"?dir=$dir2\">$archivo</a><br>";  
    }  
  } 
  elseif(
is_dir("$dir/$archivo")) 
    echo 
"<a href=\"?dir=$dir/$archivo\">$archivo</a><br>";  
  else echo 
"$archivo<br>";  
}  
closedir($directorio); 
  #2 (permalink)  
Antiguo 14/09/2006, 02:09
Avatar de djreficul  
Fecha de Ingreso: julio-2006
Ubicación: Cork
Mensajes: 672
Antigüedad: 17 años, 9 meses
Puntos: 0
En lugar de mostrarlos directamente, xq no almacenas los directorios y los archivos en 2 arrays diferentes y los ordenas antes de mostrar los enlaces?

Saludos.
__________________
La muerte es un camino que todos debemos recorrer...
  #3 (permalink)  
Antiguo 14/09/2006, 03:09
 
Fecha de Ingreso: septiembre-2006
Mensajes: 2
Antigüedad: 17 años, 7 meses
Puntos: 0
-_- mas despacio cerebrito... jajajaja. el codigo que ves arriba lo saque de otra pagina, podes mostrarme como se hace?. jajajajaj. Saudos gracias.-
  #4 (permalink)  
Antiguo 14/09/2006, 03:27
Avatar de djreficul  
Fecha de Ingreso: julio-2006
Ubicación: Cork
Mensajes: 672
Antigüedad: 17 años, 9 meses
Puntos: 0
Bien, voy a exponerlo comentado, jejeje.

Código PHP:
$num_dirs=0;
$num_archs=0;
while (
$archivo readdir($directorio)) {   
  if(
$archivo == '.') {  
    
//Asignamos el directorio al array
    
$dirs[$num_dirs]= "<a href=\"?dir=.\">$archivo</a><br>";   
    
//Aumentamos el objeto q usamos como índice para el array. En los de abajo es 3/4 de lo mismo.
    
$num_dirs++;
  } elseif(
$archivo == '..'){   
    if(
$dir != '.'){   
      
$carpetas split("/",$dir);   
      
array_pop($carpetas);   
      
$dir2 join("/",$carpetas);   
      
$dirs[$num_dirs]="<a href=\"?dir=$dir2\">$archivo</a><br>";   
      
$num_dirs++;
    }   
  }  
  elseif(
is_dir("$dir/$archivo")) { 
    
$dirs[$num_dirs]= "<a href=\"?dir=$dir/$archivo\">$archivo</a><br>";   
    
$num_dirs++;
  } else {
     
$archs[$num_archs]="$archivo<br>";   
     
$num_archs++;
  }
}   
//Ahora hay q ordenar los arrays:
sort ($dirs);
sort ($archs);
//Recorremos los arrays y mostramos. Empezamos por los directorios
for ($i=0;$i<$num_dirs;$i++) echo $dirs[$i];
//Y ahora los archivos
for ($i=0;$i<$num_archs;$i++) echo $archs[$i]; 
Espero q esto te sirva como orientación... No estoy seguro q esté del todo correcto. Espero no haberme comido ningún símbolo.

Saludos.
__________________
La muerte es un camino que todos debemos recorrer...
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 19:30.