Comunidad de diseño web y desarrollo en internet online

Trabajar con archivo.txt y estraer datos filtrando

Citar            
MensajeEscrito el 10 Feb 2009 06:21 am
Hola a todos.

Hola, pido disculpas de antemano si el tema que trato ya se hablo pero no lo he encontrado.

Trato de leer un txt y mostrar los datos ordenados en una tabla. Hasta ahi todo marcha sin problemas.

Archivo.txt
==========================================================
1,Juan Perez, Cordoba, Casado
2, Maria Alvarez, Buenos Aires, Soltera
3,Julio Rodriguez, Cordoba, Divorciado
4, Mabel Juarez, Buenos Aires, Desesperada
==========================================================

Lo leo y lo muestro con el siguiente codigo:

<table border="0" align="center" cellpadding="0" cellspacing="0">
<? $lines = file('prueba.txt', 'r');
foreach ($lines as $line_num => $line) {
$datos = explode(",", $line);
?>
<tr>
<td>
<?= $datos[0] ?></td>
<td>
<?= $datos[1] ?></td>
<td>
<?= $datos[2] ?></td>
</tr>
<? } ?>
</table>

Eso me lista linea por linea en una tabla, perfecto.
Ahora mi rompecabezas.
Quiero agregar informacion extra del tipo "observaciones" en el mismo archivo txt, pero que no entre en el bucle que lee las lineas, sino mostrar solo ese campo.
La hipotesis sin solucion que se me ocurrio es la siguiente:
Agregar 5 lienas de informacion al inicio del fichero, y mostrarlas por separado, y luego recien empezar a leer desde la linea 6 lo que seria el bucle.

De modo el fichero txt quedaria asi:
==========================================================
Este archivo es un listado de personas
Estas personas estan en lista de espera
Ellos han prestado conformidad para figuarar en este archivo
Los datos son ficticios
1,Juan Perez, Cordoba, Casado
2, Maria Alvarez, Buenos Aires, Soltera
3,Julio Rodriguez, Cordoba, Divorciado
4, Mabel Juarez, Buenos Aires, Desesperada
==========================================================

Para poder extraer las primeras 4 lineas y empezar el bucle del cod anterior desde la linea 5 hasta el final.

Perdon si fui extenso, pero trate de ser lo mas explicito posible.

Muchas Gracias por la colaboracion de quien me oriente un poco.

Saludos.

Silvio.

Por silvino2006

3 de clabLevel



 

Cordoba, argentina

firefox
Citar            
MensajeEscrito el 10 Feb 2009 02:47 pm
saludos compadre

fuiste algo extenso y explicito, pero no muy claro!

lo que quieres es que a la tabla que haces de los datos de archivo le aparesca una nueva columna con las observaciobes??
y que estas observaciones las tome de otra parte que no es el *.txt ????

o que es lo que quieres?

Por jpcw

Claber

1715 de clabLevel

1 tutorial

Genero:Masculino  

AlgoritmicBrainDesigner

firefox
Citar            
MensajeEscrito el 10 Feb 2009 05:51 pm
Hola cumpa...

Toda la data esta en el mismo txt. Solo que al mostrarla la quiero mostrar asi:

Cod Nombre Ciudad Estado
1 Juan Perez Cordoba Casado
2 Maria Alvarez Buenos Aires Soltera
3 Julio Rodriguez Cordoba Divorciado
4 Mabel Juarez Buenos Aires Desesperada

Observaciones:
Este archivo es un listado de personas
Estas personas estan en lista de espera
Ellos han prestado conformidad para figuarar en este archivo
Los datos son ficticios

Se como mostrar de las dos formas (texto entero o separando campos,) pero no se me ocurre nada para hacerlo combinando las dos formas...

Saludos.

Silvio

Por silvino2006

3 de clabLevel



 

Cordoba, argentina

firefox
Citar            
MensajeEscrito el 10 Feb 2009 06:01 pm
Para graficarlo mejor....

