Foros del Web » Programando para Internet » PHP »

Formatear datos float(2,2)

Estas en el tema de Formatear datos float(2,2) en el foro de PHP en Foros del Web. Hola tengo un formulario con el que quiero insertar datos numéricos a una BD. Como máximo deben ser datos decimales 2,2, por eso he usado ...
  #1 (permalink)  
Antiguo 16/06/2008, 03:10
 
Fecha de Ingreso: junio-2008
Mensajes: 93
Antigüedad: 15 años, 10 meses
Puntos: 0
Formatear datos float(2,2)

Hola tengo un formulario con el que quiero insertar datos numéricos a una BD. Como máximo deben ser datos decimales 2,2, por eso he usado como tipo de dato en la BD "float (2,2)".

Pero al cargarlos a la BD no los identifica como números decimales si no que ponga lo que ponga siempre inserta 0.99, eso es porque antes de enviarlos a la BD tengo que darles formato ¿verdad? pero no tengo muy claro como. He probado number_format pero no ha funcionado, tal vez no lo he hecho bien.

¿Alguien podría ayudarme?
  #2 (permalink)  
Antiguo 16/06/2008, 06:20
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Formatear datos float(2,2)

quizá conocer el formato del numero es importante, a veces usamos comas o puntos... pero tu decides...

ej. 12.24543 vs 134,4893 ¿cual es el adecuado?

no importa ya que vamos a tratarlo igual.... pero, mejor usemos el punto con explode()

Código PHP:
$test=explode('.''12.24543');

// tenemos las partes??

$salida=$test[0];
if (isset(
$test[1]))
{
  
// decimal
  
$salida.='.'// no se si sea coma, o punto... tu eliges!
  
$salida.=$test[0];
}

echo 
$salida
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 16/06/2008, 13:48
 
Fecha de Ingreso: junio-2008
Mensajes: 93
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Formatear datos float(2,2)

Gracias pateketrueke, pero no acabo de entender cómo funciona, si lo puedieras explicar un poco más ampliamente, por favor.

El problema en concreto es que tengo un formulario donde ahora mismo el usuario puede introducir lo que quiera (hasta que consiga enmascarar los campos) pero aunque inserte números decimales, la BD no me los interpreta.

¿Hay que configurar explode para cada variable? ¿Cómo se hace para configurarlo en 2,2?
  #4 (permalink)  
Antiguo 16/06/2008, 19:19
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Formatear datos float(2,2)

claro... explode() sirve para separar por caracteres (separadores) una cadena, o en este caso... un numero y lo devuelve como arreglo.... ahí esta una clave

ahora, si tu formato es X,X podemos hacer una función re utilizable para este propósito

Código PHP:
function mi_float($numero$separador ','$decimales 1)
{
  
// por defecto, usaremos coma...
  // pero se puede configurar el segundo parametro (separador)
  
$partes explode($separador$numero);

  
$el_float 0// salida
  
  // ahora, si existe la parte[0] este es el entero...
  
if (isset($partes[0]))
  {
    
$el_float $partes[0]; // OK
  
}
 
  
// si existe la parte[1] son los decimales
  
if (isset($partes[1]))
  {
    
$el_float .= $separador// reutilizamos el separador
       // para unir de nuevo el numero....
    
    // ahora podemos limitar los decimales con substr()
         // igualmente es configurable el numero de estos....
    
$decimal substr($partes[1], 0$decimales);
       
// desde el indice cero, y solo un caracter (numero)

    
$el_float .= $decimal// añadimos decimales
  
}
  
// ahora, simplemente regresamos el float
  
return $el_float;

su uso es simple (espero que la explicación también)

Código PHP:
$variable mi_float($_POST['digito']);

// y ahora, usa esta variable como desees... tu ya sabes ;) 
suerte!


Referencias:

http://php.net/explode
http://php.net/substr

PDTA: ten mucho cuidado con esta función, ya que si usamos separador de miles (coma) debes cambiar el segundo parámetro por, el punto... por ejemplo, sino... no resultara como queremos
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 17/06/2008, 11:06
 
Fecha de Ingreso: junio-2008
Mensajes: 93
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Formatear datos float(2,2)

Muchas gracias por la ayuda, no me funciona, pero supongo que también influye el hecho que no he conseguido enmascarar los campos del formulario así que esperaré a que eso me funcione para comprobar cómo se insertan en la Base de datos.
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 05:03.