I have an html form to get a number from the user for a calculation. The first number is given. The second is entered by the user. The result is posted to the same page. BUT the resulting answer is now the first number and again the second number is entered by the user. The first code works fine for the first calculation. But the next ones still use the given number, not the result. I believe I should use an if/else to test if the submit was entered. But the first answer isn't being passed on the next go round with $first=$total (I get undefined variable total).
Without the else statement:
<head>
<title>Calculate</title>
</head>
<body>
<?php
$first = 2;
if(isset($_POST['Calculate']))
{
$second = (!empty($_POST['second']) ? $_POST['second'] : null);
$total = $first+$second;
print "<h2>Results</h2>";
print "The total of the two numbers: $first + $second = $total <p>";
$first=$total;
}
?>
<h2>Calculate</h2>
<p><?php echo "First Number: $first"; ?></p>
<br>
<form action = "index.php" method = "POST">
Second Number: <input type = "text" name = "second"><br>
<input type = "submit" name = "Calculate"/>
</form>
</body>
</html>
With the else statement:
<head>
<title>Calculate</title>
</head>
<body>
<?php
if(isset($_POST['Calculate']))
{
$first=$total;
$second = (!empty($_POST['second']) ? $_POST['second'] : null);
$total = $first+$second;
print "<h2>Results</h2>";
print "The total of the two numbers: $first + $second = $total <p>";
}
else {
$first = 2;
$second = (!empty($_POST['second']) ? $_POST['second'] : null);
$total = $first+$second;
}
?>
<h2>Calculate</h2>
<p><?php echo "First Number: $first"; ?></p>
<br>
<form action = "index.php" method = "POST">
Second Number: <input type = "text" name = "second"><br>
<input type = "submit" name = "Calculate"/>
</form>
</body>
</html>
I changed the form to
<form action = "index.php" method = "POST">
<input type="hidden" name="first" value="$first" />
Second Number: <input type = "text" name = "second"><br>
<input type = "submit" name = "Calculate"/>
</form>
</body>
</html>
But got the same results.