[url=http://www.racecontrol.com.ar/muestra.jpg]http://www.racecontrol.com.ar/muestra.jpg[/url]

Por silvino2006

3 de clabLevel



 

Cordoba, argentina

firefox
Citar            
MensajeEscrito el 10 Feb 2009 09:57 pm
ah ok

entonces pon atencio te explico, me imagino que no sabes exactamente cuantos registros son de la tabla en tu ejemplo son 4 pero podrian ser mas cierto?!, para esto debes partir tu codigo en dos con un codicional algo asip

Código PHP :

<table border="0" align="center" cellpadding="0" cellspacing="0">
<? $obser = '<tr><td colspan="4">'; // es necesario que creees un solo <tr> y dentro de el un solo <td colspan=4 >
 $lines = file('prueba.txt', 'r');
foreach ($lines as $line_num => $line) {

if(strpos($line,",")!=0){ // esto para ver que el caracter especial que usas para dividir tus campo NO esta en esa linea
 $obser .= $line; // aqui esalgo similar a tu codigo pero en ves de partir la cadena por las "comas" la colocas tal cual como viene pero en una variable!!!
}else{ // esto sabes como funciona asi que no ahy que explicar
$datos = explode(",", $line);
?>
<tr>
<td><?= $datos[0] ?></td>
<td><?= $datos[1] ?></td>
<td><?= $datos[2] ?></td>
<td><?= $datos[3] ?></td>
</tr>
<? } // cierra else
 } // cierra el foreach
 $obser .= "</td></tr>"; //luego de que terminas de recorrer tu archivo es necesario y sensato que cierres los tag </td></tr> que habias creado 
?>
<?= $obser; // esto es otra forma de hacer echo, te la presento! ?>
</table>



esto seria asipy litop ya tenes tu tabla desde un hermoso plano ;) espero que te sirva saludos! U_U

Por jpcw

Claber

1715 de clabLevel

1 tutorial

Genero:Masculino  

AlgoritmicBrainDesigner

firefox
Citar            
MensajeEscrito el 10 Feb 2009 11:13 pm
Mmmmm, vamos rumbeando cumpa.
Funciona, solo que muestra los datso invertidos....

O sea, Muestra las "observaciones" en lo que seria "$datos[0]", y los datos de la tabla, todos juntos abajo.

http://www.racecontrol.com.ar/prueba.php para verlo funcionando.

Y el nuevo TXT esta en

http://www.racecontrol.com.ar/prueba.txt

Segun entendi tu explicacion, la idea es leer todo el txt, luego examinarlo, para luego interpretar;

-> Si en esa linea NO existe el caracter de separacion, se trata de una LINEA DE OBSERVACION,
-> En cambio SI existe dicho caracter, tratar esa linea como registro y cargarla en la tabla.

Es correcta mi apreciación?

Un saludo, y muchas gracias por tu tiempo.

Otra pregunta, no puedo usar "#" o "@" como caracter de separación, ya que en las observaciones debo contenplar el uso de "," y ";"

Por silvino2006

3 de clabLevel



 

Cordoba, argentina

firefox
Citar            
MensajeEscrito el 11 Feb 2009 01:34 pm
que pena se me colo un ! donde no era ;) listo aqui tenes el codigo

Código PHP :

<table border="1" width="100%" align="center" cellpadding="0" cellspacing="0"> 
<? $obser = '<tr><td colspan="5">'; // es necesario que creees un solo <tr> y dentro de el un solo <td colspan=4 > 
 $lines = file('prueba.txt'); 
foreach ($lines as $line_num => $line) { 
 
if(strpos($line,",")==0){ // esto para ver que el caracter especial que usas para dividir tus campo NO esta en esa linea 
 $obser .= $line; // aqui esalgo similar a tu codigo pero en ves de partir la cadena por las "comas" la colocas tal cual como viene pero en una variable!!! 
}else{ // esto sabes como funciona asi que no ahy que explicar 
$datos = explode(",", $line); 
?>
 
<tr> 
<td>
<?= $datos[0] ?>
</td> 
<td>
<?= $datos[1] ?>
</td> 
<td>
<?= $datos[2] ?>
</td> 
<td>
<?= $datos[3] ?>
</td> 
<td>
<?= $datos[3] ?>
</td> 
</tr> 
<? } // cierra else 
 } // cierra el foreach 
 $obser .= "</td></tr>"; //luego de que terminas de recorrer tu archivo es necesario y sensato que cierres los tag </td></tr> que habias creado  
