Foros del Web » Programando para Internet » PHP »

Leer Fichero txt

Estas en el tema de Leer Fichero txt en el foro de PHP en Foros del Web. Wenas, Tengo un fichero txt con ciertos datos. Como puedo coger esos datos y luego utilizarlos para un consulta ejecutada desde php contra mysql? Gracias ...
  #1 (permalink)  
Antiguo 03/03/2005, 04:43
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 12 años, 10 meses
Puntos: 10
Pregunta Leer Fichero txt

Wenas,
Tengo un fichero txt con ciertos datos. Como puedo coger esos datos y luego utilizarlos para un consulta ejecutada desde php contra mysql?
Gracias de antemano,
  #2 (permalink)  
Antiguo 03/03/2005, 08:44
 
Fecha de Ingreso: marzo-2005
Mensajes: 163
Antigüedad: 12 años, 9 meses
Puntos: 0
$handle = fopen("/tmp/inputfile.txt", "r");
while (!feof($handle)) {
$buffer = fgets($handle, 4096);
echo $buffer;
}
fclose($handle);

Esto puede servirte, despues utilas para la consulta lo que necesites
Saludos
  #3 (permalink)  
Antiguo 04/03/2005, 05:23
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 12 años, 10 meses
Puntos: 10
Pregunta

Para leer el fichero es correcto,
pero como puedo escojer algun dato dentro de el?
El fichero contiene las siguientes lineas:
2005010801012004011005
2005010701012004010905
20050106 01012004010805
20050105 01012004010705
20050104 01 01 2004010605
donde los 8 primeros digitos es una fecha
los 2 siguientes el mes...
como puedo escojer alguna parte de la cadena?
o como puedo coger un campo en concreto?

Gracias por vuestra ayuda
  #4 (permalink)  
Antiguo 04/03/2005, 05:38
 
Fecha de Ingreso: marzo-2005
Mensajes: 163
Antigüedad: 12 años, 9 meses
Puntos: 0
Aca tenes un codigo que desgloza todo el contenido en lineas guardandolo en un arreglo.

Código PHP:
    $file=fopen($filename,"rb");
    
$contents=fread($file,filesize($filename));
    
fclose($file);
    
$contents=str_replace("\r","\n",$contents);
    
$contents=str_replace("\n\n","\n",$contents);
    
