Ver Mensaje Individual
  #1 (permalink)  
Antiguo 08/04/2017, 16:45
Avatar de freesoftwarrior
freesoftwarrior
 
Fecha de Ingreso: marzo-2006
Mensajes: 362
Antigüedad: 18 años, 1 mes
Puntos: 10
Problemas con lectura de directorio de archivos

Buenas tardes:
Hace poco he empezado el estudio de PHP y luego de un tiempo empecé un pequeño proyecto, pero sucede que no responde como esperaba y no logro encontrar la causa.

Se trata de 2 archivos php, uno lee el contenido de una carpeta y lo muestra, y el otro, ubicado dentro de la carpeta mencionada, abre uno a uno los archivos TXT y lee la primera línea. Nada complicado.

El código del primer archivo es el siguiente

directorio.php
Código PHP:
<?php
$directorio 
opendir("./txt"); //ruta actual
$filas 1;
while (
$archivo readdir($directorio)) //obtenemos un archivo y luego otro sucesivamente
{
    if (
is_dir($archivo))//verificamos si es o no un directorio
    
{
        
//no pasa nada-
    
}
    else
    {
        echo 
$filas."&nbsp;&nbsp;&nbsp;".$archivo "<br />";
        
$filas++;
    }
}
?>
El resultado es un listado de 16 archivos, 15 txt y 1 php. Hasta ahí todo normal y sin problemas.

Al ejecutar el archivo PHP que está dentro de dicha carpeta, debería de mostrarme 15 contenidos, pero sólo me muestra 13. Y siempre son los mismos archivos los que omite. El código del archivo PHP es el siguiente:

Código PHP:
<table width="100%" border="1" cellspacing="0" cellpadding="0" align="center">
    <tr>
<?php
    $directorio 
opendir("."); //ruta actual
    
$contador 1;    //para crear solamente 5 columnas en la tabla
    
    
while ($archivo readdir($directorio)) //obtenemos un archivo y luego otro sucesivamente
    
{
        if (
is_dir($archivo)) //verificamos si es o no un directorio
        
{
            
//no pasa nada
        
}
        else
        {
            if (
$contador 5)
            {
                
//cerramos la fila
                
echo "</tr>";
                
$contador 1;
            }
            else
            {
                if (
$archivo=="listado.php")
                {
                    
//esto es para pasar por alto el archivo php
                
}
                else
                {
                    
//abrimos el archivo y leemos la primera línea
                    
$fp fopen($archivo"r");
                    
$linea fgets($fp);
                    
fclose($fp);
                    
                    if (
$contador == 1)
                    {
                        
//abrimos una nueva fila
                        
echo "<tr>";
                    }
                    
                    
$contador++;
?>
        <td>
<?php
                    
echo $archivo."<br>";
?>
            <iframe src="<?php echo $linea?>media/?size=l" width="250" height="400" scrolling="no" frameborder="1"></iframe>
        </td>
<?php
                
}    //if listado.php
            
}    //if contador
        
}    //if is_dir
    
}    //while
    
    
if ($contador <=5)
    {
        
//no pasa nada
    
}
    else
    {
        echo 
"</tr>";
    }
?>
</table>
En cada archivo TXT hay un link a una imagen publicada en Instagram, nada que ocasione problemas al cargar, sin embargo, no me muestra todos. Inicialmente había probado con 92 y sólo cargaban 76, así que separé los 15 que no eran leídos por si encontraba algún error, pero al probar con los 15 mencionados, omitía siempre 2. Sin embargo, al dejar los 2 que siempre omitía, los muestra sin ningún problema.

Eso me hace pensar que algo esta mal en el código, pero por más que le doy vueltas, no encuentro que puede ser.

Espero me puedan dar una orientación al respecto.

Un saludo desde Lima, Perú
Bendiciones