Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Listar directorios en doscolumnas

Estas en el tema de Listar directorios en doscolumnas en el foro de PHP en Foros del Web. Estimados, a ver si me pueden ayudar con lo siguiente. En mi servidor de prueba tengo una cantidad apreciable de sitios de clientes, algunos pocos ...
  #1 (permalink)  
Antiguo 05/08/2011, 09:49
Avatar de Dragon_Mandarin  
Fecha de Ingreso: marzo-2005
Ubicación: Santiago de Chile
Mensajes: 231
Antigüedad: 19 años, 1 mes
Puntos: 14
Pregunta Listar directorios en doscolumnas

Estimados, a ver si me pueden ayudar con lo siguiente. En mi servidor de prueba tengo una cantidad apreciable de sitios de clientes, algunos pocos de recursos y de experimentación. Bueno, el scroll hacia abajo ya se convirtió hace rato en algo desagradable. Y, por lo mismo, pensé si acaso lo mejor es listar los directorios o carpetas en columnas, dos, por ejemplo. Bueno, alguien podrá decir que vaya borrando .. y claro, si lo he hecho, pero los que tengo (mejor ni digo la cifra) los necesito donde están, en el server de prueba (Appserver).

Tengo este código:

Código PHP:
Ver original
  1. <?php
  2. //Establezco el numero de columnas
  3. $columns = 2;
  4. echo "<table width='100%' align='center' border='1' cellpadding='3' cellspacing='3'>";
  5. $directorio = opendir(".");
  6. while ($archivo = readdir($directorio))
  7.    {
  8.    $nombreArch = ucwords($archivo);
  9.    $nombreArch = str_replace("..", "Atras", $nombreArch);
  10. for($i = 0; $i < $directorio; $i++) {
  11.       if($i % $columns == 0) {
  12. //SI NO HAY RESTO SIGNIFICA QUE INICIAMOS UNA NUEVA FILA
  13.     echo "<tr>";
  14. }
  15.     echo "<td width='15%' valign='top'>";
  16.     echo "<a href='$archivo'>";
  17.     echo "<img src='./appserv/dir.png' alt='Ver $nombreArch'";
  18.     echo " border=0>";
  19.     echo "<b>&nbsp;$nombreArch</b></a>
  20.     </td>";
  21.       if(($i % $columns) == ($columns - 1) || ($i + 1) == $directorio) {
  22.             //SI EL RESTO ES UNO
  23.             //O SI NO HAY NADA MAS A LA IZQUIERDA
  24.             //ES EL FINAL DE LA TABLA
  25.             echo "</TR>";
  26.         }
  27.     }
  28. }
  29. closedir($directorio);
  30. echo "</table>";
  31. ?>

El problema que estoy enfrentando es que, en efecto, me muestra dos columnas, pero en vez de que las carpetas continúen desplegándose en la columna siguiente (a mano derecha), me replica el mismo listado de a mano izquierda. ¿Qué estoy haciendo mal?

Ojalá alguien pueda ayudarme con esto, que para mi no es tema menor.

Muchísimas gracias de antemano!
  #2 (permalink)  
Antiguo 05/08/2011, 11:24
Avatar de jamesjara  
Fecha de Ingreso: mayo-2008
Ubicación: san jose
Mensajes: 449
Antigüedad: 15 años, 11 meses
Puntos: 7
Respuesta: Listar directorios en doscolumnas

No te entendi muy bien amigo pero creo que lo que quieres hacer es esto

Basicamente:
Para poder dividir necesito el total de archivos, luego gracias a el total puedo saber cuando saltar de columna, no es necesario ponerlo dos veces si lo utilizas asi "if ( $count % columns == 0 ) echo "</tr><tr>";", y a primera vista de tu codigo hay varios errores entre ellos "$i < $directorio;" si no me equivoco un recurso $directorio no puede dar un numero , lo mas cercano seria count($directorio) pero tampoco funciona con eso...
Si no te gusta la idea leer la carpeta dos veces por tiro..entonces lo mas simple es agregar todos estos archivos en un array, y contar el array..mostrar el array...

Código PHP:
    <?php
    
//Establezco el numero de columnas
    
$columns 3;
    echo 
"<table width='100%' align='center' border='1' cellpadding='3' cellspacing='3'>";
    
$directorio opendir(".");
    
//while ($archivo = readdir($directorio)){ //esta malo segun http://php.net/manual/es/function.readdir.php
    
$total_files 0;
    while (
false !== ($archivo readdir($directorio))){
    
$total_files++;
    }    
    
$count 0;
    
closedir($directorio);
    
$directorio opendir(".");
    echo 
"<tr>";
    while (
false !== ($archivo readdir($directorio))){
        
$count++;
        
$nombreArch ucwords($archivo);
        
$nombreArch str_replace("..""Atras"$nombreArch);
        if ( 
$count $columns == ) echo "</tr><tr>";
        echo 
"<td width='15%' valign='top'>";
        echo 
"<a href='$archivo'>";
        echo 
"<img src='./appserv/dir.png' alt='Ver $nombreArch'";
        echo 
" border=0>";
        echo 
"<b>&nbsp;$nombreArch  </b></a>
        </td>"
;
    }
    
