Foros del Web » Programando para Internet » PHP »

Dinero y php

Estas en el tema de Dinero y php en el foro de PHP en Foros del Web. Mi duda es la siguiente: Tengo que trabajar con formularios con cantidades de dinero. La cosa es que necesito que me pille la puntuacion, por ...
  #1 (permalink)  
Antiguo 16/03/2006, 12:17
 
Fecha de Ingreso: diciembre-2005
Mensajes: 88
Antigüedad: 12 años
Puntos: 0
Dinero y php

Mi duda es la siguiente:

Tengo que trabajar con formularios con cantidades de dinero. La cosa es que necesito que me pille la puntuacion, por ejemplo, que al poner 120.500 interprete ciento veintemil quinientos euros y no ciento veinte con quinientos...

como puedo usar los signos de puntuacion del dinero en php?

Gracias, un saludo.
  #2 (permalink)  
Antiguo 16/03/2006, 12:34
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
No entendí donde tienes el problema ..

Tu tienes un formulario HTML común con un campo "input" común (text .. OK?) .. el dato lo envias a procesar a un script PHP ("envias el formulario").

Si el usuario te puso un "." (punto) dependiendo de como trabajes ese campo .. así lo interpretaras .. No sé si operas con el directamente o lo llevas a una BBDD? ..

No sé que tipo de comentario hacer al respecto hasta que veas donde o como gestionas ese dato. En principio te puedo comentar que PHP puede gestionar la "locación":

set_locale()
http://www.php.net/set_locale

Con eso podrás ajustar el timpo de moneda (y otras propiedades que afectan al tratamiento de ciertos datos en diferentes paises).

Un saludo,
  #3 (permalink)  
Antiguo 17/03/2006, 05:05
 
Fecha de Ingreso: diciembre-2005
Mensajes: 88
Antigüedad: 12 años
Puntos: 0
Lo que yo hago es directamente insertarlo en una base de datos y despues a la hora de mostrarlo, trabajo con el dato.

Ej de lo que quiero conseguir:
inserto en el form 20.000 euros
se guarda en la base de datos 20.000 euros
//realizo una select
saco el dato del precio (20.000 euros)
lo quiero pasar a pesetas ($euros*166.386)
muestro ambas cantidades euros y pesetas

La cosa es que al insertar 20.000, en la bd se guarda solamente 20
  #4 (permalink)  
Antiguo 17/03/2006, 06:00
 
Fecha de Ingreso: mayo-2002
Ubicación: En MVD
Mensajes: 34
Antigüedad: 15 años, 7 meses
Puntos: 0
Tu problema es un problema de visualización unicamente... y opcionalmente de parseo de datos. Tenes manera de resolverlo con la regionalizacion (la funcion setlocale de php).
Yo preferiría hacer lo siguiente (para no tocar demasiadas configuraciones en el script):
  1. dejar ingresar en el textbox "20.000"
  2. al ingresar ese valor en la base de datos, parsearlo primero y convertir ese "20.000" en "20000"
  3. cuando desee mostrarlo en cualquier lugar parseo de nuevo, y convierto ese 20000 en 20.000
Hay maneras de dejar ese 20.000 funcionar de manera "natural", pero te vas a topar en muchos lugares (x ejemplo en javascript) con el problema de que 20.000 x 2 = 40, y no 40.000 como esperas.

Más que nada por esto ultimo es que yo preferiría guardar los datos de manera transparente y formatearlos segun sea necesario (con punto, coma, o lo que sea). Me permite hacer las operaciones sin tener que hacer conversiones extrañas, estimo que es más adecuado convertir al visualizar que al operar con los datos.

Espero q el aporte haya servido.
Slds
Grc.
  #5 (permalink)  
Antiguo 17/03/2006, 06:41
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Así es . lo ideal es "limpiar" tu dato de ese separador de miles y tratar con campos de tu BBDD de tipo decimal si lo requieres (con el n° de decimales que necesites). Ten presente el tipo de dato decimal de tu BBDD (para tu campo) que caracter se toma para separador de decimales (el punto por defecto si no se cambia? tendras que verificarlo)

Opera con el dato "puro" (sin puntos) y de ahí le das formato a la hora de visualizarlo.

Un saludo,
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:25.