Я пытаюсь создать калькулятор, который рассчитывает выплаты по социальному обеспечению в зависимости от дохода и жизненной ситуации / иждивенцев и т. Д. Мой php-файл содержит методы расчета для каждой ситуации как отдельного «случая». Моя переменная дохода была отправлена в php-файл через Ajax из формы HTML, а также проверены переключатели.
У меня проблема в том, что элементы работают индивидуально, а не вместе. Например, нажатие переключателя возвращает текст, указывающий, что регистр был переключен, однако при отправке дохода он всегда возвращается к первому случаю (случай 0) и дает мне некоторые неопределенные переменные ошибки, хотя на самом деле он вычисляется. Я провел немало поисков, но не уверен в своем следующем шаге. Любая помощь приветствуется!
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;
}
?>
Вам необходимо отправить оба значения одновременно. Когда вы отправляете доход, ваша переменная $ сценария не устанавливается, так как параметр «вычисления» не отправляется. Таким образом, сценарий $, вероятно, заканчивается нулевым значением. В PHP false и null могут принимать значение 0.
Других решений пока нет …