Foros del Web » Programando para Internet » PHP »

Duda, como solucionar

Estas en el tema de Duda, como solucionar en el foro de PHP en Foros del Web. Hola tengo un pequeño problema que me esta volviendo loquin el caso es que tengo dos variables $variable1=select_balance($row['payerid']) ---->Este obtiene un valor de 29.90 $variable2=$cantidad1*$cantidad2------>El ...
  #1 (permalink)  
Antiguo 05/09/2007, 06:22
Avatar de laaccaal  
Fecha de Ingreso: julio-2003
Ubicación: Murcia
Mensajes: 147
Antigüedad: 20 años, 9 meses
Puntos: 1
Mensaje Duda, como solucionar

Hola tengo un pequeño problema que me esta volviendo loquin

el caso es que tengo dos variables

$variable1=select_balance($row['payerid']) ---->Este obtiene un valor de 29.90
$variable2=$cantidad1*$cantidad2------>El cual es la multiplicacion de 29.90*1 que seria 29.90

ahora cuando hago la siguiente condicional, no da a si los dos valores son iguales

if( $variable1 >= $variable2){

echo "pude acceder";
}

Como podran ver todo esta ok, pero no se porque carrisos no deja realizar las funciones si las dos cantidades son iguales

Gracias.
__________________
Album Fotos
Blog MisApuntes
  #2 (permalink)  
Antiguo 05/09/2007, 07:08
Avatar de McBlink  
Fecha de Ingreso: noviembre-2006
Ubicación: $ARG->LaPampa()
Mensajes: 1.694
Antigüedad: 17 años, 5 meses
Puntos: 23
Re: Duda, como solucionar

Buenos Dias,

estas seguro que tienen el mismo valor, o que variable1 es mayor a la 2... lo has comprobado?

sino puedes probar poniendo

Código PHP:

if ($variable1 == $variable2){ //suponiendo que las dos tienen el mismo valor..

correcto 

}else{

incorrecto


y otra forma, para probar si te funciona es darle a $variable1 = 20 y $variable2 = 15

y ahi prueba si te funciona, si es asi, el problema esta en tu $variable1...

saludos!
MC
__________________
Recuerda usar el highlight para mostrar código
mauricioblint.com
  #3 (permalink)  
Antiguo 05/09/2007, 07:11
Avatar de jerkan  
Fecha de Ingreso: septiembre-2005
Mensajes: 1.607
Antigüedad: 18 años, 7 meses
Puntos: 19
Re: Duda, como solucionar

También puedes utilizar la función var_dump para comprobar el valor y el tipo de un variable.
  #4 (permalink)  
Antiguo 05/09/2007, 07:55
Avatar de laaccaal  
Fecha de Ingreso: julio-2003
Ubicación: Murcia
Mensajes: 147
Antigüedad: 20 años, 9 meses
Puntos: 1
Re: Duda, como solucionar

pues estaba haciendo pruebas con el tal var_dump y el resultado es :

$variable1=float(29.90);
$variable2=float(29.90);

ahora lo que no entiendo es porque no funciona de forma correcta la condicional puesto a que ambos valores son iguales o $variable1 es mayor que $variable2

if( $variable1 >= $variable2){

echo "pude acceder";
}


alguien sabe por que otro posible motivo puede estar sucediendo esto ??
__________________
Album Fotos
Blog MisApuntes
  #5 (permalink)  
Antiguo 05/09/2007, 08:04
Avatar de mauled  
Fecha de Ingreso: marzo-2005
Ubicación: Cd. de México.
Mensajes: 3.001
Antigüedad: 19 años, 1 mes
Puntos: 33
Re: Duda, como solucionar

Concuerdo con jerkan, este error,normalmente, ocurre cuando los datos no son del mismo tipo, cómo te comentan en un post anterior, pon los valores de prueba "a mano" para que compruebes que tu condicional no tiene nada de malo si no que son lo datos los que estan mal...

Es decir;

Código PHP:
$variable129.90;
$variable229.90;

if( 
$variable1 >= $variable2){

echo 
"pude acceder";

Saludillos.
  #6 (permalink)  
Antiguo 05/09/2007, 09:49
Avatar de laaccaal  
Fecha de Ingreso: julio-2003
Ubicación: Murcia
Mensajes: 147
Antigüedad: 20 años, 9 meses
Puntos: 1
Re: Duda, como solucionar

pero que puede ser ya que var_dump me devuelve que ambos valores son del mismo tipo
__________________
Album Fotos
Blog MisApuntes
  #7 (permalink)  
Antiguo 06/09/2007, 03:30
Avatar de laaccaal  
Fecha de Ingreso: julio-2003
Ubicación: Murcia
Mensajes: 147
Antigüedad: 20 años, 9 meses
Puntos: 1
Re: Duda, como solucionar

Bueno al parecer no hay solucion para esto que me esta liando, la cuestion es que no se porque carrisos no funciona, y todas las respuestas de ayuda que me dieron son valederas, pero todo anda bien lo unico es que no pasa nada, sigo teniendo el mismo problema.

Ahora como dice mauled si le pongo valores estaticos a las variables si funciona, pero cuando hago lo que en principio señale no pasa naranjas.

Les agradeceria mas sugenerncias.

bueno lo que hace la funcion select_balance, es seleccionar el balance de un usuario en cuestion. Este el script

Código PHP:
function select_balance($uid){
    global 
$data;
    if(
$uid<0){
        
$isql=
            
"SELECT SUM(`fees`) AS `summ`".
            
" FROM `{$data['DbPrefix']}transactions`".
            
" WHERE (`status`=1 OR `status`=6) LIMIT 1";
        
        
$retirosLqdo=get_transactions_summ('`type` =2 AND `status` =1');
        
$retirosLqdo=$retirosLqdo['summ'];
        }
    else{
        
$isql=
            
"SELECT SUM(`amount`-`fees`) AS `summ`".
            
" FROM `{$data['DbPrefix']}transactions`".
            
" WHERE `receiver`={$uid} AND (`status`=1 OR `status`=6) LIMIT 1"
        
;
    
        
$isql2=
            
"SELECT SUM(`amount`) AS `summ`".
            
" FROM `{$data['DbPrefix']}transactions`".
            
" WHERE `sender`={$uid} AND (`status`=0) LIMIT 1"
        
;    
    }
    
$outgoing=db_rows(
        
"SELECT SUM(`amount`) AS `summ`".
        
" FROM `{$data['DbPrefix']}transactions`".
        
" WHERE `sender`={$uid} AND (`status`=1 OR `status`=6) LIMIT 1"
    
);
    
$pending_out_unreg=db_rows(
        
"SELECT SUM(`amount`) AS `summ`".
        
" FROM `{$data['DbPrefix']}temp_pays`".
        
" WHERE `sender`={$uid} AND (`status`=0) LIMIT 1"
    
);
    
$incoming=db_rows($isql); 
    
    
$outgoing=(double)$outgoing[0]['summ']; 
    
    
$outgoing2=$isql2?db_rows($isql2):0;
    
    
$pending_out_unreg=(double)$pending_out_unreg[0]['summ']; 
    
    
    
    
$outgoing=$outgoing+$pending_out_unreg;
    
$outgoing2=(double)$outgoing2[0]['summ'];
    
    
$incoming=(double)$incoming[0]['summ'];
    
$incoming+=$retirosLqdo?$retirosLqdo:0;
    
    return 
$incoming-($outgoing+$outgoing2);

ahora como pueden observar hay un double por el final del script, pero ojo quiero decirles que ya probe sacandolo, y de igual manera no funciona la condicional.


Código PHP:
$variable1=select_balance($row['payerid']) //---->Este obtiene un valor de 29.90
$variable2=$cantidad1*$cantidad2 //------>El cual es la multiplicacion de 29.90*1 que seria 29.90 
bueno con estos datos, espero algun iluminado por ahi que de con la solución
__________________
Album Fotos
Blog MisApuntes
  #8 (permalink)  
Antiguo 06/09/2007, 07:40
Avatar de mauled  
Fecha de Ingreso: marzo-2005
Ubicación: Cd. de México.
Mensajes: 3.001
Antigüedad: 19 años, 1 mes
Puntos: 33
De acuerdo Re: Duda, como solucionar

Prueba casteando las variables, es decir:


Código PHP:
if( (float) $variable1 >= (float)$variable2){ 

echo 
"pude acceder"

Saludillos.
  #9 (permalink)  
Antiguo 06/09/2007, 08:36
Avatar de laaccaal  
Fecha de Ingreso: julio-2003
Ubicación: Murcia
Mensajes: 147
Antigüedad: 20 años, 9 meses
Puntos: 1
Re: Duda, como solucionar

pues na de naa

No se que puede ser.

Ya lo hice de n formas posibles lo raro es que si le sumo a la $variable1 un valor de 0.01 esto si funciona, pero cuando los valores son iguales no se deja ni por san lucas tadeo
__________________
Album Fotos
Blog MisApuntes
  #10 (permalink)  
Antiguo 06/09/2007, 08:42
Avatar de jerkan  
Fecha de Ingreso: septiembre-2005
Mensajes: 1.607
Antigüedad: 18 años, 7 meses
Puntos: 19
Re: Duda, como solucionar

Asegurate que no tengas espacios en blanco ni delante ni detrás de las variables con la función trim.
  #11 (permalink)  
Antiguo 06/09/2007, 08:43
Avatar de mauled  
Fecha de Ingreso: marzo-2005
Ubicación: Cd. de México.
Mensajes: 3.001
Antigüedad: 19 años, 1 mes
Puntos: 33
De acuerdo Re: Duda, como solucionar

mmm que raro esta tu problema ... yo ya hize la prueba accediendo a mi bd y no tuve ningun problema.... no estaras redeclarando alguna de tus variables antes de hacer la comparación?

Saludillos.
  #12 (permalink)  
Antiguo 06/09/2007, 08:54
Avatar de laaccaal  
Fecha de Ingreso: julio-2003
Ubicación: Murcia
Mensajes: 147
Antigüedad: 20 años, 9 meses
Puntos: 1
Re: Duda, como solucionar

no para nada, al verlo con var_dump este me retorna lo siguiente:

variable1 -->float(29.95)
variable2 -->float(29.95)

que como veraz ambos son iguales.
Tambien pense que era por el double que le puse en la funcion(script de arriba) , pero el var_dump lo pongo un proceso antes de la condicional.
__________________
Album Fotos
Blog MisApuntes
  #13 (permalink)  
Antiguo 06/09/2007, 09:49
Avatar de laaccaal  
Fecha de Ingreso: julio-2003
Ubicación: Murcia
Mensajes: 147
Antigüedad: 20 años, 9 meses
Puntos: 1
Exclamación Re: Duda, como solucionar

Bueno rascando, rascando, acabo de dar con una solucion.

Pero no se si será del todo fiable, pregunta para el foro .

Podria ser fiable esta solucion ?

ya que como les dije que en mi scripts dos valores iguales y del mismo tipo no pasan por una condicional

la solucion:

Código PHP:

$balancUsuario
=(float)print_r(select_balance($row['payerid']),true); 
en donde el valor que retorna la funcion se lo convierte en string y a la vez en float.

Mi Script final seria :

Código PHP:
$variable1=select_balance($row['payerid']); // resultado var_dump --> float(29.90)
$variable2=29.90*1// resultado var_dump --> float(29.90) 

/* NO FUNCIONA SI HAGO LA SIGUIENTE COMPARACION
MOTIVO DESCONOCIDO

if( $variable1 >= $variable2){

echo "pude acceder";
}

*/

#### LO SIGUIENTE SI FUNCINA ####
## si convierto variable en string y luego en float

$variable1=(float)print_r(select_balance($row['payerid']),true);
$variable2=29.90*1;

if( 
$variable1 >= $variable2){

echo 
"pude acceder"// DE ESTA MANERA SI FUNCIONA

Hice la prueba y me funciona, pero el caso es que repercuciones me podria traer esto ???


Dejo el tema sobre el tapete


Nota: Alguien mas estuvo en esta situacion
__________________
Album Fotos
Blog MisApuntes
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:51.