Foros del Web » Programando para Internet » PHP »

Problema al leer fichero .txt

Estas en el tema de Problema al leer fichero .txt en el foro de PHP en Foros del Web. Hola a todos, lo que yo hago es con los datos del fichero llenar un select. El codigo es el siguiente: Código PHP: <select name="select">        ...
  #1 (permalink)  
Antiguo 21/09/2009, 13:28
Avatar de manumaf  
Fecha de Ingreso: mayo-2007
Ubicación: Argentina
Mensajes: 854
Antigüedad: 16 años, 11 meses
Puntos: 6
Problema al leer fichero .txt

Hola a todos, lo que yo hago es con los datos del fichero llenar un select. El codigo es el siguiente:

Código PHP:
<select name="select">
      <?php
      $fichero 
fopen("scripts/agregar/categorias.txt","r");
      
$peso filesize("$fichero");
     while(!
feof($fichero)) {
        
$linea fgets($fichero,$peso);
        echo 
"<option> $linea </option>";
        }
      
fclose("fichero");
      
      
?>
        
      </select>
El problema es que cuando el codigo se ejecuta se congela el navegador es como si el bucle nunca parara. A eso lo puedo solucionar cambiando la linea:
$peso = filesize("$fichero");
por:
$peso = 100; (o cualquier numero)

Pero el problema es que no se cuantos caracteres va a llevar el fichero por que va a llevar muchos, alguien me explica por que pasa esto que me pasa?
  #2 (permalink)  
Antiguo 21/09/2009, 13:34
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Problema al leer fichero .txt

Puede ser que el tamaño del archivo es muy grande y por eso se friza por un tiempo. ¿Cuanto pesa el archivo?
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 21/09/2009, 13:36
Avatar de manumaf  
Fecha de Ingreso: mayo-2007
Ubicación: Argentina
Mensajes: 854
Antigüedad: 16 años, 11 meses
Puntos: 6
Respuesta: Problema al leer fichero .txt

y ahora que lo estoy probando solamente 13 bytes es imposible que se trabe por el peso, no entiendo por que no se frena el bucle.
  #4 (permalink)  
Antiguo 21/09/2009, 13:53
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Problema al leer fichero .txt

Bueno revisando bien tu codigo, no estas cerrando correctamente fclose. Debes cerrar la variable $fichero no un string fichero
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 21/09/2009, 17:29
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Problema al leer fichero .txt

El problema es que fgets($fichero,$peso); tal vez te devuelva todo el archivo en el primer paso y no avance correctamente el apuntador. Intenta quitando de ahi la variable $peso, se supone que asi debera leer linea por linea.

Aceptas sugerencias para hacerlo de otra forma mas facil y reduciendo el uso de recursos / acceso a disco?

Código php:
Ver original
  1. // Lees todo el archivo de una sola vez
  2. // Cargandolo en una matriz (array), 1 elemento por linea
  3. $lineas = file('archivo.txt', FILE_IGNORE_NEW_LINES);
  4.  
  5. // Recorres toda la matriz
  6. foreach($lineas as $linea) {
  7.       echo "<option>$linea</option>";
  8. }
__________________
- León, Guanajuato
- GV-Foto
  #6 (permalink)  
Antiguo 21/09/2009, 18:18
Avatar de manumaf  
Fecha de Ingreso: mayo-2007
Ubicación: Argentina
Mensajes: 854
Antigüedad: 16 años, 11 meses
Puntos: 6
Respuesta: Problema al leer fichero .txt

Muchas gracias, es mucho mas comodo asi, pero solo una duda por curiosidad ¿Que funcion cumple FILE_IGNORE_NEW_LINES?
  #7 (permalink)  
Antiguo 21/09/2009, 19:28
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Problema al leer fichero .txt

Es una constante para especificar que elimine los saltos de linea, si la omites, todos los elementos de la matriz tendran "\n" al final.
__________________
- León, Guanajuato
- GV-Foto
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 01:17.