Foros del Web » Programando para Internet » PHP »

Dichosa carga CSV...

Estas en el tema de Dichosa carga CSV... en el foro de PHP en Foros del Web. Buenas a todos. Estoy "intentando" implementar una carga de datos en csv que esté preparada para PHP. Ciertamente, no he encontrado nada que sea totalmente ...
  #1 (permalink)  
Antiguo 20/02/2012, 05:03
 
Fecha de Ingreso: febrero-2012
Mensajes: 8
Antigüedad: 12 años, 2 meses
Puntos: 0
Dichosa carga CSV...

Buenas a todos.

Estoy "intentando" implementar una carga de datos en csv que esté preparada para PHP. Ciertamente, no he encontrado nada que sea totalmente estable en la carga, con lo que estoy ... He mirado por los post del foro, pero no encuentro nada que funcione verdaderamente. ¿Sería alguien tan amable de poder indicarme direcciones o librerias de carga de datos que pudiera permitir, en cuanto se hace la subida, poder implementar una validación en plan "tengo el usuario repetido" o cosas así? Si no, pues simplemente un sistema de carga estable y fiable.

Muchas gracias ante todo.
  #2 (permalink)  
Antiguo 20/02/2012, 07:03
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Dichosa carga CSV...

No hay un "sistema de carga estable y fiable", lo que hay son funciones y clases para manipular CSV. Respecto de validación, por supuesto que no hay, tienes que escribir la tuya propia según la estructura y la lógica de tu aplicación. Tal vez te refieres a otra cosa. Si las funciones standard de PHP para manejo de cvs no son suficientes, pásate por aquí: http://www.phpclasses.org/search.htm...=0&go_search=1
Salu2
__________________
Fere libenter homines, id quod volunt, credunt.
  #3 (permalink)  
Antiguo 20/02/2012, 07:17
 
Fecha de Ingreso: febrero-2012
Mensajes: 8
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Dichosa carga CSV...

Muchas gracias por la info repara2. En base lo que necesito, mínimo, algo que gestione la subida de un fichero csv a la base de datos, todo está en entorno web obviamente, y el cliente es el encargado de la subida del fichero.
  #4 (permalink)  
Antiguo 20/02/2012, 07:27
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 2 meses
Puntos: 288
Respuesta: Dichosa carga CSV...

y vos que tenes hecho?
esto no lleva mas que dos archivos:
1- form del cliente para subir el csv
2- archivo php que lee el csv, lo procesa y lo guarda en la db

una cosa muy importante es que si es el cliente el que sube los csv, debe tener bien cargado los datos,
ante cualquier eventualidad tenes que hacer una clase de log y validar bien con excepciones
para que tu escript no se una risa y por un error de tipeo en el csv se muera el php
  #5 (permalink)  
Antiguo 20/02/2012, 07:32
 
Fecha de Ingreso: febrero-2012
Mensajes: 8
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Dichosa carga CSV...

Gracias por contestar Patriarka,

Es que según estoy viendo hay gente que lo usa con LOAD DATA INFILE y otros con un simple INSERT... me pilla muy de novato y no se por donde empezar. Ovbiamente la parte fácil es el envio del form, pero la dificil es la que me marea...
  #6 (permalink)  
Antiguo 20/02/2012, 07:36
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 2 meses
Puntos: 288
Respuesta: Dichosa carga CSV...

mira mas facil que esto no hay:
Código PHP:
Ver original
  1. <?
  2. // Leo archivo CSV de Excel
  3.     $eol= "\r\n";
  4.     $archivo = "Location.csv";  // path + archivo
  5.     $fp = fopen ( $archivo , "r" );
  6.     $c=0;
  7.     while (( $data = fgetcsv ( $fp , 1000 , "," )) !== FALSE ) {
  8.              //hago los inserts.........
  9.         }
  10.     fclose ( $fp );
  11. ?>
  #7 (permalink)  
Antiguo 20/02/2012, 08:01
 
Fecha de Ingreso: febrero-2012
Mensajes: 8
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Dichosa carga CSV...

Cita:
Iniciado por Patriarka Ver Mensaje
mira mas facil que esto no hay:
Código PHP:
Ver original
  1. <?
  2. // Leo archivo CSV de Excel
  3.     $eol= "\r\n";
  4.     $archivo = "Location.csv";  // path + archivo
  5.     $fp = fopen ( $archivo , "r" );
  6.     $c=0;
  7.     while (( $data = fgetcsv ( $fp , 1000 , "," )) !== FALSE ) {
  8.              //hago los inserts.........
  9.         }
  10.     fclose ( $fp );
  11. ?>
