2016-01-12 62 views
-1

它應該看起來像這樣:sample output。 即使我的輸入是正確的數字,它也只會說「價格必須是一個有效的數字」,沒有別的東西,我仍然不會計算。我不知道我在這裏做錯了什麼。我的PHP收銀員計算器程序不起作用

這裏是index.php文件

<?php 
     //set default value of variables for initial page load 
     if (!isset($description)) { $description = ''; } 
     if (!isset($unit_price)) { $unit_price = ''; } 
     if (!isset($quantity)) { $quantity = ''; } 
    ?> 
    <!DOCTYPE html> 
    <html> 
    <head> 
     <title>Assignment 1</title> 
     <link rel="stylesheet" type="text/css" href="YapAss1.css"> 
    </head> 

    <body> 
     <main> 
     <h1>Cashier</h1> 
     <?php if (!empty($error_message)) { ?> 
      <p class="error"><?php echo htmlspecialchars($error_message); ?>    </p> 
     <?php } ?> 
     <form action="checkout.php" method="post"> 

      <div id="data"> 
       <label>Description:</label> 
       <input type="text" name="investment" 
         value="<?php echo htmlspecialchars($description); ?>"> 
       <br> 

       <label>Unit Price:</label> 
       <input type="text" name="interest_rate" 
         value="<?php echo htmlspecialchars($unit_price); ?>"> 
       <br> 

       <label>Quantity:</label> 
       <input type="text" name="years" 
         value="<?php echo htmlspecialchars($quantity); ?>"> 
       <br> 
      </div> 

      <div id="buttons"> 
       <label>&nbsp;</label> 
       <input type="submit" value="Checkout Now"><br> 
      </div> 

     </form> 
     </main> 
    </body> 
    </html> 

checkout.php

<?php 
     // get the data from the form 
     $description = filter_input(INPUT_POST, 'description', 
      FILTER_VALIDATE_FLOAT); 
     $unit_price = filter_input(INPUT_POST, 'unit_price', 
      FILTER_VALIDATE_FLOAT); 
     $quantity = filter_input(INPUT_POST, 'quantity', 
      FILTER_VALIDATE_INT); 


     if ($unit_price === FALSE) { 
      $error_message = 'Price must be a valid number.'; 
     } else if ($unit_price <= 0) { 
      $error_message = 'Price must be a valid number.'; 

     // validate quantity 
     } else if ($quantity === FALSE) { 
      $error_message = 'Quantity must be a valid number.'; 
     } else if ($quantity <= 0) { 
      $error_message = 'Quantity must be a valid number.'; 
     } else { 
      $error_message = ''; 
     } 


     // if an error message exists, go to the index page 
     if ($error_message != '') { 
      include('index.php'); 
      exit(); 
     } 

     // calculate the future value 
     $sales_tax = .07; 
     $sub_total = $price * $quantity; 
     $total = $subtotal * $sales_tax; 



     // apply currency and percent formatting 

     $unit_price_f = '$'.number_format($unit_price, 2); 
     $quantity_f = '$'.number_format($quantity, 2); 
     $sub_total_f ='$'.number_format($sub_total, 2); 
     $sales_tax_f = $sales_tax.'%'; 
     $total_f ='$'.number_format($total, 2); 
    ?> 
    <!DOCTYPE html> 
    <html> 
    <head> 
     <title>Assignment 1</title> 
     <link rel="stylesheet" type="text/css" href="YapAss1.css"> 
    </head> 
    <body> 
     <main> 
      <h1>Checkout 12/27/2015</h1> 

      <label>Item Description:</label> 
      <span><?php echo $description; ?></span><br> 

      <label>Price:</label> 
      <span><?php echo $unit_price_f; ?></span><br> 

      <label>Quantity:</label> 
      <span><?php echo $quantity_f; ?></span><br> 

      <label>Sub Total:</label> 
      <span><?php echo $sub_total_f; ?></span><br> 

      <label>Sales Tax:</label> 
      <span><?php echo $sales_tax; ?></span><br> 

      <label>Total:</label> 
      <span><?php echo $total_f; ?></span><br> 
     </main> 
    </body> 
    </html> 
+1

您正在驗證的字段與您表單中的字段名稱無關:'years'!=='quantity'; 'interest_rate'!=='unit_price'; '投資'!=='描述' –

+0

聖潔的廢話。我審查了很多次,仍然忽略了這一點。非常感謝你 – agentmg123

回答

0

這裏是錯:這裏提交

$description = filter_input(INPUT_POST, 'description', 
      FILTER_VALIDATE_FLOAT); 
     $unit_price = filter_input(INPUT_POST, 'unit_price', 
      FILTER_VALIDATE_FLOAT); 
     $quantity = filter_input(INPUT_POST, 'quantity', 
      FILTER_VALIDATE_INT); 

您有不正確的輸入名稱。

新代碼

$description = filter_input(INPUT_POST, $_POST['investment'], 
      FILTER_VALIDATE_FLOAT); 
     $unit_price = filter_input(INPUT_POST, 'interest_rate', 
      FILTER_VALIDATE_FLOAT); 
     $quantity = filter_input(INPUT_POST, 'years', 
      FILTER_VALIDATE_INT); 

您還可以在你的代碼中的一些不確定的變量。你需要重新檢查你正在使用的所有變量。

0

在checkout.php你有if語句的網頁:

if ($unit_price === FALSE) 

所以要檢查對於布爾值而言,此值必須是整數。 我只是瘋狂地認爲你的目標是檢查這個變量是否設置。 通過改變if語句來調整這樣的:

if (!isset(($unit_price)) 

同樣會爲變量$量。 通過進行這種調整,您可以刪除index.php的前6行中的php。 Goodluck!