PHP - Leer txt y guardar en Mysql, nivel un poco avanzado

 
Vista:
sin imagen de perfil

Leer txt y guardar en Mysql, nivel un poco avanzado

Publicado por martinezjs21 (2 intervenciones) el 17/08/2016 23:24:14
Que tal compañeros, tengo un problema creo que bastante grandesito :cry:

estoy leyendo un archivo .txt el cual está delimitando la filas por '\t' y los campos por ',' y guardando en una base de datos, el problema es que dicho archivo se creció un poco y ahora hay campos delimitados por ';' los cuales se encuentran dentro de otro gran campo delimitado por ' " '
a continuacion les dejo el NUEVO .txt con dos filas delimitadas por '\t'

1,2468902,"ESTUDIO:Glucosa Basal;RESULTADO:111;UND MEDIDA:mg/dl;VLR REF:70 -;;100<br>ESTUDIO:Glucosa Post;RESULTADO:161;UND MEDIDA:mg/dl;VLR REF:;;<br>",08/08/2016,903843,77882
2,24689022,"ESTUDIO:Glucosa Basal;RESULTADO:111;UND MEDIDA:mg/dl;VLR REF:70 -;;100<br>ESTUDIO:Glucosa Post;RESULTADO:161;UND MEDIDA:mg/dl;VLR REF:;;<br>",02/02/2016,9038432,778822

lo que tuve haciendo hasta el momento fue algo como esto:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
 
$conexion = new mysqli("localhost", "root", "", "bd");
 
$filas = file('archivo.txt');
foreach ($filas as $value) {
	list($id, $dni, $estudio) = explode(",", $value);
	echo 'Id: '.$id.'<br/>';
	echo 'Carnet: '.$dni.'<br/>';
	echo 'Estudio: '.$estudio.'<br/>';
	echo "<hr>";
	$insert = "INSERT INTO examenes(id,dni,examen) VALUES ('$id', '$dni','estudio')";
	$conexion -> query($insert);
}
//claro el .txt era mas corto y todo funcionaba...
 
?>

Alguna idea de como leer el nuevo .txt crecidito y delimitado por diferentes caracteres? tal vez con algún while que mientras encuentre ',' valla guardando los campos en una variable y mientras todo lo que esta dentro de ' " ' y separados por ' ; ' los valla almacenando en otras variables para al final hacer un solo insert, o tal vez haciendo varios insert no se. Lo he intentado pero no me ha dado la cabeza, por favor ayudenme, se los agradezco infinitamente. si necesitan mas detalles o una explicacion mas personal con mucho gusto estoy siempre en el Pc...
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de kip
Val: 2.325
Plata
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Leer txt y guardar en Mysql, nivel un poco avanzado

Publicado por kip (877 intervenciones) el 17/08/2016 23:28:37
Hola, cuando te refieres a '\t' estas refiriendo a aquellos caracteres o a la TAB en si?

Podrias colocar un capture de tu contenido en el txt, ya que al colocarlo aqui creas algo de confusión ya que no suele verse como el original.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Leer txt y guardar en Mysql, nivel un poco avanzado

Publicado por Victor (2 intervenciones) el 18/08/2016 06:32:52
me refiero al retorno de carro o al comiezo de una nueva linea pero podemos olvidar eso ya que en si te voy a dejar el .txt original para que le eches un vistazo
Captura
ahi una imagen y aqui el enlace al archivo para que lo detallen mejor https://drive.google.com/open?id=0B4jX3ZIQMc9qY2FLcXlSWFBmMGc

quiero guardar ese .txt en un BD mysql, tengase en cuenta que el campo1 es el id, el campo2 es el dni, el campo3 es el tipo de estudio, el campo4 es el resultado, es campo5 es la unidad de medida y asi sucesivamente...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Víctor
Val: 152
Ha disminuido su posición en 6 puestos en PHP (en relación al último mes)
Gráfica de PHP

Leer txt y guardar en Mysql, nivel un poco avanzado

Publicado por Víctor (192 intervenciones) el 18/08/2016 08:39:20
Hola:

Puedes usar explode. Suponiendo que has leido una linea y está en la variable $linea si haces:
1
$campos = explode(",",$linea);
Te quedaría:
1
2
3
4
5
6
$campos[0] -> id
$campos[1] -> DNI
$campos[2] -> El estudio
$campos[3] -> La fecha
$campos[4] -> Un número
¢campos[5] -> Otro número
El campo 2 está constituido por otros campos delimitados por ';'. Haces:
1
$masCampos = explode(";",$campos[2]);
Te queda:
1
2
3
$masCampos[0] -> Título
$masCampos[1] -> Resultado
etc...

Saludos de Víctor.-
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar