2015-05-29 57 views
-1

我有一個PHP表單用戶輸入他們的身高和體重,一旦他們點擊提交信息被重新提交到表單和bmi的調用應執行並顯示結果。我有點不確定如何用我的代碼做到這一點,我已經檢查了phpcodechecker.com找不到任何錯誤,但我沒有得到結果。所以我不確定這個計算是否真的發生了。任何關於如何計算用戶輸入信息的BMI的幫助將不勝感激。PHP不預成形

我需要太多使用forumal是

BMI =(以磅體重* 703)/(英寸高度)的平方 注:有12英寸到一英尺 所以,如果一個人體重150磅和爲6英尺高,則計算是 BMI =(150 * 703)/ 72 X 72(6英尺= 72英寸,然後平方)

代碼下面:

<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"> 
    <label for="weight">Enter your weight in pounds:</label><br> 
    <input id="weight" name="weight" type="text" value="<?php echo $weight; ?>" size="30"><br> 
    <label for="height">Enter your height in inches:</label><br> 
    <input id="height" name="height" type="text" value="<?php echo $height; ?>" size="30"><br> 
    <input type="submit" name="submit" value="Calculate"> 
    </form> 

<?php 
    } 
?> 
<?php 
$weight = ''; 
$height = ''; 

    if (isset($_POST['submit'])) { 
    $weight = $_POST['weight']; 
    $height = $_POST['height']; 
    $output_form = false; 

    if (empty($weight) && empty($height)) { 
     echo 'You forgot to enter your weight.<br />'; 
     $output_form = true; 
    } 

    if (empty($weight) && (!empty($height))) { 
     echo 'You forgot to enter your height.<br />'; 
     $output_form = true; 
    } 
    } 
    else { 
    $output_form = true; 
    } 

    if ((!empty($weight)) && (!empty($height))) { 
     $string = "(weight * 703)/height * height"; 
     eval($string); 
     echo($res); 
?> 
    <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"> 
    <label for="weight">Enter your weight in pounds:</label><br> 
    <input id="weight" name="weight" type="text" value="<?php echo $weight; ?>" size="30"><br> 
    <label for="height">Enter your height in inches:</label><br> 
    <input id="height" name="height" type="text" value="<?php echo $height; ?>" size="30"><br> 
    <input type="submit" name="submit" value="Calculate"> 
    </form> 

<?php 
    } 
?> 
+0

第一件事,爲什麼你做一個eval ???沒有理由對您正在進行的操作進行評估。 – Augwa

+0

在第一個表格塊之後,什麼是流浪的右花括號'}? – showdev

+0

我以爲我應該做一個評估。我還在學習php @Augwa – Nalani

回答

2

一些提示:

  • 避免在代碼中使用eval。這是緩慢的和不安全的。
  • 看來你有兩次相同的形式(重複的代碼)。另外,儘量避免這種情況。我改變你的代碼,這樣你就不必再重複它

更好的工作代碼可能是這樣的:

<?php 
$weight = ''; 
$height = ''; 
$output_form = true; 

if (isset($_POST['submit'])) { 

    $weight = $_POST['weight']; 
    $height = $_POST['height']; 

    if (empty($weight) && empty($height)) { //test for both 
     echo 'You forgot to enter your weight and height.<br>'; 
    }else if (empty($weight)) { 
     echo 'You forgot to enter your weight.<br />'; 
    }else if (empty($height)) { 
     echo 'You forgot to enter your height.<br />'; 
    }else{ //if none is empty, you can proceed with calc 
     $output_form = false; //everything ok, hide the form 
     $res = ($weight * 703)/($height * $height); 
     echo $res; 
    } 
} 

if($output_form) { ?> 

    <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"> 
     <label for="weight">Enter your weight in pounds:</label><br> 
     <input id="weight" name="weight" type="text" value="<?php echo $weight; ?>" size="30"><br> 
     <label for="height">Enter your height in inches:</label><br> 
     <input id="height" name="height" type="text" value="<?php echo $height; ?>" size="30"><br> 
     <input type="submit" name="submit" value="Calculate"> 
    </form> 

<?php } 
0

您是在右擊牛逼的軌道,只是如下:

if ((!empty($weight)) && (!empty($height))) { 
    $result = ($weight * 703)/$height * $height; 
    echo $result; 
    // ... 
2

這看起來不正確:

$string = "(weight * 703)/height * height"; 
    eval($string); 
    echo($res); 
  1. 沒有$res變量;
  2. 無需評估用戶輸入。這實際上是一個非常糟糕的主意,因爲它引入了巨大的安全風險。

你應該只計算你需要的價值和呼應了這一點:

echo ($weight * 703)/$height * $height; 

除此之外,您不使用$output_form可變的,但我想你剛纔沒有補充說還沒有。