I'm attempting to build a calculator which calculates welfare payments based on income and living situation/dependants etc. My php file contains the calculation methods for each situation as a different 'case'. I have my income variable being posted to the php file via Ajax from the HTML form and radio buttons checked being passed also.
The problem I'm having is that the elements work individually but not together. For example, clicking a radio button returns text indicating that the case has been switched, however when submitting the income, it always reverts back to the first case (case 0) and gived me some undefined variable errors, although it does actually calculate. I've done a fair bit of searching but I'm not sure of my next step. Any help appreciated!
HTML
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
</head>
<body>
<label>Please select from below which best reflects your situation</label><br />
<br />
<input class="radio" type="radio" name="calculate" value="0">You are single, under 18 and living at home<br />
<input class="radio" type="radio" name="calculate" value="1">You are single, over 18, living at home<br />
<input class="radio" type="radio" name="calculate" value="2">You are single or in a couple, no children and living away from home<br />
<input class="radio" type="radio" name="calculate" value="3">You are in a couple, with children<br />
<input class="radio" type="radio" name="calculate" value="4">You are single, with children<br />
<br />
<label>Enter a your fortnightly income: <input type="text" id="num"></label>
<button type="button">Show result</button>
<div id="result"></div>
</html>
<script>
$(document).ready(function(){
$('input[type="radio"]').click(function(){
var calculate = $(this).val();
$.ajax({
url:"austudy.php",
method:"POST",
data: {calculate:calculate},
success:function(data){
$("#result").html(data);
}
})
})
})
</script>
<script>
$(document).ready(function(){
$("button").click(function(){
// Get value from input element on the page
var numValue = $("#num").val();
// Send the input data to the server using get
$.get("austudy.php", {number: numValue} , function(data){
// Display the returned data in browser
$("#result").html(data);
});
});
});
</script>
PHP
<?php
$income = ($_GET["number"]);
$maxpayment = 445.80;
$scenario = ($_POST["calculate"]);
switch ($scenario) {
case 0:
//single, under 18, living at home, max payment = 445.80
if ($income < 437.00)
{
echo "case 0 selected";
echo "You will receive max payment";
}
elseif ($income >= 864.84)
{
echo "case 0 selected";
echo "Your payment is reduced to Zero";
}
else if ($income > 437.00 && $income < 445.51)
{
$payment = $maxpayment - (($maxpayment - $income) * 0.5);
echo "case 0 selected";
echo "your payment will be ";
echo $payment;
}
else if ($income > 445.50 && $income < 524.00)
{
$payment = $maxpayment - (($income - $maxpayment) * 0.5);
echo "case 0 selected";
echo "your payment will be ";
echo $payment;
}
else if ($income > 524.00 && $income <= 864.83)
{
$payment = $maxpayment - ((($income - $maxpayment) * 0.6) - 43.50);
echo "case 0 selected";
echo "your payment will be ";
echo $payment;
}
break;
case 1:
//single, over 18, living at home, max payment = 445.50
if ($income < 437.00)
{
echo "case 1 selected";
echo "You will receive max payment";
}
elseif ($income >= 864.84 )
{
echo "case 1 selected";
echo "Your payment is reduced to Zero";
}
else if ($income > 437.00&& $income < 445.51)
{
$payment = $maxpayment - (($maxpayment - $income) * 0.5);
echo "case 1 selected";
echo "your payment will be ";
echo $payment;
}
else if ($income > 445.50 && $income < 524.00)
{
$payment = $maxpayment - (($income - $maxpayment) * 0.5);
echo "case 1 selected";
echo "your payment will be ";
echo $payment;
}
else if ($income > 524.00 && $income <= 948.49)
{
$payment = $maxpayment - ((($income - $maxpayment) * 0.6) - 43.50);
echo "case 1 selected";
echo "your payment will be ";
echo $payment;
}
break;
case 2:
//single or in a couple, no children, living away from home, max payment = 445.50
if ($income < 437.00)
{
echo "case 2 selected";
echo "You will receive max payment";
}
elseif ($income >= 1206.17)
{
echo "case 2 selected";
echo "Your payment is reduced to Zero";
}
else if ($income > 437.00 && $income < 445.51)
{
$payment = $maxpayment - (($maxpayment - $income) * 0.5);
echo "case 2 selected";
echo "your payment will be ";
echo $payment;
}
else if ($income > 445.50 && $income < 524.00)
{
$payment = $maxpayment - (($income - $maxpayment) * 0.5);
echo "case 2 selected";
echo "your payment will be ";
echo $payment;
}
else if ($income > 524.00 && $income <= 1206.16)
{
$payment = $maxpayment - ((($income - $maxpayment) * 0.6) - 43.50);
echo "case 2 selected";
echo "your payment will be ";
echo $payment;
}
break;
case 3:
//in a couple, with children, max payment 489.60
if ($income < 437.00)
{
echo "case 3 selected";
echo "You will receive max payment";
}
elseif ($income >= 1280.34)
{
echo "case 3 selected";
echo "Your payment is reduced to Zero";
}
else if ($income > 437.00 && $income < 445.51)
{
$payment = $maxpayment - (($maxpayment - $income) * 0.5);
echo "case 3 selected";
echo "your payment will be ";
echo $payment;
}
else if ($income > 445.50 && $income < 524.00)
{
$payment = $maxpayment - (($income - $maxpayment) * 0.5);
echo "case 3 selected";
echo "your payment will be ";
echo $payment;
}
else if ($income > 524.00 && $income <= 1280.33)
{
$payment = $maxpayment - ((($income - $maxpayment) * 0.6) - 43.50);
echo "case 3 selected";
echo "your payment will be ";
echo $payment;
}
break;
case 4:
//single, with children, max payment 584.20
if ($income < 437.00)
{
echo "case 4 selected";
echo "You will receive max payment";
}
elseif ($income >= 1440.50)
{
echo "case 4 selected";
echo "Your payment is reduced to Zero";
}
else if ($income > 437.00 && $income < 445.51)
{
$payment = $maxpayment - (($maxpayment - $income) * 0.5);
echo "case 4 selected";
echo "your payment will be ";
echo $payment;
}
else if ($income > 445.50 && $income < 524.00)
{
$payment = $maxpayment - (($income - $maxpayment) * 0.5);
echo "case 4 selected";
echo "your payment will be ";
echo $payment;
}
else if ($income > 524.00 && $income <= 1440.49)
{
$payment = $maxpayment - ((($income - $maxpayment) * 0.6) - 43.50);
echo "case 4 selected";
echo "your payment will be ";
echo $payment;
}
break;
}
?>
You need to send both values at the same time. When you send the income your $scenario variable is not being set because no 'calculate' parameter is sent. So $scenario is probably ending up with a null value. In PHP false and null can evaluate to 0.