переключение случая php с помощью радио кнопок и ajax - PullRequest
0 голосов
/ 01 июня 2018

Я пытаюсь создать калькулятор, который рассчитывает выплаты по социальному обеспечению в зависимости от дохода и жизненной ситуации / иждивенцев и т. Д. Мой 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;

}

?>

1 Ответ

0 голосов
/ 01 июня 2018

Вам необходимо отправить оба значения одновременно.Когда вы отправляете доход, переменная $ сценария не устанавливается, так как параметр «вычисления» не отправляется.Таким образом, сценарий $, вероятно, заканчивается нулевым значением.В PHP значение false и null может быть равно 0.

...