Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] importar datos de un txt

Estas en el tema de importar datos de un txt en el foro de PHP en Foros del Web. buenas tardes amigos del foro. quisiera saber si me pueden ayudar con este problema, necesito importar todo el contenido completo de un txt en un ...
  #1 (permalink)  
Antiguo 03/03/2017, 12:15
 
Fecha de Ingreso: junio-2013
Mensajes: 94
Antigüedad: 10 años, 10 meses
Puntos: 0
importar datos de un txt

buenas tardes amigos del foro.

quisiera saber si me pueden ayudar con este problema, necesito importar todo el contenido completo de un txt en un solo campo de una tabla de mysql.

estoy usando este codigo:

Código PHP:
<?php
    
$conexion 
= new mysqli("localhost""root""""guardar_archivos_prueba");
            
$lineas file('logs.txt');
            
foreach (
$lineas as $linea)
{
    

  
$data trim($linea);

    
$consulta "INSERT INTO datos(descripcion) VALUES('$data')";
    
$conexion->query($consulta);
}

?>

pero me arroja este error:

Código HTML:
Warning: file(logs.txt): failed to open stream: No such file or directory in C:\xampp\htdocs\leerarchivophp\articulos.php on line 5

Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\leerarchivophp\articulos.php on line 7
He probado con otros txt con menos informacion y los guarda sin problemas pero con el que realmente necesito que lo guarde me muestra el error mencionado.

Solo necesito esto que guarde todo el contenido del logs.txt en un solo campo de una tabla sin separaciones ni delimitacion ni nada solo que lo inserte tal y como esta en el campo sin complejidades, le puse la mayor cantidad de caracteres al campo en la estructura para que no alla problema con el minimo de caracteres soportados en el campo.

Espero su ayuda Muchas Gracias de antemano
  #2 (permalink)  
Antiguo 03/03/2017, 12:31
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 10 meses
Puntos: 379
Respuesta: importar datos de un txt

El error es porque no puede encontrar el archivo, posiblemente sea algo con los permisos, por otro lado puedes probar hacer uso de la función file_get_contents
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #3 (permalink)  
Antiguo 03/03/2017, 12:40
 
Fecha de Ingreso: junio-2013
Mensajes: 94
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: importar datos de un txt

Gracias por responder, si ya me di cuenta, corregí la ruta del archivo, y lo que hace ahora es que guarda cada linea que se encuantra dentro del txt en una fila diferente de la tabla, y necesito que la guarde todo en el mismo campo en una sola fila
  #4 (permalink)  
Antiguo 03/03/2017, 14:35
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 20 años, 5 meses
Puntos: 154
Respuesta: importar datos de un txt

Hola jecavi_20,

Eso es lo que has programado, que te guarde cada línea en un registro de la base de datos, si lo que quieres es que te lo guarde todo en el mismo registro, te sobra el foreach.
  #5 (permalink)  
Antiguo 04/03/2017, 17:19
 
Fecha de Ingreso: junio-2013
Mensajes: 94
Antigüedad: 10 años, 10 meses
Puntos: 0
Pregunta Respuesta: importar datos de un txt

Cita:
Iniciado por rbczgz Ver Mensaje
Hola jecavi_20,

Eso es lo que has programado, que te guarde cada línea en un registro de la base de datos, si lo que quieres es que te lo guarde todo en el mismo registro, te sobra el foreach.
Gracias por tu respuesta, pero como tendria que colocar entonces ???
  #6 (permalink)  
Antiguo 05/03/2017, 04:10
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 20 años, 5 meses
Puntos: 154
Respuesta: importar datos de un txt

Hola jecavi_20,

¿Has analizado la respuesta? Si te digo que te sobra el foreach ¿tú que harías?

Dicen que es preferible enseñar a pescar que dar el pez, pero en fin...

Código PHP:
Ver original
  1. <?php
  2.    
  3. $conexion = new mysqli("localhost", "root", "", "guardar_archivos_prueba");
  4.            
  5. $archivo = file('logs.txt');
  6.            
  7.   $data = trim($archivo);
  8.  
  9.     $consulta = "INSERT INTO datos(descripcion) VALUES('$data')";
  10.     $conexion->query($consulta);
  11.  
  12. ?>

De la otra forma estabas recorriendo cada línea del archivo y guardando cada una en un registro sin los espacios al principio y al final de las mismas, si lo que quieres es quitarle los espacios iniciales y finales a las líneas (que no es lo que decías en tus post anteriores) se haría de otra forma, pero lo que pides, es esto.

Espero que te sirva.
  #7 (permalink)  
Antiguo 05/03/2017, 13:31
 
Fecha de Ingreso: junio-2013
Mensajes: 94
Antigüedad: 10 años, 10 meses
Puntos: 0
Exclamación Respuesta: importar datos de un txt

Cita:
Iniciado por rbczgz Ver Mensaje
Hola jecavi_20,

¿Has analizado la respuesta? Si te digo que te sobra el foreach ¿tú que harías?

Dicen que es preferible enseñar a pescar que dar el pez, pero en fin...

Código PHP:
Ver original
  1. <?php
  2.    
  3. $conexion = new mysqli("localhost", "root", "", "guardar_archivos_prueba");
  4.            
  5. $archivo = file('logs.txt');
  6.            
  7.   $data = trim($archivo);
  8.  
  9.     $consulta = "INSERT INTO datos(descripcion) VALUES('$data')";
  10.     $conexion->query($consulta);
  11.  
  12. ?>

De la otra forma estabas recorriendo cada línea del archivo y guardando cada una en un registro sin los espacios al principio y al final de las mismas, si lo que quieres es quitarle los espacios iniciales y finales a las líneas (que no es lo que decías en tus post anteriores) se haría de otra forma, pero lo que pides, es esto.

Espero que te sirva.

Hola, lo que pasa es que lo coloque de esa manera que me indicas pero me salta este error:


Warning: trim() expects parameter 1 to be string, array given in C:\wamp\www\guardar_text\guardar.php on line 7

y no se por que, tambien es que soy muy novato en la programacion.
  #8 (permalink)  
Antiguo 05/03/2017, 14:11
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 20 años, 5 meses
Puntos: 154
Respuesta: importar datos de un txt

Hola jecavi_20,

Perdona pero se me coló en tu código algo que no está bien, de todas formas, para eso tenemos el manual, sería mejor así:

Código PHP:
Ver original
  1. <?php
  2.    
  3. $conexion = new mysqli("localhost", "root", "", "guardar_archivos_prueba");
  4.            
  5. $archivo = file_get_contents('logs.txt');
  6.            
  7.   $data = trim($archivo);
  8.  
  9.     $consulta = "INSERT INTO datos(descripcion) VALUES('$data')";
  10.     $conexion->query($consulta);
  11.  
  12. ?>

No obstante, de lo que se te pueda decir aquí, no se trata de que copies y pegues, debes analizar tú el código y adaptarlo a tus necesidades, no pretendas que siempre te demos todo hecho, lo normal no es darlo hecho, si no enseñar a hacerlo.

Además, ten en cuenta que debes validar, verificar, etc. las variables para asegurarte de que tienen contenido y de que es el que tú esperas.
  #9 (permalink)  
Antiguo 05/03/2017, 16:10
 
Fecha de Ingreso: junio-2013
Mensajes: 94
Antigüedad: 10 años, 10 meses
Puntos: 0
Pregunta Respuesta: importar datos de un txt

Cita:
Iniciado por rbczgz Ver Mensaje
Hola jecavi_20,

Perdona pero se me coló en tu código algo que no está bien, de todas formas, para eso tenemos el manual, sería mejor así:

Código PHP:
Ver original
  1. <?php
  2.    
  3. $conexion = new mysqli("localhost", "root", "", "guardar_archivos_prueba");
  4.            
  5. $archivo = file_get_contents('logs.txt');
  6.            
  7.   $data = trim($archivo);
  8.  
  9.     $consulta = "INSERT INTO datos(descripcion) VALUES('$data')";
  10.     $conexion->query($consulta);
  11.  
  12. ?>

No obstante, de lo que se te pueda decir aquí, no se trata de que copies y pegues, debes analizar tú el código y adaptarlo a tus necesidades, no pretendas que siempre te demos todo hecho, lo normal no es darlo hecho, si no enseñar a hacerlo.

Además, ten en cuenta que debes validar, verificar, etc. las variables para asegurarte de que tienen contenido y de que es el que tú esperas.

Gracias por responder tan pronto, y si yo se que tengo que validar esas cosas lo que pasa es que yo solo se lo basico de estos lenguajes porque este no es tanto mi trabajo aunque al parecer me van a asignar mas cosas de programacion por eso solo busco la respuesta rapido, pero tengo que ponerme a practicar, solo que para esto me estan pidiendo que tenga algo hecho en una semana y por eso busco de hacerlo rapido y despues chequeo las otras validaciones y eso.

Y con respecto al codigo, ya no me da ningun error pero no guarda los datos en la tabla, le coloque un echo para que me muestre lo que esta en la variable y si lo hace bien pero no inserta nada en la bd, no se porque si tengo el campo en varchar y suficiente longitud de caracteres y nada que lo guarda.
  #10 (permalink)  
Antiguo 05/03/2017, 16:37
 
Fecha de Ingreso: junio-2013
Mensajes: 94
Antigüedad: 10 años, 10 meses
Puntos: 0
De acuerdo Respuesta: importar datos de un txt

Listo ya lo solucione muchisimas gracias por la gran ayuda rbczgz y hhs si no hubiera tenido ayuda asi inmediata estuviera sufriendo todavia. No guardaba los datos por las comillas simples incluidas en el texto a guardar, lo que hice fue usar la funcion str_replace para eliminarlas y asi limpiar el texto de comillas simples y listo guarda todo el archivo entero como debe ser, despues de tanta pelea , dejo el codigo por si alguien lo necesita en un futuro.

Y todavia voy a continuar pidiendo ayuda por aqui creando otros temas, ya que me falta continuar el mismo sistema, este paso es para guardar logs en una base de datos y el siguiente paso es para comparar dos logs seleccionados y sacar solo la diferencia entre uno y el otro aparte para ser analizada, pero ya eso lo ire realizando poco a poco. muchas gracias

Código PHP:

<?php 
     
///crea la conexion bd
$conexion = new mysqli("localhost""root""""guardar_text"); 
             