$lineas=explode("\n",$contents);
    foreach (
$lineas as $linea){
            
//aca cortas el string como quieras
            
$sub substr($linea,inicio,cantidad); 
            
//para los primeros 8 incio=0,cantidad=8
    

Espero que te ayude
Saludos
  #5 (permalink)  
Antiguo 04/03/2005, 06:37
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 12 años, 10 meses
Puntos: 10
muchisimas gracias! La verdad es q me ha ayudado mucho!

Saludos
  #6 (permalink)  
Antiguo 04/03/2005, 09:25
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 12 años, 10 meses
Puntos: 10
Pequeño problema...
en las pruebas q he realizado he podido leer bien el fichero txt pero el problema es q en el aplicativo no se como hacerlo.
lo q tengo q hacer es un comparativo y las fechas las cojo de estee fichero, cada fecha q hay al lado contiene la la fecha q corresponde al mismo dia pero del año pasado. Por lo tanto lo q tengo q hacer es q el usuario escoja la fecha esta la busque en el fichero y entonces poder cojer la fecha q hay al lado para mostrar la estadisitica comparativa!

Espero haberme explicado!

Gracias de antemano!
  #7 (permalink)  
Antiguo 04/03/2005, 09:33
 
Fecha de Ingreso: marzo-2005
Mensajes: 163
Antigüedad: 12 años, 9 meses
Puntos: 0
como seria una linea del archivo y que cosas debes obtener?. No entiendo bien tu problema.
Saludos
  #8 (permalink)  
Antiguo 04/03/2005, 09:39
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 12 años, 10 meses
Puntos: 10
las lineas del archivo son asi:
20050105010120040107050228 SEXMI
20050104 0101 20040106 050228 SEXMA

si te fijas los primeros 8 caracteres son la fecha aaaa-mm-dd
y la fecha q corresponde al mismo dia pero del año pasado es apartir del caracter 12.
los demas puedo pasarlos por alto.

entonces el usuario introduce un fecha, q esta corresponde a una q esta en el fichero y q la vez al lado tengo la q corresponde. Entonces cuando ejecuto la consulta podre cojer las dos fechas, una la del usuario y la otra la q corresponde con el año pasado.

Gracias x contestar tan rapido!
  #9 (permalink)  
Antiguo 04/03/2005, 09:46
 
Fecha de Ingreso: marzo-2005
Mensajes: 163
Antigüedad: 12 años, 9 meses
Puntos: 0
pues en el for

Código PHP:
    foreach ($lineas as $linea){ 
            
//aca cortas el string como quieras 
            
$fecha1substr($linea,0,8); 
            if(
$fecha1==$fecha_del_usuario){
                
$fecha2substr($linea,12,8); 
                break;
            }
    }
//en fecha2 tenes la del año anterior 

Avisame si es esto lo que necesitabas
Saludos
  #10 (permalink)  
Antiguo 04/03/2005, 10:20
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 12 años, 10 meses
Puntos: 10
Pregunta

el codigo me parece muy correcto pero no me muestra nada....
en cambio con el primero q me has pasado me mostraba bien el contenido del txt
Código PHP:
$handle fopen("/tmp/inputfile.txt""r");
while (!
feof($handle)) {
$buffer fgets($handle4096);
echo 
$buffer;
}
fclose($handle); 
Gracias x tu tiempo...
  #11 (permalink)  
Antiguo 04/03/2005, 10:30
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 12 años, 10 meses
Puntos: 10
y el codigo q tengo es este...

Código PHP:
<?
$filename
="CALEN.txt";
    
$file=fopen($filename,"r"); 
    
$contents=fread($file,filesize($filename)); 
    
fclose($file); 
    
$contents=str_replace("\r","\n",$contents); 
    
$contents=str_replace("\n\n","\n",$contents); 
    
$lineas=explode("\n",$contents); 
    foreach (
$lineas as $linea){ 
            
$fecha1substr($linea,0,8); 
            if(
$fecha1==$fecha_del_usuario){ 
                
$fecha2substr($linea,12,8); 
                echo 
$fecha2;
                break; 
            } 
    } 
?>
de nuevo, muchas gracias!
  #12 (permalink)  
Antiguo 04/03/2005, 10:36
 
Fecha de Ingreso: marzo-2005
Mensajes: 163
Antigüedad: 12 años, 9 meses
Puntos: 0
Cita:
Iniciado por sergi_climent
y el codigo q tengo es este...

Código PHP:
<?
$filename
="CALEN.txt";
    
$file=fopen($filename,"r"); 
    
$contents=fread($file,filesize($filename)); 
    
fclose($file); 
    
$contents=str_replace("\r","\n",$contents); 
    
$contents=str_replace("\n\n","\n",$contents); 
    
$lineas=explode("\n",$contents); 
    foreach (
$lineas as $linea){ 
            
$fecha1substr($linea,0,8); 
            if(
$fecha1==$fecha_del_usuario){ 
                
$fecha2substr($linea,12,8); 
                echo 
$fecha2;
                break; 
            } 
    } 
?>
de nuevo, muchas gracias!
Utilizando esto no te muestra nada?Entonces habria que cambiar la funcion que lea de a lineas desde el archivo en ves de hacer el explode por retornos de carro. En linux lo que te pase anda bien, porque lo utilizo, pero por lo visto debes utilizar windows o algun archivo generado en windows.
  #13 (permalink)  
Antiguo 04/03/2005, 10:41
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 12 años, 10 meses
Puntos: 10
todas las pruebas q hago se hacen sobre windows.Cuando acabe el proyecto se pondra sobre linux!
Perdona por mi inexperiencia en ficheros asi. Gracias x tu paciencia!
  #14 (permalink)  
Antiguo 04/03/2005, 10:41
 
Fecha de Ingreso: marzo-2005
Mensajes: 163
Antigüedad: 12 años, 9 meses
Puntos: 0
Prueba usando esto, creo que deberia de andar

Código PHP:
<? 
    $filename
="CALEN.txt"
    
$handle=fopen($filename,"r"); 
    while (!
feof($handle)) { 
           
$buffer fgets($handle);    //Teoricamente lee de a lineas en el archivo
           
$fecha1substr($buffer ,0,8); 
            if(
$fecha1==$fecha_del_usuario){ 
                
$fecha2substr($buffer ,12,8); 
                echo 
$fecha2
                break; 
            } 
    } 
    
fclose($handle); 
?>
Suerte
  #15 (permalink)  
Antiguo 04/03/2005, 10:44
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 12 años, 10 meses
Puntos: 10
ya encontre el fallo. No me pasava bien la fecha del usuario. Entonces no entraba en el bucle y no mostraba nada!
Buff, ahora ya esta, Muchisimas gracias por tu ayuda!

Saludos
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 17:12.