Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Insertar dato tipo double

Estas en el tema de Insertar dato tipo double en el foro de Mysql en Foros del Web. Hola amigos. Tengo un problema que me tiene bastante frustrado, y es que al capturar un dato decimal con php, no logro insertarlo en la ...
  #1 (permalink)  
Antiguo 20/07/2010, 14:29
Avatar de Cero_Cool  
Fecha de Ingreso: abril-2007
Ubicación: Chile
Mensajes: 113
Antigüedad: 17 años, 2 meses
Puntos: 6
Insertar dato tipo double

Hola amigos. Tengo un problema que me tiene bastante frustrado, y es que al capturar un dato decimal con php, no logro insertarlo en la BD en un campo de tipo double(12,4) ya que solo almacena la parte entera de este, por ejemplo, si intento almacenar 3,4 en la bd solo queda el 3 sin su parte decimal. Ya revise la configuracion regional y las comas se usan paa decimales y los puntos para miles ( notacion francesa ). De antemano muchas gracias.

he setado haciendo pruebas y no logro llegar a la solucion, pero vi que la tabla si admite los decimales si los inserto manualmente, y php si captura el numero completo ya que lo imprimo despeus de su captura en la variable y sale bien por pantalla, pero el prbema esta justo cuando llamao al SP que inserta el valor, incluso si hago un insert por consola tampoco guarda los decimales, solo la parte entera. por favor ayuda que ya estoy chato !"!"""

Última edición por Cero_Cool; 20/07/2010 a las 15:44
  #2 (permalink)  
Antiguo 20/07/2010, 15:58
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 7 meses
Puntos: 2658
Respuesta: Insertar dato tipo double

Si estás intentando meter "3,4" como número en un campo decimal, tu problema es la representación regional.
Las bases de datos trabajan con formatos nativos de datos, entre los cuales los decimales usan para su representación el punto decimal (estilo inglés) y no la coma.
En tu caso, lo que en realidad le estás enviando es un par de enteros, por lo que MySQL toma el primero y descarta el segundo.
Lo que tienes que hacer es controlar la representación del decimal cuando lo envías al INSERT, de modo que quede representado con punto:
Código MySQL:
Ver original
  1. INSERT INTO tabla(campodecimal) VALUES(3.4));

Par ver como controlarlo en PHP, deberías preguntar en el foro de PHP, porque eso es problema de programación, o bien ir directamente al manual de referencia de PHP:
PHP:: NumberFormatter
PHP::number_format
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 20/07/2010, 17:36
Avatar de Cero_Cool  
Fecha de Ingreso: abril-2007
Ubicación: Chile
Mensajes: 113
Antigüedad: 17 años, 2 meses
Puntos: 6
Respuesta: Insertar dato tipo double

mmmm gracias tienes razon, pero descubri algo que no parecia tan logico.
Se puede usar comas para separar los decimales de los enteros tanto en php como en en mysql y este ultimo lo reconocera sin problemas si a configracion regional del entorno es la adecuada, es mas se pueden insertar manualmente numero decimales con coma y mysql lo acepta, pero lo que se debe hacer si o si, es insertar el numero decimal con punto, aunque en la bd lo veran con coma.
  #4 (permalink)  
Antiguo 20/07/2010, 19:15
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 7 meses
Puntos: 2658
Respuesta: Insertar dato tipo double

Cita:
es mas se pueden insertar manualmente numero decimales con coma y mysql lo acepta, pero lo que se debe hacer si o si, es insertar el numero decimal con punto, aunque en la bd lo veran con coma.
En realidad lo que ocurre es que el conector o la librería que realiza la conversión implícita entre tipos de dato, no es que MySQL te acepte el formato. Para que lo haga deberías modificar la configuración del servidor, cosa que en ese caso sería una pésima práctica.
Lo más recomendable es controlar el problema de regionalización en la aplicación, porque si dejas que el sistema resuelva el problema te encontrarás con serios problemas de sintaxis, casi indetectables fuera de los escenarios de ocurrencia.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 21/07/2010, 07:23
Avatar de Cero_Cool  
Fecha de Ingreso: abril-2007
Ubicación: Chile
Mensajes: 113
Antigüedad: 17 años, 2 meses
Puntos: 6
Respuesta: Insertar dato tipo double

Ok, gracias por la orientación, me fue muy útil.
  #6 (permalink)  
Antiguo 21/07/2010, 07:53
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 7 meses
Puntos: 2658
Respuesta: Insertar dato tipo double

Por nada.
Yo ya pasé por el problema que causa la regionalización de un programa que funciona en diferentes máquinas, y es un verdadero incordio.
En ocasiones un programa que anda perfectamente en todos lados, falla en una sola PC sólo por la forma en que el usuario personaliza esos detalles de fecha, números, separadores, etc.
El más reciente de los problemas lo tuvimos por usuarios que configuran el mismo separador para decimales que para miles... y el programa no podía resolver la discrepancia.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: dato, double, tipo
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 23:57.