Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Valores numericos con decimales despues de consulta Mysql

Estas en el tema de Valores numericos con decimales despues de consulta Mysql en el foro de PHP en Foros del Web. Hola, disculpen, no sé si es una consulta mas de Mysql o php. Realizo la siguiente consulta en la base de datos para sumar los ...
  #1 (permalink)  
Antiguo 09/09/2014, 12:41
 
Fecha de Ingreso: octubre-2011
Mensajes: 206
Antigüedad: 12 años, 6 meses
Puntos: 1
Valores numericos con decimales despues de consulta Mysql

Hola,

disculpen, no sé si es una consulta mas de Mysql o php. Realizo la siguiente consulta en la base de datos para sumar los cobros (el campo cobro esta creado en la base de datos como decimal).

Código PHP:
$pos=mysql_query("SELECT SUM(Cobro) as totalpos FROM mitabla WHERE (Tipo='1') "),$ConectaBD);
$rowpos=mysql_fetch_array($posMYSQL_ASSOC);

$neg=mysql_query("SELECT SUM(Cobro) as totalneg FROM mitabla WHERE (Tipo='2') )",$ConectaBD);
$rowneg=mysql_fetch_array($negMYSQL_ASSOC);

$rowcobro=$rowpos["totalpos"] -$rowsaldocobroneg["totalneg"]; 
Esta misma consulta la hago para otra columna (tambien decimal) llamada pagos. Una vez realizado muestro los dos campos en un formulario. Hasta aquí todo ok, el problema es que luego tengo que hacer una sentencia php como la siguiente:

Código PHP:
if($rowcobro!=$rowpagos){


Aunque en el campo de texto del formulario donde he imprimido el valor de $rowcobro y $rowpagos vea que ambos campos son iguales la consulta siempre entra en el bucle if. Creo que es un problema con los decimales de los numeros, ambos tienen dos decimales pero no se como solucionarlo o comprobar que el problema es por esto.

Gracias. Saludos
  #2 (permalink)  
Antiguo 09/09/2014, 13:28
 
Fecha de Ingreso: abril-2011
Ubicación: Vilcún, cerca de Temuco
Mensajes: 67
Antigüedad: 13 años, 1 mes
Puntos: 5
Respuesta: Valores numericos con decimales despues de consulta Mysql

¿Como obtuviste $rowpagos?
  #3 (permalink)  
Antiguo 09/09/2014, 13:32
 
Fecha de Ingreso: octubre-2011
Mensajes: 206
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: Valores numericos con decimales despues de consulta Mysql

De la misma forma:

Código PHP:

$pagospos
=mysql_query("SELECT SUM(Pagos) as totalpagospos FROM mitabla WHERE (Tipo='1') "),$ConectaBD);
$rowpagospos=mysql_fetch_array($posMYSQL_ASSOC);

$pagosneg=mysql_query("SELECT SUM(Pagos) as totalpagosneg FROM mitabla WHERE (Tipo='2') )",$ConectaBD);
$rowpagosneg=mysql_fetch_array($negMYSQL_ASSOC);

$rowpagos=$rowpagospos["totalpagospos"] -$rowpagosneg["totalpagosneg"]; 
El código es un poco mas largo, necesito hacer la consulta con el if comparando esas varables. No puedo hacer la consulta directa con Mysql para saber directamente si son distintos o no.

Un saludo
  #4 (permalink)  
Antiguo 09/09/2014, 14:01
 
Fecha de Ingreso: abril-2011
Ubicación: Vilcún, cerca de Temuco
Mensajes: 67
Antigüedad: 13 años, 1 mes
Puntos: 5
Respuesta: Valores numericos con decimales despues de consulta Mysql

Qué raro, no debería haber problema con eso.

Prueba comparando los valores recibidos como strings:

Código PHP:
Ver original
  1. $str_rowcobros=number_format($rowcobros, 2);
  2. $str_rowpagos=number_format($rowpagos,2);
  3. if($str_rowpagos != $str_rowcobros){...

o haz un casting y fija un límite para los decimales, por ejemplo:

Código PHP:
Ver original
  1. $float_rowcobros=(float)$rowcobros;
  2. $float_row_pagos=(float)$rowpagos;
  3. $precision=0.01;
  4. if(($float_rowpagos - $float_rowcobros)>$precision){...

No se me ocurre otra cosa...
  #5 (permalink)  
Antiguo 09/09/2014, 14:03
 
Fecha de Ingreso: abril-2011
Ubicación: Vilcún, cerca de Temuco
Mensajes: 67
Antigüedad: 13 años, 1 mes
Puntos: 5
Respuesta: Valores numericos con decimales despues de consulta Mysql

¿Has visto los valores con que se están llenando las variables? A lo mejor te está llegando algún NULL...
  #6 (permalink)  
Antiguo 10/09/2014, 10:52
 
Fecha de Ingreso: octubre-2011
Mensajes: 206
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: Valores numericos con decimales despues de consulta Mysql

Naa perfecto, funciona con esto. Muchas gracias.

Código PHP:
    $str_rowcobros=number_format($rowcobros2);
    
$str_rowpagos=number_format($rowpagos,2);
    if(
$str_rowpagos != $str_rowcobros){... 

Etiquetas: formulario, mysql, numericos, select, sql, tabla
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 13:31.