///extrae el contenido del texto plano, en los parentesis va la ubicacion del archivo
$linea file_get_contents('mysql.log');            
  
$data trim($linea); 

///imprime los datos para ver lo que se esta manipulando es mas que todo solo para estar seguro 
  
echo $data;

///elimina las comillas simples del texto seccionado
$dato str_replace("'","",$data);

///inserta los datos en la tabla
$sql "INSERT INTO datos (descripcion) VALUES ('$dato')";
$conexion->query($sql); 

?>
  #11 (permalink)  
Antiguo 05/03/2017, 16:59
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 20 años, 5 meses
Puntos: 154
Respuesta: importar datos de un txt

Hola jecavi_20,

Me alegro de que lo hayas resuelto, pero te recomiendo que en lugar de "eliminar" las comillas, las reemplaces por \', de esa forma sí se te guardará en la base de datos y siempre podrás volver a recuperar el texto original revertiendo el proceso, es decir, reemplazar las \' por ', cosa que de la forma que lo has hecho no puedes porque al reemplazarlo por nada, luego no podrás reemplazar nada por '.

Sé que lo he liado un poco pero imagino que entenderás a qué me refiero.
  #12 (permalink)  
Antiguo 05/03/2017, 17:09
 
Fecha de Ingreso: junio-2013
Mensajes: 94
Antigüedad: 10 años, 10 meses
Puntos: 0
Pregunta Respuesta: importar datos de un txt

