Foros del Web » Programando para Internet » PHP »

Comparacion dos variables mysql_fetch_array

Estas en el tema de Comparacion dos variables mysql_fetch_array en el foro de PHP en Foros del Web. Hola, en el bucle de abajo debería imprimir en pantalla las facturas cuando fuese diferente (!=) el Importe total a la suma de la base ...
  #1 (permalink)  
Antiguo 07/09/2014, 08:50
 
Fecha de Ingreso: octubre-2011
Mensajes: 206
Antigüedad: 12 años, 6 meses
Puntos: 1
Comparacion dos variables mysql_fetch_array

Hola,

en el bucle de abajo debería imprimir en pantalla las facturas cuando fuese diferente (!=) el Importe total a la suma de la base mas el impuesto. El problema es que esta mostrando todas, las que son iguales y las que no. Siempre entra en el if...saben por qué??

Código PHP:
while($dato=mysql_fetch_array($result)){

if(
$dato['ImporteTotal']!=$dato['Base']+$dato['Impuesto']){

$suma=$dato['Base']+$dato['Impuesto'];

echo 
"<td>".$dato['Factura']."</td>";
echo 
"<td>".$dato['ImporteTotal']."</td>";
echo 
"<td>".$suma".</td>";
}

else{}


Gracias. Un saludo
  #2 (permalink)  
Antiguo 07/09/2014, 09:03
Avatar de juan_14nob  
Fecha de Ingreso: abril-2010
Mensajes: 552
Antigüedad: 14 años
Puntos: 6
Respuesta: Comparacion dos variables mysql_fetch_array

Pone lo siguiente antes del if
Código PHP:
Ver original
  1. print_r($dato);

Con eso podrás ver el valor del importe total y ver que sucede. Si no haz podido resolver, compartí el resultado para que podamos ayudarte

__________________
El castellano es un idioma hermoso, por favor no lo alteres, no lo modifiques, escribe correctamente.
  #3 (permalink)  
Antiguo 07/09/2014, 09:19
 
Fecha de Ingreso: octubre-2011
Mensajes: 206
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: Comparacion dos variables mysql_fetch_array

Hola,

gracias por la contestacion. Al poner lo que indicas imprime un array con cada registro de la base de datos. Esta ok

Cuando imprimo el codigo de abajo se ve en la tabla registros en los que $suma es igual $dato['ImporteTotal'] , no entiendo que entren en el if.

Código PHP:
echo "<td>".$dato['ImporteTotal']."</td>";
echo 
"<td>".$suma".</td>"
Haciendo esto tambien entra...

Código PHP:
while($dato=mysql_fetch_array($result)){

$suma=$dato['Base']+$dato['Impuesto'];

if(
$dato['ImporteTotal']!=$suma){

$suma=$dato['Base']+$dato['Impuesto'];

echo 
"<td>".$dato['Factura']."</td>";
echo 
"<td>".$dato['ImporteTotal']."</td>";
echo 
"<td>".$suma".</td>";
}

else{}


Un saludo
  #4 (permalink)  
Antiguo 07/09/2014, 09:22
Avatar de juan_14nob  
Fecha de Ingreso: abril-2010
Mensajes: 552
Antigüedad: 14 años
Puntos: 6
Respuesta: Comparacion dos variables mysql_fetch_array

Entonces, cambia el print_r por :

Código PHP:
Ver original
  1. var_dump($dato);

y compartí el resultado. Puede que ingrese porque el tipo de dato sea diferente ya que "8" es distinto que 8


__________________
El castellano es un idioma hermoso, por favor no lo alteres, no lo modifiques, escribe correctamente.
  #5 (permalink)  
Antiguo 07/09/2014, 09:42
 
Fecha de Ingreso: octubre-2011
Mensajes: 206
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: Comparacion dos variables mysql_fetch_array

En un registro, en el campo ImporteTotal aparece esto:

["ImporteTotal"]=> string(5) "14.02" [41]

Los campos base e impuesto tambien son string. Tambien probe a usar !== pero sigue entrando.

He probado tambien a cambiarlo para que entre en el "else" (codigo de abajo) y sigue imprimiendo todo. Siempre imprime todo ¿??

Código PHP:
if($dato['ImporteTotal']!=$suma){
}
else{
$suma=$dato['Base']+$dato['Impuesto'];

echo 
"<td>".$dato['Factura']."</td>";
echo 
"<td>".$dato['ImporteTotal']."</td>";
echo 
"<td>".$suma".</td>";

  #6 (permalink)  
Antiguo 07/09/2014, 09:46
 
Fecha de Ingreso: octubre-2011
Mensajes: 206
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: Comparacion dos variables mysql_fetch_array

Por si ayuda, si hago el código de abajo solo me imprime la factura que tiene ImporteTotal 14.02.

Código PHP:

if($dato['ImporteTotal']==14.02){

echo 
"<td>".$dato['Factura']."</td>";
echo 
"<td>".$dato['ImporteTotal']."</td>";
echo 
"<td>".$suma".</td>";

  #7 (permalink)  
Antiguo 07/09/2014, 12:44
Avatar de SirZoX  
Fecha de Ingreso: mayo-2006
Ubicación: Valencia
Mensajes: 124
Antigüedad: 17 años, 11 meses
Puntos: 2
Respuesta: Comparacion dos variables mysql_fetch_array

Se me ocurre esto, que parece una tontería pero alguna vez me ha solucionado la papeleta..

if($dato['ImporteTotal']!= ( $dato['Base']+$dato['Impuesto'] )
  #8 (permalink)  
Antiguo 07/09/2014, 12:57
 
Fecha de Ingreso: octubre-2011
Mensajes: 206
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: Comparacion dos variables mysql_fetch_array

Nop..ya lo probé. Creo que es una tontería pero no lo veo, voy a volverme loco...he pasado los dos campos a variable y sigue entrando. Luego cuando imprime la tabla veo que $importe=$suma. Son campos numericos, con dos decimales. No sé si puede venir por aquí el problema...

Código PHP:
$importe=$dato['ImporteTotal'];
$suma=$dato['Base']+$dato['Impuesto'];

if(
$importe != $suma){

echo 
"<td>".$dato['Factura']."</td>";
echo 
"<td>".$importe."</td>";
echo 
"<td>".$suma".</td>";

  #9 (permalink)  
Antiguo 07/09/2014, 13:10
Avatar de SirZoX  
Fecha de Ingreso: mayo-2006
Ubicación: Valencia
Mensajes: 124
Antigüedad: 17 años, 11 meses
Puntos: 2
Respuesta: Comparacion dos variables mysql_fetch_array

Mmhh... según decias, los valores en la bbdd son texto no? Porqué no lo defines como datos numéricos? o bien conviertes los valores "texto" que te llegan de la bd a valores float de php para que puedas hacer operaciones entre ellos?
  #10 (permalink)  
Antiguo 07/09/2014, 13:38
 
Fecha de Ingreso: octubre-2011
Mensajes: 206
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: Comparacion dos variables mysql_fetch_array

En la base de datos estan definidos como float, es cieto que cuando hice lo que me dijo juan_14nob - var_dump($dato); aparece como string...supongo que al ejecutar while($dato=mysql_fetch_array($result)) los campos pasan a ser texto

Etiquetas: comparacion, sql, variables
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 08:51.