home Foro de soporte Espacio WEB PHP
 
Chicaker
#1 ·

Hola que tal soy nueva, me gustaria saber como leer un archivo csv y luego insertar los datos en una tabla de mi base de datos.

Al ejecutar el script a continuación me muestra el siguiente mensaje: ERROR: la sintaxis de entrada no es válida para integer: «» LINE 1: ...ueba (id_prueba,montoneto,montodisponible) VALUES ('','','') ^

<?php
$conexion=pg_connect("host=localhost port=5432 user=postgres password=prestaciones dbname=prueba");
if(isset($_POST['submit']))
{
$filename=$_POST['filename'];
$handle = fopen("$filename", "r");
while (($data = fgetcsv($handle, 18192, ";")) !== FALSE)
{

$import="INSERT INTO prueba (id_prueba,montoneto,montodisponible) VALUES ('$data[0]','$data[1]','$data[2]')";
pg_query($import) or die(pg_last_error());
var_dump($data);

}
fclose($handle);
print "Import done";
}
else
{

print "<form action='enviar_csv.php' method='post' >";
print "Type file name <strong class='highlight'>to</strong> import:<br>";

print "<input type='file' name='filename' size='20'><br>";
print "<input type='submit' name='submit' value='submit'></form>";
}
?>

El código me funciona de maravilla si guardo el archivo csv en mi carpeta donde tengo el script. La idea es que el usuario pueda seleccionar el archivo donde lo tenga guardado en su pc. Espero me puedan ayudar


Usuario Novato
Usuario Novato
Haz clic para ver el perfil del usuario
Mensajes: 3
Desde: 28/Dic/2012
·
#2 ·

$data[0]','$data[1]','$data[2]'

¿Tienen los datos que pretendes que tengan?

Compruebalo con unos echo


@man / @woman
@man / @woman
Haz clic para ver el perfil del usuario
Mensajes: 30.308
Desde: 01/Mar/2003
· ·
#3 ·

Los datos son los que se estan recorriendo con el while, en archivo csv hay tres columnas, $data[0] serian los datos de la priemera columna, $data[1] los de la segunda columna y $data[2] lo de las tercera columna. Como dije el script me funciona de maravilla cuando el archivo csv esta en la guardado en la carpeta donde esta el script.

Lo que yo necesito es que lea el archivo cuando este guardado en mis documentos o en mi escritorio.


Usuario Novato
Usuario Novato
Haz clic para ver el perfil del usuario
Mensajes: 3
Desde: 28/Dic/2012
·
#4 ·
Escrito originalmente por @chicaker

El código me funciona de maravilla si guardo el archivo csv en mi carpeta donde tengo el script. La idea es que el usuario pueda seleccionar el archivo donde lo tenga guardado en su pc. Espero me puedan ayudar

En el formulario debes poner un control input type file (botón para seleccionar archivos), luego con el mismo formulario deberás hacer el upload del archivo al servidor y procesarlo allí.

(solo si el visitante tiene un servidor web instalado, con Php y PG podrás hacer que lo procese en local)


@man / @woman
@man / @woman
Haz clic para ver el perfil del usuario
Mensajes: 4.001
Desde: 02/Ago/2008
· ·
#5 ·

Hola que tal ya logre subir el archivo al servidor lo guardo en una carpeta llamada files. Cuando leo el archivo que esta guardado en la carpeta file e insertarlo en el servidor me da el siguiente error ERROR: la sintaxis de entrada no es válida para integer: «» LINE 1: ...monto (id_monto,montoneto,montodisponible) VALUES ('','','') ^

Pero cuando guardo el archivo fuera de la carpeta files me funciona la inserción de los datos en la base de datos.


Usuario Novato
Usuario Novato
Haz clic para ver el perfil del usuario
Mensajes: 3
Desde: 28/Dic/2012
·
#6 ·

Algunos tips para tener en cuenta:

- nombre de archivo: en Linux no es lo mismo que en Windows, en Linux quita o cambia espacios y caracteres gráficos o de puntuación por líneas - o _ (por ejemplo).

- SQL (nombres de campo): con espacios y otros caracteres, mejor los encierras con comillas simples o dobles (segun el limitador de la sentencia SQL).

- SQL (datos): escapa los datos (y si incluye código HTML, convierte o codifica esas entidades.


@man / @woman
@man / @woman
Haz clic para ver el perfil del usuario
Mensajes: 4.001
Desde: 02/Ago/2008
· ·
ATENCIÓN: Este tema no tiene actividad desde hace más de 6 MESES,
te recomendamos abrir un nuevo tema en lugar de responder al actual
Foro de soporte · Espacio WEB · PHP
Opciones:
Subscríbete a este tema
Date de baja de este tema
Ir al subforo:  
TU NO PUEDES Escribir nuevos temas en este foro
TU NO PUEDES Responder a los temas en este foro
TU NO PUEDES Editar tus propios mensajes en este foro
TU NO PUEDES Borrar tus propios mensajes en este foro
Ahora son las 22:31 UTC+02:00 DST
Temas similares
No se han encontrado temas similares