gracias nuevamente Patriarka. Una pregunta, los insert son a modo tradicional o conlleva algo especial?
  #8 (permalink)  
Antiguo 20/02/2012, 08:13
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 2 meses
Puntos: 288
Respuesta: Dichosa carga CSV...

no se como los haces vos? y no se lo que inserta el cliente?
mostranos 5 registros como ejemplo del csv asi te ayudamos un poco mas, despues nos pagas.........
  #9 (permalink)  
Antiguo 20/02/2012, 08:38
 
Fecha de Ingreso: febrero-2012
Mensajes: 8
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Dichosa carga CSV...

Pensaba que sería un INSERT normal....he visto por ahí este código de un ejemplo
Código PHP:
$import="INSERT into kmmb_member1(no_ahli,no_pin,nama,no_ic_baru,no_ic_lama) values('$data[0]','$data[1]','$data[2]','$data[3]','$data[4]')"
Es correcto?
  #10 (permalink)  
Antiguo 20/02/2012, 08:45
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 2 meses
Puntos: 288
Respuesta: Dichosa carga CSV...

y claro $data[n] tiene los valores de la celda de cada registro,
podes hacer esto dentro del while
var_dump($data);
y ver que tiene cada regsitro
  #11 (permalink)  
Antiguo 20/02/2012, 09:03
 
Fecha de Ingreso: febrero-2012
Mensajes: 8
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Dichosa carga CSV...

Lo que he implementado es

Código PHP:
<?php
include("includes/funciones.php");
include(
"includes/conexion.php");
if(isset(
$_POST['submit']))
   {
     
$filename=$_POST['filename'];
     
$handle fopen("$filename""r");
     while ((
$data fgetcsv($handle100000",")) !== FALSE)
     {
    
       
$import="INSERT into csv(id_agencia,nombre,sede,abrev) values('$data[0]','$data[1]','$data[2]','$data[3]')";
       
mysql_query($import) or die(mysql_error());
       
var_dump($data);

     }
     
fclose($handle);
     print 
"Import done";
   }
   else
   {
 
      print 
"<form action='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 caso que sólo me rellena el primer casillero de la base de datos que corresponde a id_agencia, pero el resto no los muestra o no los ingresa. al comprobar con el var_dump, al final de cada inserción me muestra unas dobles comillas repetidas "...BES"""
  #12 (permalink)  
Antiguo 20/02/2012, 10:17
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 2 meses
Puntos: 288
Respuesta: Dichosa carga CSV...

<form action='csv.php' method='post'> te falta el multipart-formdata me parece?
y vos trabajas con archivos entonecs usa el array global FILES

$filename=$_FILES['filename']
fijate que te muestra esto para poder operar
var_dump($_FILES);
  #13 (permalink)  
Antiguo 21/02/2012, 01:59
 
Fecha de Ingreso: febrero-2012
Mensajes: 8
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Dichosa carga CSV...

Nuevamente muchas gracias por contestar Patriarka. Al final conseguí hacer funcionar el proceso y me da de alta correctamente en al BBDD. Ahora creo que viene lo más dificil, igualar unos ID a nombre real que será lo que suba el cliente y dar una validación correcta para que no puedan duplicar los usuarios... a ver si no muero en el intento :D
  #14 (permalink)  
Antiguo 21/02/2012, 10:50
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 2 meses
Puntos: 288
Respuesta: Dichosa carga CSV...

ok, vos tenes 2 campos claves: el id y el nombre.

yo te propongo esto para que no tengas tantos problemas:
el ID debe ser autoincrement
el NOMBRE quizas se pueda repetir,
agregar otro campo que sea el de CODIGO_ARTICULO , que va a ser el que administra el cliente

entonces solo validas que el CODIGO_ARTICULO no este repetido y el nombre,
si existe lo actualizas, sino se crea uno nuevo
  #15 (permalink)  
Antiguo 23/02/2012, 09:14
 
Fecha de Ingreso: febrero-2012
Mensajes: 8
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Dichosa carga CSV...

gracias nuevamente Patriarka, ya he conseguido la validación de usuarios, ahora tengo que hacer un par de modificaciones más y listo

Etiquetas: usuarios
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 09:30.