Foros del Web » Programando para Internet » PHP »

Datos de un CSV

Estas en el tema de Datos de un CSV en el foro de PHP en Foros del Web. Hola, hace unos dias hice un script que me permite actualizar datos como precio y stock de los productos de una tienda virtual en prestashop, ...
  #1 (permalink)  
Antiguo 18/10/2010, 09:20
 
Fecha de Ingreso: mayo-2003
Ubicación: Lima
Mensajes: 967
Antigüedad: 21 años
Puntos: 8
Datos de un CSV

Hola, hace unos dias hice un script que me permite actualizar datos como precio y stock de los productos de una tienda virtual en prestashop, todo estaba bien, me enviaban el archivo excel yo lo convertia a CSV, ese archivo lo cargaba y el resto lo hacia mi script, el caso es que el precio que me da el proveedor en el excel se debe multiplicar por un monto, hasta ahora todo estaba marchando bien, pero el problema viene cuando un proveedor me da sus actualizaciones directamente en CSV, cuando se tiene que multiplicar el campo del precio por el monto adicional me devuelve 0 como resultado.

Código PHP:
Ver original
  1. while (($data = fgetcsv ($fp , 1000, ";")) !== FALSE) {
  2.     foreach($data as $row) {
  3.  
  4.         if ($i == 10) {
  5.             $row = $row * 1.10;
  6.         }
  7.  
  8.     }
  9. }

en el codigo anterior le digo que cuando $i (indicador de columna) sea 10 (campo del precio), multiplique el precio por 1.10, cuando me daban el excel y yo lo convertia a CSV no tenia ningun problema, pero ahora que me dan el CSV directamente el resultado de esa multiplicacion es 0.

Espero que alguien me pueda ayudar.

Saludos.
__________________
El aprendiz.
  #2 (permalink)  
Antiguo 18/10/2010, 10:11
Avatar de lair  
Fecha de Ingreso: enero-2009
Ubicación: header('Location: Morelia");
Mensajes: 1.052
Antigüedad: 15 años, 4 meses
Puntos: 46
Respuesta: Datos de un CSV

Hola.

imprime la estructura de tu variable, quiza alla algo mal
Código PHP:
Ver original
  1. while (($data = fgetcsv ($fp , 1000, ";")) !== FALSE) {
  2.     foreach($data as $row) {
  3.  
  4.         echo("<pre>");
  5.         print_r($row);
  6.         echo("</pre>");
  7.  
  8.         if ($i == 10) {
  9.             $row = $row * 1.10;
  10.         }
  11.  
  12.     }
  13. }

quiza estas indicando mal el indice.

Suerte
  #3 (permalink)  
Antiguo 18/10/2010, 11:09
 
Fecha de Ingreso: mayo-2003
Ubicación: Lima
Mensajes: 967
Antigüedad: 21 años
Puntos: 8
Respuesta: Datos de un CSV

tambien hice eso, el indice es el correcto, para ese campo me devuelve los valores de los precios: 10.75 por ejemplo, pero cuando lo multiplico por algun valor, me devuelve 0.
__________________
El aprendiz.
  #4 (permalink)  
Antiguo 18/10/2010, 11:24
Avatar de lair  
Fecha de Ingreso: enero-2009
Ubicación: header('Location: Morelia");
Mensajes: 1.052
Antigüedad: 15 años, 4 meses
Puntos: 46
Respuesta: Datos de un CSV

Entonces intenta hacerle un cast
$row = $row * 1.10;
$row = (float)$row * (float)1.10;

quiza el problema se que el valor que extraes del cvs lo esta interpretando como cadena y no como numero

Suerte.
  #5 (permalink)  
Antiguo 18/10/2010, 11:32
 
Fecha de Ingreso: mayo-2003
Ubicación: Lima
Mensajes: 967
Antigüedad: 21 años
Puntos: 8
Respuesta: Datos de un CSV

Tambien pense en eso y le puse los (float) primero a $row y luego a los dos asi como tu lo pones y el resultado sigue siendo 0.

Que mas podria ser?
__________________
El aprendiz.
  #6 (permalink)  
Antiguo 18/10/2010, 15:03
Avatar de lair  
Fecha de Ingreso: enero-2009
Ubicación: header('Location: Morelia");
Mensajes: 1.052
Antigüedad: 15 años, 4 meses
Puntos: 46
Respuesta: Datos de un CSV

y si imprimes $row te muestra algun resultado diferente a 0??
antes de realizar la multiplicacion claro esta

puedes pasarme tu archivo cvs para tambien hacer pruebas??
  #7 (permalink)  
Antiguo 18/10/2010, 17:36
 
Fecha de Ingreso: mayo-2003
Ubicación: Lima
Mensajes: 967
Antigüedad: 21 años
Puntos: 8
Respuesta: Datos de un CSV

cuando imprimo solo $row para el $i iguala 10 si me devuelve el precio que dice en el CSV pero cuando lo multiplico por algo solo devuelve 0. Pasame un correo para enviarte el archivo CSV.
__________________
El aprendiz.

Etiquetas: csv
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 17:48.