Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Instructions - If a user enters an interest rate value of less than 1%, the user

ID: 3906494 • Letter: I

Question

Instructions -

If a user enters an interest rate value of less than 1%, the user will see an error saying: “Interest rate must be greater than 1%.”

display_results.php -

<?php
// get the data from the form
$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.';
// validate years

} 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 = '';
}

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

// calculate the future value
$future_value = $investment;
for ($i = 1; $i <= $years; $i++) {
$future_value =
$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);

$now = new DateTime();

?>
<!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>

<label>Investment Amount:</label>
<span><?php echo $investment_f; ?></span><br>

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

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

<label>Future Value:</label>
<span><?php echo $future_value_f; ?></span><br>

<label>This calculation was done on:</label>
<span><?php echo $now=>format('m-d-Y'); ?></span><br>
</main>
</body>
</html>

index.php -

<?php
//set default value of variables for initial page load
if (!isset($investment)) { $investment = ''; }
if (!isset($interest_rate)) { $interest_rate = ''; }
if (!isset($years)) { $years = ''; }
?>
<!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 action="display_results.php" 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>
</main>
</body>
</html>

Future Value Calculator Revised Interest rate must be greater than one percent. Investment Amount: 1000 Yearly Interest Rate 0.9 Number of Years: 20 Calculate

Explanation / Answer

/* There were only few changes which has been updated. Below code will work as per your requirement.

*/

// display_results.php - few changes made and commented on particular line

/*

new float variable defined $test = 0.0; at the begining

same is used when it is comparted with interest_rate < 0 in if condition.

there was an equal sign for now object now=>format it has been changed to now->format

instead of now->format("m-d-Y") only now->format("Y") is sufficient to print year only.

*/

<?php
$test = 0.0;
// get the data from the form
$investment = filter_input(INPUT_POST, 'investment', FILTER_VALIDATE_FLOAT);
echo $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.';

//need to typecast the variable to float and check for validation. by default validation is done on integer so it is not validating.

$test = float($interest_rate);
} else if ( $test <= 0 ) {
$error_message = 'Interest rate must be greater than zero.'. $test;

// validate years
} 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 = '';
}

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

// calculate the future value
$future_value = $investment;
for ($i = 1; $i <= $years; $i++) {
$future_value =
$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);

$now = new DateTime();

?>
<!DOCTYPE html>
<html>
<head>
<title>Future Value Calculator</title>
<link rel="stylesheet" type="text/css" href="main.css">
<style>


</style>
</head>
<body>
<main>
<h1>Future Value Calculator</h1>

<label>Investment Amount:</label>
<span><?php echo $investment_f; ?></span><br>

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

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

<label>Future Value:</label>
<span><?php echo $future_value_f; ?></span><br>

<label>This calculation was done on:</label>
<!-- Your code is correct you need to use - instead of = for object and in format only "Y".
<span><?php echo $now->format('Y'); ?></span><br>
</main>
</body>
</html>

//index.php - No change made in this file.

<?php
//set default value of variables for initial page load
if (!isset($investment)) { $investment = ''; }
if (!isset($interest_rate)) { $interest_rate = ''; }
if (!isset($years)) { $years = ''; }
?>
<!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 action="display_results.php" 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>
</main>
</body>
</html>