Tengo un archivo CSV:
Código CSV:
Ver original900009;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$file=$_FILES['userfile'];
if ($file['type'] == 'application/vnd.ms-excel')
{
$fpname = $file[ 'tmp_name' ];
$row = 0;
$fp = fopen ( "$fpname" , "r" ); while ( $data = fgetcsv ( $fp , 1000 , ";" ) ) {
$socio = $data[0] ;
$periodo = $data[1];
$forma_pago = $data[2];
$factura = $data[3];
$articulo = $data[4];
$vencimiento = $data[5];
$totalcuota = $data[14];
$cuota = $data[7];
$importe = $data[8];
$tipo = $data[9];
$comprobante = $data[10];
$recpag = $data[11];
$concepto = $data[13];
$fecha = $data[15];
$hora = $data[16];
$opera_id = $data[17];
$observacion = $data[6];
print "Procesando linea: $row <br>";
#$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') ";
echo $importe;
$sql = "INSERT sistema_cuota (`importe`) values ('$importe')";
print "Linea procesado: $row , con exito!<br>---------------------------------------------------<br>";
}
}
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...