?>
 
<?= $obser; // esto es otra forma de hacer echo, te la presento! ?> 
</table> 


ah y si deberias tomar otro tipo de caracter para separar los datos, yo te recomiendo el pipe '|'

Por jpcw

Claber

1715 de clabLevel

1 tutorial

Genero:Masculino  

AlgoritmicBrainDesigner

firefox
Citar            
MensajeEscrito el 08 Abr 2011 04:55 am
Buenas noches, yo quiero hacer algo parecido pero en mi caso el formato de presentacion de los datos es diferente, es decir, en mi caso tengo una lista de variables y a su lado separado por .................... el valor de dicha variable. Mas o menos asi.
INTERNATIONAL MOBILE SUBSCRIBER IDENTITY ...... 734049900005015
TEMPORARY MOBILE SUBSCRIBER IDENTITY .......... AEABB6A0H/2930488992D
ACTIVATION STATUS ................................................. A
MOBILE STATION CATEGORY ................................... OR
EXACT MOBILE STATION CATEGORY ........................ UNK
ROUTING CATEGORY .............................. 22
ADDITIONAL ROUTING CATEGORY ................... 00001
MOBILE COUNTRY CODE ........................... 0734H
MOBILE NETWORK CODE ........................... 0004H
LOCATION AREA CODE OF IMSI .................... 0BCEH/03022D
RADIO ACCESS INFO ............................. GSM
MOBILE NOT REACHABLE FLAG ..................... N
HLR FAILURE FLAG .............................. N
SUPPLEMENTARY SERVICE CHECK FLAG .............. N
IMSI DETACH FLAG .............................. N
DETACH CAUSE ..................................
LAST ACTIVATE DATE ............................ 04-01 14:49
LAST USED CELL ID ............................. B1DCH/45532D
HLR-ADDRESS ................................... 584240000050
SECURITY CONTEXT TYPE.......................... GSM


mi rpoblemas es que necesito extraer ciertas variables con su valor, pero no se si el estar separados por varios puntos en lugar de una coma sea diferente a la hora de extraer los dato, si alguien me ayudara se los agrdeseria un monton.

Por alejduin

0 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 08 Abr 2011 02:52 pm

alejduin escribió:

Buenas noches, yo quiero hacer algo parecido pero en mi caso el formato de presentacion de los datos es diferente, es decir, en mi caso tengo una lista de variables y a su lado separado por .................... el valor de dicha variable. Mas o menos asi.
INTERNATIONAL MOBILE SUBSCRIBER IDENTITY ...... 734049900005015
TEMPORARY MOBILE SUBSCRIBER IDENTITY .......... AEABB6A0H/2930488992D
ACTIVATION STATUS ................................................. A
MOBILE STATION CATEGORY ................................... OR
ETC...
mi rpoblemas es que necesito extraer ciertas variables con su valor, pero no se si el estar separados por varios puntos en lugar de una coma sea diferente a la hora de extraer los dato, si alguien me ayudara se los agrdeseria un monton.

esto es mas facil jeje solo hay dos valores de tabla mm pero prefiero que lo hagas tu asi q te doy las herramientas
para obtener el archivo en un array osea cada linea de archivo es un linea
lo recuperas con la funcion
file
http://es.php.net/file
ahora como los puntos son puntos que las impresoras de carro usan para una tabulacion uniforme y no se sabe la cantidad empleada puedes usar expresiones regulares
preg_match lo empleas linea por linea
http://es.php.net/preg_match
ya te di las herramientas necesarias averiguar te tomara como 1 hora a lo mucho

Por tuadmin

Claber

598 de clabLevel



Genero:Masculino  

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.