Ver Mensaje Individual
  #6 (permalink)  
Antiguo 18/07/2014, 04:58
Avatar de rodrypaladin
rodrypaladin
Moderador
 
Fecha de Ingreso: abril-2010
Ubicación: Madrid
Mensajes: 2.127
Antigüedad: 14 años, 7 meses
Puntos: 468
Respuesta: Error simple en condicional

No lo entiendo... recoge bien los datos según parece, Lo voy a poner por partes a ver si se encuentra más fácilemente el problema.

Código PHP:
Ver original
  1. $altura = $_POST['altura'];
  2. $peso = $_POST['peso'];

Damos el valor de $edad_restada de 0. Pasamos la altura a metros y redondeamos a un decimal. Aplicamos la formula de indice masa muscular. altura en metros * altura en metros / peso.

Código PHP:
Ver original
  1. $edad_restada = 0;
  2. $altura_en_metros = $altura / 100;
  3. $imc = $altura_en_metros * $altura_en_metros;
  4. $imc_final = round($peso / $imc,1);

Comparamos los datos de $imc_final y damos el valor a $estado_imc

Código PHP:
Ver original
  1. if($imc_final < 18) {
  2.     $estado_imc = 1;
  3. } elseif($imc_final >= 18 and $imc_final < 24.9) {
  4.     $estado_imc = 2;
  5. } elseif($imc_final >= 25 and $imc_final < 26.9) {
  6.     $estado_imc = 3;
  7. } elseif($imc_final >= 27 and $imc_final < 29.9) {
  8.     $estado_imc = 4;
  9. } elseif($imc_final >= 30 and $imc_final < 39.9) {
  10.     $estado_imc= 5;
  11. } elseif($imc_final > 40) {
  12.     $estado_imc = 6;
  13. }

Si realizo el formulario y lo envio realizo una comprobación para que me imprima el indice de masa muscular y el $estado_imc para ver que todo vaya bien.

Código PHP:
Ver original
  1. echo "Altura: " . $altura . "<br>";
  2. echo "Altura en Metros: " . $altura_en_metros . "<br>";
  3. echo "IMC Final: " . $imc_final . "<br>";
  4. echo "Estado IMC: " . $estado_imc . "<br>";

Muestra lo siguiente:

Cita:
Altura: 153
Altura en Metros: 1.53
IMC Final: 38.4
Estado IMC: 5
Por lo que parece que si que realiza las comprobaciones anteriores correctamente.

Creamos las condiciones dependiendo del $estado_imc que tenemos, el cual hemos visto al imprimirlo que si que lo calcula correctamente.

Código PHP:
Ver original
  1. if($estado_imc == 1) {
  2.     $edad_restada = $edad_restada + 5;
  3. } elseif($estado_imc == 3) {
  4.     $edad_restada = $edad_restada + 5;
  5. } elseif($estado_imc == 4) {
  6.     $edad_restada = $edad_restada + 7;
  7. } elseif($estado_imc == 5) {
  8.     $edad_restada = $edad_restada + 10;
  9. } elseif($estado_imc == 6) {
  10.     $edad_restada = $edad_restada + 15;
  11. }

Pero el resultado sigue siendo 0

EDITO::::

Tenía en algún apartado del código la declaración de la variable a $edad_restada = 0; tal vez por ello siempre me salía 0, aunque no le veo sentido ya que simplemente el código sumaba cantidad a esa cantidad. he eliminado esa declaración de la variable $edad_restada y ahora funciona correctamente.

¿ Quiere decir que si no tengo una variable declarada, es decir no existe, y luego sumo +10 a una variable que no existe, la crea con valor 0 y después le suma ese valor ?
__________________
No te olvides de dar +1 a quien te echa un cable ;)

Última edición por rodrypaladin; 18/07/2014 a las 05:05