In: Computer Science
Enhance the Future Value application
Modify this application so it uses a persistent session to save the last values entered by the user for 2 weeks..
Index.php
--------------------------
<?php
//set default value of variables for initial
page load
if (!isset($investment)) { $investment =
'10000'; }
if (!isset($interest_rate)) { $interest_rate =
'5'; }
if (!isset($years)) { $years = '5'; }
?>
<!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 $error_message;
?></p>
<?php } // end if ?>
<form action="display_results.php"
method="post">
<div
id="data">
<label>Investment Amount:</label>
<select name="investment">
<?php for ($i = 10000; $i <= 50000; $i += 5000) : ?>
<option value="<?php echo $i; ?>">
<?php echo number_format($i); ?></option>
<?php endfor; ?>
</select><br>
<label>Yearly Interest Rate:</label>
<select name="interest_rate">
<?php for ($i = 4; $i <= 12; $i += 0.5) : ?>
<option value="<?php echo $i; ?>">
<?php echo number_format($i, 2); ?></option>
<?php endfor; ?>
</select><br>
<label>Number of Years:</label>
<input type="text" name="years"
value="<?php echo $years; ?>"/><br>
</div>
<p><input
type="checkbox" name="monthly" value="1" > Compound Interest
Monthly<br></p>
<div
id="buttons">
<label> </label>
<input type="submit" value="Calculate"/><br>
</div>
</form>
</main>
</body>
</html>
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);
$monthly =filter_input(INPUT_POST,
'monthly',
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 ( $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;
if($monthly) {
$months = 12 *
$years;
for ($i = 1; $i <=
$months; $i++) {
$future_value += $future_value * ($interest_rate/12) *.01;
}
} else {
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);
?>
<!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>Compound
Interest Calculated:</label>
<span><?php
echo ($monthly?'Monthly':'Yearly');
?></span><br>
</main>
</body>
</html>
/************************************************************
**************************** index.php*****************
*********************************************************************/
<?php
// start session to maintain continuity of process
session_start();
// Checking last entered value stored in cookie or not which is
stored in display_results.php file if yes then storing value in
veriable investment, intrest_rate, years
if(isset($_COOKIE['investment']) &&
isset($_COOKIE['interest_rate']) &&
isset($_COOKIE['years']))
{
$investment = $_COOKIE['investment'];
$interest_rate = $_COOKIE['interest_rate'];
$years = $_COOKIE['years'];
}
//set default value of variables for initial page load
if (!isset($investment)) { $investment = '10000'; }
if (!isset($interest_rate)) { $interest_rate = '5'; }
if (!isset($years)) { $years = '5'; }
?>
<!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 $error_message;
?></p>
<?php } // end if ?>
<form action="display_results.php" method="post">
<div id="data">
<label>Investment Amount:</label>
<select name="investment">
<?php for ($i = 10000; $i <= 50000; $i += 5000) : ?>
<!--here just making selectable of that value which is stored in
the cookie-->
<?php if($investment==$i)
{
echo'<option value="'. $i.'" selected>';
}else{
echo'<option value="'. $i.'">';
}
?>
<?php echo number_format($i); ?></option>
<?php endfor; ?>
</select><br>
<label>Yearly Interest Rate:</label>
<select name="interest_rate">
<?php for ($i = 4; $i <= 12; $i += 0.5) : ?>
<!--here just making selectable of that value which is stored in
the cookie-->
<?php if($interest_rate==$i)
{
echo'<option value="'. $i.'" selected>';
}else{
echo'<option value="'. $i.'">';
}
?>
<?php echo number_format($i, 2); ?></option>
<?php endfor; ?>
</select><br>
<label>Number of Years:</label>
<input type="text" name="years"
value="<?php echo $years; ?>"/><br>
</div>
<p><input type="checkbox" name="monthly" value="1" >
Compound Interest Monthly<br></p>
<div id="buttons">
<label> </label>
<input type="submit" value="Calculate"/><br>
</div>
</form>
</main>
</body>
</html>
/************************************************************
**************************** display_results.php*****************
*********************************************************************/
<?php
// start session to maintain continuity of process
session_start();
// 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);
$monthly =filter_input(INPUT_POST, 'monthly',
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 ( $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 = '';
/***********************************************************
* ************** storing last entered value in cookie ****
* ************** so that it will save for 2 weeks ****
* *********************************************************/
setcookie('investment',$investment,time()+(86400*14),'/');
setcookie('interest_rate',$interest_rate,time()+(86400*14),'/');
setcookie('years',$years,time()+(86400*14),'/');
}
// if an error message exists, go to the index page
if ($error_message != '') {
include('index.php');
exit();
}
// calculate the future value
$future_value = $investment;
if($monthly) {
$months = 12 * $years;
for ($i = 1; $i <= $months; $i++) {
$future_value += $future_value * ($interest_rate/12) *.01;
}
} else {
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);
?>
<!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>Compound Interest Calculated:</label>
<span><?php echo ($monthly?'Monthly':'Yearly');
?></span><br>
</main>
</body>
</html>