Ver Mensaje Individual
  #1 (permalink)  
Antiguo 05/06/2011, 16:56
Avatar de SirDuque
SirDuque
 
Fecha de Ingreso: febrero-2009
Ubicación: Paso del Rey, Buenos Aires, Argentina
Mensajes: 975
Antigüedad: 15 años, 2 meses
Puntos: 89
Importando CSV no me toma DOUBLE, INT, DATE en MySQL

Tengo un archivo CSV:

Código CSV:
Ver original
  1. 900009;200104;;1;00002;01/04/2001;MARROQUINERIA NILDA;1;11.75;CO1;1;900000398;11.75;20000;8;29/06/2004;16:33;LAURE;

recibo en PHP:

Código PHP:
Ver original
  1. $file=$_FILES['userfile'];
  2.    
  3. if ($file['type'] == 'application/vnd.ms-excel')
  4. {
  5.  
  6.     $fpname =   $file[  'tmp_name'  ];
  7.     $row    =   0;  
  8.     $fp =   fopen   (   "$fpname"   ,   "r" );
  9.     while ( $data   =   fgetcsv (   $fp ,   1000    ,   ";" )   )
  10.         {
  11.             $num = count ($data);
  12.                     $socio  =   $data[0] ;
  13.                     $periodo    =   $data[1];
  14.                     $forma_pago =   $data[2];
  15.                     $factura    =   $data[3];
  16.                     $articulo   =   $data[4];
  17.                     $vencimiento    =   $data[5];
  18.                     $totalcuota =   $data[14];
  19.                     $cuota  =   $data[7];
  20.                     $importe    =   $data[8];
  21.                     $tipo   =   $data[9];
  22.                     $comprobante    =   $data[10];
  23.                     $recpag =   $data[11];
  24.                     $concepto   =   $data[13];
  25.                     $fecha  =   $data[15];
  26.                     $hora   =   $data[16];
  27.                     $opera_id   =   $data[17];
  28.                     $observacion    =   $data[6];
  29.                    
  30.                    
  31.                 print "Procesando linea: $row <br>";  
  32.                 #$sql   =   "INSERT `sistema_cuota` (`socio`,`periodo`,`forma_pago` ,`factura`,`articulo`,`vencimiento`,`totalcuota`,`cuota`,`importe`,`tipo`,`comprobante`,`recpag`,`concepto`,`fecha`,`hora`,`opera_id`,`observacion`) values ('$socio','$periodo','$forma_pago','$factura','$articulo','$vencimiento','$totalcuota','$cuota','".$importe."','$tipo','$comprobante','$recpag','$concepto','$fecha','$hora','$opera_id','$observacion') ";
  33.                 echo $importe;
  34.                 $sql    =   "INSERT sistema_cuota (`importe`) values ('$importe')";
  35.                 mysql_query("$sql") or die (mysql_error());
  36.             print "Linea procesado: $row , con exito!<br>---------------------------------------------------<br>";
  37.  
  38.         }
  39. }

enfoncandonos en $data[8] o $importe su valor es 11.75

en MySQL al campo importe le asigno DOUBLE (4,2) y si inserto:
$sql = "INSERT sistema_cuota (`importe`) values ('$importe')";

me inserta 0.00

si lo asigno como FLOAT o DECIMAL lo mismo

0.00

Pero si lo asigno TEXT lo toma bien.

Lo mismo me pasa con los campos INT y DATE cosa que es un problema.

Cual es el problema?

Lo raro es que uso el mismo codigo para otro CSV y si me lo toma...
__________________
Mono programando!
twitter.com/eguimariano