Tengo un problema que me trae de cabeza horas.
Que tipo tengo que utilizar en mi BD SQL para que me deje introducir decimales?
| ||||
Respuesta: Decimales sql en google hay informacion bastante de eso solo coloca numeros decimales y veras pero aca esta el primer link que me aparecio y seguro que te lo dice
__________________ aprende d tus errores e incrementa tu conocimientos it's not a bug, it's an undocumented feature By @David php the right way |
| ||||
Respuesta: Decimales sql ve en este link ahi te lo indican y lo explican bien
__________________ aprende d tus errores e incrementa tu conocimientos it's not a bug, it's an undocumented feature By @David php the right way |
| ||||
Tema movido desde PHP a Bases de Datos |
| ||||
Respuesta: Decimales sql En primer lugar: ¿Con qué lenguaje estás programando? Diferentes lenguajes manejan las cosas de diferente forma.
__________________ ¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente... "El problema es la interfase silla-teclado." (Gillermo Luque) |
| ||||
Respuesta: Decimales sql Para eso existen las funciones de conversión como number_format() y la clase NumberFormatter Lo que nunca debes hacer es almacenar números como caracteres, o modificar el formato que MySQL usa para manejar los valores decimales, ya que lo que éste usa es el estándar internacional. Todo problema de representación de fecha o número se debe resolver siempre en la aplicación.
__________________ ¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente... "El problema es la interfase silla-teclado." (Gillermo Luque) |
| |||
Respuesta: Decimales sql De acuerdo usare esa clase, entonces y por ultimo (espero, jeje) en la BD pongo para decimales float, no? Y en la columna precio (moneda) que pongo? tambien utilizo esta clase, verdad? Gracias. |
| ||||
Respuesta: Decimales sql En realidad, según dice el manual de referencia de MySQL, para los valores monetarios y todos aquelllos que requieran cierta precisión, se debe usar DECIMAL(l,d), donde l es la longitud total en bytes que usará, sumando enteros + punto decimal + decimales, mientras que d es la cantidad de decimales. Esto es así porque FLOAT es un valor numérico decimal por aproximación, lo que puede llevar a que se generen redondeos que afecten (y bastante) los resultados financieros. ASí, si el valor máximo a representar fuese 999999.99, el campo se debe definir como DECIMAL(9, 2). ¿Se entiende?
__________________ ¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente... "El problema es la interfase silla-teclado." (Gillermo Luque) |
| |||
Respuesta: Decimales sql :O Ahora el problema viene en el formulario que funcion puedo usar para que detecte si se introdujo como punto o coma y lo cambie a punto para enviarlo a la BD. Por cierto, investige un poco y descubri money_format() pero trabajo (en pruebas) en Windows y no me deja utilizarla. MIERDA! xD añadire el signo yo mismo. Un saludo! PD: Nuevo problema, el precio del producto es opcional que se introduzca o no, si no se introduce en la ficha de producto no aparece, si se introduce si sale, de esta forma si no se introduce automaticamente se fija en 0.00 € ¿Que puedo hacer? Ademas esto ocupa mas espacio en la BD. Última edición por mariomon17; 30/11/2010 a las 16:43 Razón: Precio opcionable |
| ||||
Respuesta: Decimales sql Todo elemento opcional, es decir, un atributo o conjunto de atributos opcionales pueden implicar la existencia de una tabla dependiente (el en DER lógico se denominan "entidades débiles") cuya instancia depende de otra tabla. Esto significaría que debes crear una tabla que almacene los precios si y sólo si se ingresan, y por ende también deberás crear dinámicamente la inserción a esa tabla. Al menos eso sería lo correcto desde la óptica del modelo de datos.
__________________ ¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente... "El problema es la interfase silla-teclado." (Gillermo Luque) |
| |||
Respuesta: Decimales sql Pero eso seria liar demasiado el asunto, una tabla solo para los precios? es demasiado, yo creo porque solo es un campo del producto nada mas, solo uno por producto (por fila). Lo que ocurre es que con float el valor predeterminado era "nada" y con decimal es 0.00 Entonces si tu no indicabas precio en el INSET del producto, al mostrarlo no salia nada, pero si ahora no pones nada, este se muestra como 0,00 y parece que el producto es gratis. |
| ||||
Respuesta: Decimales sql Cita: Eso es un problema irrelevante para el modelo de datos. Es un problema de tipo procedimental y lo tienes que resolver en la aplicación, no en la base.Lo que ocurre es que con float el valor predeterminado era "nada" y con decimal es 0.00 Entonces si tu no indicabas precio en el INSET del producto, al mostrarlo no salia nada, pero si ahora no pones nada, este se muestra como 0,00 y parece que el producto es gratis. En otras palabras: Es una cuestión de diseño de aplicaciones... y por ende, decisión del que diseña la interfaz.
__________________ ¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente... "El problema es la interfase silla-teclado." (Gillermo Luque) |
| |||
Respuesta: Decimales sql Entonces? tendre q acer una comprobacion en la aplicacion de si es 0,00 no mostrar? Gracias. DUDA: Pero esto no ocupa mas espacio en la BD, porque seran muy pocos los productos que tengan el precio? Que es lo mejor para convertir la coma del formulario en un punto para enviarlo a la BD, ¿Javascript o php? Gracias! |
| ||||
Respuesta: Decimales sql Cita: Lamentablemente no hay escapatoria. Pero no es muy raro; yo lo hago en muchas aplicaciones, porque es más simple. Entonces? tendre q acer una comprobacion en la aplicacion de si es 0,00 no mostrar? Habitualmente lo que haces es volver invisible el control en el Form, o bien no crearlo, cuando es una página dinámica. Cita: En tanto se trate de una tabla destinada a guardar descripciones o valores de referencia, no generará demasiado impacto. Serán 8 bytes máximo por registro.DUDA: Pero esto no ocupa mas espacio en la BD, porque seran muy pocos los productos que tengan el precio? SI el tema fuese una tabla con centenares de miles de registros... la cosa cambia. Puede insumir mucho espacio para datos que no se usan. En esos casos lo que hay que analizar es si la ocurrencia de nulos es muy alta, y si es así, crear la tabla separada. Cita: No usas Java para enviar datos a la base, sólo PHP. Yo preferiría usar el PHP, de esa forma el proceso se hace en servidor y no en el cliente. Que es lo mejor para convertir la coma del formulario en un punto para enviarlo a la BD, ¿Javascript o php? Gracias!
__________________ ¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente... "El problema es la interfase silla-teclado." (Gillermo Luque) |
| |||
Respuesta: Decimales sql Cita: Que funcion puedo utilizar para: detectar si el decimal se ha metido con . o , y si es , convertirlo a .Habitualmente lo que haces es volver invisible el control en el Form, o bien no crearlo, cuando es una página dinámica. Me podrias explicar esto, no logro entenderlo. Muchas gracias por tu paciencia! :D |
| ||||
Respuesta: Decimales sql puedes usar expresiones regulares por ejemplo
Código PHP:
creo que el patron se puede mejorar un poco pero en base es ese que el principio y el fin sea numero y que se pueda colocar punto entre el numero de inicio y de fin saludo Ver original
__________________ aprende d tus errores e incrementa tu conocimientos it's not a bug, it's an undocumented feature By @David php the right way |
| |||
Respuesta: Decimales sql Ese tambien me vale pero al final lo hice con este que encontre y es algo mas sencillo.
Código PHP:
Ver original |
| ||||
Respuesta: Decimales sql Cita: mm tienes razon y es mas rapido jaja que bien que allas encontrado tu repuesta saludos
Iniciado por mariomon17 Ese tambien me vale pero al final lo hice con este que encontre y es algo mas sencillo.
Código PHP:
Ver original
__________________ aprende d tus errores e incrementa tu conocimientos it's not a bug, it's an undocumented feature By @David php the right way |
Etiquetas: |