Cita:
Iniciado por rbczgz Ver Mensaje
Hola jecavi_20,

Me alegro de que lo hayas resuelto, pero te recomiendo que en lugar de "eliminar" las comillas, las reemplaces por \', de esa forma sí se te guardará en la base de datos y siempre podrás volver a recuperar el texto original revertiendo el proceso, es decir, reemplazar las \' por ', cosa que de la forma que lo has hecho no puedes porque al reemplazarlo por nada, luego no podrás reemplazar nada por '.

Sé que lo he liado un poco pero imagino que entenderás a qué me refiero.
Es buena idea la voy a aplicar porque tienes razon asi se mantendra la informacion igual a la del texto plano a la hora de consultarla, y aprovechando no tendras una idea que pueda ir estudiando para sacar la diferencia de dos registros como lo menciono arriba, un ejemplo seria que en un registro diga "xxxxxxxx xxxxxxx yyyyy xxxxxxx" y en el el otro "xxxxxxxx xxxxxxx xxxxxxx" , diferencia esta obiamente en las "yyyyy" pero me las muestre a parte, seria solo que tome esa diferencia y yo la muestre donde yo quiera aparte
  #13 (permalink)  
Antiguo 06/03/2017, 03:32
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 20 años, 5 meses
Puntos: 154
Respuesta: importar datos de un txt

Hola jecavi_20,

Yo que tú abriría otro hilo para eso, pero puedes empezar por aquí:

https://www.google.es/?#q=diferencia...dos+string+php

Tienes muchísima información sobre el tema.

Etiquetas: mysql, txt
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 14:34.