closedir($directorio);
    echo 
"</tr>";
    echo 
"</table>";
    
?>
__________________
X7CLOUD El webservice latino!
Compatible
con mysql,sql,sqlitte.
Compatible con extjs , sencha , smargwt, Gwt , Jquery , Charts, Streaming.

Última edición por jamesjara; 05/08/2011 a las 11:29
  #3 (permalink)  
Antiguo 05/08/2011, 12:03
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: Listar directorios en doscolumnas

Así siempre organizas los archivos de a 1 2 o 3 columnas o las que quieras:

Código PHP:
Ver original
  1. <?php
  2.  
  3. $columns = 3;
  4.  
  5. $ele = array();
  6. $directorio = opendir(".");
  7.  
  8. while ($archivo = readdir($directorio)) {
  9.     $nombreArch = ucwords($archivo);
  10.     $nombreArch = str_replace("..", "Atras", $nombreArch);
  11.     $ele[] = $nombreArch;
  12. }
  13.  
  14. closedir($directorio);
  15.  
  16. echo "<table width='100%' align='center'";
  17. echo "border='1' cellpadding='3' cellspacing='3'>";
  18.  
  19. $z = 0;
  20.  
  21.     foreach ($ele as $arc) {
  22.         if ($z % $columns == 0) {
  23.             echo "<tr>";
  24.         }
  25.         echo '<td><a href="' . $arc . '">' . $arc . '</a></td>';
  26.         $z++;
  27.  
  28.         if ($z % $columns == 0) {
  29.             echo "</tr>";
  30.         }
  31. }
  32.  
  33. echo '</table>';

Última edición por andresdzphp; 05/08/2011 a las 12:11 Razón: Puse el que no era xD
  #4 (permalink)  
Antiguo 05/08/2011, 12:31
Avatar de Dragon_Mandarin  
Fecha de Ingreso: marzo-2005
Ubicación: Santiago de Chile
Mensajes: 231
Antigüedad: 19 años, 1 mes
Puntos: 14
Respuesta: Listar directorios en doscolumnas

Amigo James, funcionó pero tiki taka, clever! Bueno, el que sabe sabe y el que no (yo jejejeje ), pues aprende. Probé tu código y me muestra todo el contenido de los directorios o carpetas en las tres columnas, con lo cual se reduce el scroll para buscar y entrar a las carpetas de mis clientes (sitios de prueba y desarrollo) y recursos php, javascript, etc). Cerca de 200 carpetas, mucho, era molesto tener que estar subiendo y bajando en el index.php que modifiqué luego de haber instalado el AppServ. Sirve harto, ahorra tiempo no tener que estar poniendo todas las veces http://localhost/carpeta del cliente, etc ...

Ese era el sentido de todo esto y ahora funciona sumamente bien.

Si alguien tiene el AppServ y necesita de este index modificado, pues me avisa y se lo envío, con el aporte de James.

Estimado Andrés, gracias a tí, también.

Bueno, a seguir estudiando el php, que me falta mucho por aprender y de ustedes estoy aprendiendo una barbaridad. ¡Muchísimas gracias!
  #5 (permalink)  
Antiguo 05/09/2011, 09:51
 
Fecha de Ingreso: septiembre-2011
Mensajes: 2
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: Listar directorios en doscolumnas

Hola,

yo estaba usando el codigo original del tema, porque se podia incorporar una imagen para cada archivo, en el ultimo codigo posteado, se elimina la opcion de incluir tal imagen, e intentado utilizar:

echo "<img src='./imagenes/imagen1.png'>";

pero la imagen no a parece junto al archivo sino en el top de la página.

y mi otra consulta es como puedo esconder archivos .php del listado, lo intente con:
un "if" pero tampoco he logrado nada.

gracias y esppero su respuesta:

dejo mi codigo tal cual lo tengo:

<?php

$columns = 3;

$ele = array();
$directorio = opendir(".");

while ($archivo = readdir($directorio)) {
$nombreArch = ucwords($archivo);
$nombreArch = str_replace("..", "Atras", $nombreArch);
$ele[] = $nombreArch;
$no_mostrar=array("",".php",".html");
echo "<img src='./imagenes/carpeta.png'>";
}

closedir($directorio);

echo "<table width='100%' align='center'";
echo "border='0' cellpadding='3' cellspacing='3'>";

$z = 0;

foreach ($ele as $arc) {
if ($z % $columns == 0) {
echo "<tr>";
}
echo '<td><a href="' . $arc . '">' . $arc . '</a></td>';
$z++;
if ($z % $columns == 0) {
echo "</tr>";


}
}

echo '</table>';

Última edición por romannovich; 05/09/2011 a las 09:53 Razón: falto escribir ejemplo

Etiquetas: directorios, listar, tabla
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 11:30.