PHP:在同一页面上显示计算结果后,如何将输入值设置为空字符串?

时间:2019-02-02 07:41:28

标签: php string forms

在此感谢您可能提供的任何见解。我是本周刚开始使用PHP的新手。

我有两页的index.php和result.php

我们为了显示相同的页内的计算的结果复制从result.php PHP部分。

计算工作正常,但是在表格下方显示计算结果之后,我无法将输入值设置为空字符串。

    Index.php
<?php 
     //set default value of variables for initial page load this portion was
     //previously set within the index.php
  if (!isset($investment)) { $investment = ''; } 
  if (!isset($interest_rate)) { $interest_rate = ''; } 
  if (!isset($years)) { $years = ''; } 
  
//Copied this code from the result.php
    $investment = filter_input(INPUT_POST, 'investment',
        FILTER_VALIDATE_FLOAT);
    $interest_rate = filter_input(INPUT_POST, 'interest_rate',
        FILTER_VALIDATE_FLOAT);
    $years = filter_input(INPUT_POST, 'years',
        FILTER_VALIDATE_INT);

    // validate investment
    if ($investment === FALSE ) {
        $error_message = 'Investment must be a valid number.'; 
    } else if ( $investment <= 0 ) {
        $error_message = 'Investment must be greater than zero.'; 
    // validate interest rate
    } else if ( $interest_rate === FALSE )  {
        $error_message = 'Interest rate must be a valid number.'; 
    } else if ( $interest_rate <= 0) {
        $error_message = 'Interest rate must be greater than zero .';
    } else if ( $interest_rate > 15 ) {
        $error_message = 'Interest rate must be less than or equal to 15.';
    // validate years
    } else if ( $years === FALSE ) {
        $error_message = 'Years must be a valid whole number.';
    } else if ( $years <= 0 ) {
        $error_message = 'Years must be greater than zero.';
    } else if ( $years > 30 ) {
        $error_message = 'Years must be less than 31.';
    // set error message to empty string if no invalid entries
    } else {
        $error_message = ''; 
    }

    // calculate the future value 
    
    
   
    $future_value = $investment;
    for ($i = 1; $i <= $years; $i++) {
        $future_value += $future_value * $interest_rate *.01;
    }

   

    // apply currency and percent formatting
    $investment_f = '$'.number_format($investment, 2);
    $yearly_rate_f = $interest_rate.'%';
    $future_value_f = '$'.number_format($future_value, 2);

//End of copied from the result.php copy
   
    
  
?> 
<!DOCTYPE html>
<html>
<head>
    <title>Future Value Calculator</title>
    <link rel="stylesheet" type="text/css" href="main.css">
</head>

<body>

    <main>
    <h1>Future Value Calculator</h1>
    <?php if (!empty($error_message)) { ?>
        <p class="error"><?php echo htmlspecialchars($error_message); ?></p>
    <?php } ?>
    <form id="myform" action="<?php $_SERVER['PHP_SELF'];?>"  method="post">

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

            <label>Yearly Interest Rate:</label>
            <input type="text" name="interest_rate"
                   value="<?php echo htmlspecialchars($interest_rate); ?>">
            <br>

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

        <div id="buttons">
            <label>&nbsp;</label>
            <input type="submit" value="Calculate"><br>
        </div>
    </form>
    
        
<!--copied from the result.php-->
        <label>Investment Amount:</label>
        <span><?php echo htmlspecialchars($investment_f); ?></span><br />

        <label>Yearly Interest Rate:</label>
        <span><?php echo htmlspecialchars($yearly_rate_f); ?></span><br />

        <label>Number of Years:</label>
        <span><?php echo htmlspecialchars($years); ?></span><br />

        <label>Future Value:</label>
        <span><?php echo htmlspecialchars($future_value_f); ?></span><br />
        
        <p>This calculation was done on <?php echo date('m/d/Y'); ?>.</p>
    
    </main>
</body>
</html>

如果任何人都可以在正确的方向指向我,我将非常感激。

0 个答案:

没有答案