Foros del Web » Programando para Internet » PHP »

leyendo txt

Estas en el tema de leyendo txt en el foro de PHP en Foros del Web. hola, estaba haciendo una rutina para subir y leer un txt generado de un software con la idea de poder guardarlos en una bd de ...
  #1 (permalink)  
Antiguo 26/02/2009, 17:24
Avatar de cesarpunk  
Fecha de Ingreso: enero-2008
Ubicación: Lima
Mensajes: 943
Antigüedad: 16 años, 3 meses
Puntos: 9
leyendo txt

hola, estaba haciendo una rutina para subir y leer un txt generado de un software con la idea de poder guardarlos en una bd de una web....

La accion que hago es subir el txt, tomar los registros con mi rutina y guardarlos inmediatamente, hasta ahora todo bien.... lo que quisiera es que me den alguna idea para restringir de que el usuario suba cualquier archivo txt con diferentes contenidos, tan solo el que genera el software. Asi evitar que se me malogre los registros.

Este es el txt que se genera:

Código:
1,JUAN PEREZ,1,1965-04-27,09083462,javiermorey @hotmail.com,562-1456,9924-2268,AMSTERDAM 276 ,2009-01-26,2009-02-05,000001
1,VANNY LISSET,VASQUEZ VARGAS,1,1982-03-12,DNI.08070605,[email protected],36985214,,AV SAN BORJA,2009-02-03,2009-02-05,000005
1,SARA JULIA,RIVERA CASTRO,1,1970-08-13,DNI. 23654414,[email protected],45667-554,,AV. SANTA ROSA # 3252009-02-03,2009-02-05,2009-02-06,000006

Bueno y esta es la rutina que hago, pero que condicion puedo poner antes de guardar registros?
Código PHP:
<?php
//subo el archivo temporalmente
$fisico $_FILES["archivo"]["tmp_name"];
$archivo $fisico;

if(
$_FILES["archivo"]["type"]=="text/plain"){
    
$fp fopen($archivo,'r');
    
$cadena fread($fpfilesize($archivo));
    
    
$arreglo explode("\n"$cadena);


    
$resultado = Array();
    foreach(
$arreglo as $linea)
    {
        
$partes explode(","$linea);

        
$estado $partes[0];
        
$nombre $partes[1];
        
$apellido $partes[2];
        
$flagedad $partes[3];
        
$nacimiento $partes[4];
        
$dni $partes[5];
        
$email $partes[6];
        
$telefono $partes[7];
        
$telefono2 $partes[8];
        
$direccion $partes[9];
        
$registro $partes[10];
        
$modificacion $partes[11];
        
$identificador $partes[12];
        
        
$sql="call registra_paciente(1,'$nombre','$apellido','$flagedad','$nacimiento','$dni','$email','$telefono','$telefono2','$direccion','$registro','$modificacion',$identificador)";
        echo 
$sql."<br>";
                 
//de ahi viene el query para guardar
    //cierro el foreach
    
}
 
//cierro el if y pongo la seguna condicion
 
}else{
      echo 
"no es txt";
 }
?>
Como dato: como ven el array del txt siempre sera de 13 items, quizas pueda preguntar si es que estan completos esos 13, pero el problema es que el software genera algunos campos NULL, quizas podria preguntar sobre la cantidad de comas que hay en el txt por fila y preguntar si eso es igual a 11 pero como podria extraer las comas por fila.... bueno si es que esa es la unica solucion, espero me ayuden... byes
__________________
Quitenme la vida pero no la bebida.
  #2 (permalink)  
Antiguo 26/02/2009, 17:36
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: leyendo txt

realiza un substr_count() para determinar el numero de comas...

http://php.net/substr_count

pienso, que aun siendo valores NULL todos.. debería funcionar bien, si arroja las comas siempre, claro! (me imagino que no imprime NULL, sino que simplemente "nada")

Código:
A,B,,D,,F
a,b,c,d,,f
,,,,,
mientras sean siempre el mismo numero de comas, el explode() no debe fallar...


también, te sugiero leer esto: http://www.forosdelweb.com/f18/aport...-texto-593101/
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 27/02/2009, 08:54
Avatar de cesarpunk  
Fecha de Ingreso: enero-2008
Ubicación: Lima
Mensajes: 943
Antigüedad: 16 años, 3 meses
Puntos: 9
Respuesta: leyendo txt

excelente , le hice un substr_count($linea,","); me saco el numero de comas y puse la condicion antes de guardar y funcionó... muchas gracias!
__________________
Quitenme la vida pero no la bebida.
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 12:18.