Как рассчитать значение флажка?

У меня есть таблица, содержащая следующую структуру данных:

ИДЕНТИФИКАТОР payroll_cat_name payroll_cat_code категория_тип количество 1 резервный фонд ПФ дедукция 1000 2 Базовая оплата До нашей эры заработок 35000 3 Путешествие ТА заработок 6500 4 Домашнее пособие ХМ заработок 12000 5 налог Техас дедукция 500

Я получаю все эти данные с помощью этого кода ниже:

<?php
include "../db.php";
$select_payroll_category = "SELECT * from payroll_category";
$employee_payroll_result = mysqli_query($con,$select_payroll_category);
?>
<table>
    <thead style = "color: #222426;">
        <tr>
            <th>
                <div class = "form-check">
                    <input type = "checkbox" class = "form-check-input checkAll">
                    <label class = "form-check-label">ID</label>
                </div>
            </th>
            <th>Category name</th>
            <th>Category code</th>
            <th>Category Type</th>
            <th>Category Amount</th>
            <th>Action</th>
        </tr>
    </thead>
    <tbody>
        <?php
        while ($row = mysqli_fetch_array($employee_payroll_result)) {
            echo "<tr style='color:#222426;'>
                    <td>
                    <div class='form-check'>
                    <input type='checkbox' name='payroll_group' value = ".$row["amount"]."class='form-check-input'>
                    <label class='form-check-label' style='color:#fff;'>".$row["payroll_cat_id"]."</label>
                    </div>
                    </td>
                    <td>".$row["payroll_cat_name"]."</td>
                    <td>".$row["payroll_cat_code"]."</td>
                    <td>".$row["category_type"]."</td>
                    <td>".$row["amount"]."</td>
                    
                  </tr>";
                    }
                    ?>
                        
                    </tbody>
                </table>
                <button id = "button">save</button>
                <p id = "result"></p>

Теперь при нажатии button я хочу рассчитать сумму на основе category_type,

Если категория earning, то она добавит сумму,

А если категория dedution то вычитает сумму,

Используя jquery, я хочу выполнить это

Ниже приведен мой код jquery, который я пробовал,

<script type = "text/javascript">
    $(document).ready(function(){
        $("#button").click(function(){
            var favorite = [];
            $.each($("input[name='payroll_group']:checked"), function(){
                favorite.push($(this).val());
            });
            var total = 
            console.info("My favourite sports are: " + favorite);
            $('#result').html(favorite);
        }); 
    });
</script>

Используя этот код, я получаю 1000,35000,6500 значение суммы, которое я отметил флажком

Проблема в том, что у вас есть правильные номера, и теперь вы не знаете, что с ними делать, так как вы потеряли информацию earning / deduction?

ImClarky 21.12.2020 11:21

Да, я получил числа (сумму), и теперь мне нужно рассчитать сумму, которую я отметил в чекбоксе в соответствии с ее типом (заработок / вычет), если это earning, она добавит сумму, а если это deduction , она вычтет количество

Deepak pal 21.12.2020 11:54
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout.
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout.
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для...
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
0
2
101
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Попробуй это

<body>
    <table>
        <tbody>
            <tr>
                <td><div><input type = "checkbox"></div></td>
                <td>...</td>
                <td>...</td>
                <td>deducing</td>
                <td>1000</td>
            </tr>
            <tr>
                <td><div><input type = "checkbox"></div></td>
                <td>...</td>
                <td>...</td>
                <td>earning</td>
                <td>6000</td>
            </tr>
            <tr>
                <td><div><input type = "checkbox"></div></td>
                <td>...</td>
                <td>...</td>
                <td>earning</td>
                <td>3000</td>
            </tr>
            <tr>
                <td><div><input type = "checkbox"></div></td>
                <td>...</td>
                <td>...</td>
                <td>earning</td>
                <td>1200</td>
            </tr>
            <tr>
                <td><div><input type = "checkbox"></div></td>
                <td>...</td>
                <td>...</td>
                <td>deducing</td>
                <td>1000</td>
            </tr>
        </tbody>
    </table>
    <button type = "button" id = "button">Yo</button>
    <script src = "https://code.jquery.com/jquery-3.5.1.min.js"></script>
    <script>
        $(function() {
            $("#button").click(function() {
                let total = 0;
                $("tbody:first tr").each(function() {
                    if ($(this).children("td").first().children("div").children("input").is(":checked")) {
                        if ("deducing" == $(this).children("td").eq(3).text()) total = total - parseInt($(this).children("td").eq(4).text());
                        else if ("earning" == $(this).children("td").eq(3).text()) total = total + parseInt($(this).children("td").eq(4).text());
                    }
                });
                alert(total);
            });
        });
    </script>
</body>

Спасибо за ваш ответ, я пробовал этот код, но все равно сталкиваюсь с этой ошибкой Uncaught TypeError: $(...).find(...)[3].text is not a function at HTMLTableRowElement.<anonymous> (new.php:123) at Function.each (jquery-3.3.1.min.js:2) at w.fn.init.each (jquery-3.3.1.min.js:2) at HTMLButtonElement.<anonymous> (new.php:122) at HTMLButtonElement.dispatch (jquery-3.3.1.min.js:2) at HTMLButtonElement.y.handle (jquery-3.3.1.min.js:2)

Deepak pal 21.12.2020 11:45

Я заменил [3] на eq(3), после чего появляется ошибка ```Uncaught SyntaxError: Unexpectedidentifier```

Deepak pal 21.12.2020 12:24

Я заменил [3] на eq(3), после чего появляется ошибка ```Uncaught SyntaxError: Unexpectedidentifier```

Deepak pal 21.12.2020 12:26

Хорошо, но я хочу, чтобы он вычислял только ту сумму, которую я выбрал, например:<tr><td><input type='checkbox' name='payroll_group' value = "1000" class='form-check-input'></td> <td>deducing</td> <td>1000</td> </tr> <tr> <td><input type='checkbox' name='payroll_group' value = "6000" class='form-check-input'></td> <td>earning</td> <td>6000</td> </tr>

Deepak pal 22.12.2020 09:57

Так что, если есть вычет, он будет вычитаться, а если «зарабатывать», он будет добавляться к выбранному мной варианту.

Deepak pal 22.12.2020 10:12

Давайте продолжим обсуждение в чате.

Deepak pal 22.12.2020 10:24

Если мой комментарий верен, и проблема здесь в том, что у вас есть правильные суммы, но вы потеряли «метаинформацию» о том, следует ли прибавлять или вычитать из общей суммы, то я думаю, что самым простым решением было бы сделать следующий:

Сначала измените значение флажка так, чтобы оно отражало действие, которое необходимо предпринять, т.е. если это deduction, то сделайте значение отрицательным. Таким образом, ваш input будет:

<input type='checkbox' name='payroll_group' value = " . ($row['category_type'] === 'deduction' ? $row["amount"] * -1 : $row["amount"]) . "class='form-check-input'>

Где ($row['category_type'] === 'deduction' ? $row["amount"] * -1 : $row["amount"]) проверит, является ли category_typededuction, затем умножит amount на -1, иначе сохранит текущее значение amount. Обратите внимание, что круглые скобки необходимы.

Затем в вашем текущем js вы должны получить [-1000,35000,6500] в своем текущем примере. Затем вы можете выполнить простой цикл, чтобы пройтись по массиву и добавить к сумме, или вы можете использовать что-то вроде уменьшить ()

var totalAmount = favorite.reduce(
    function (total, amount) {
        return parseInt(total) + parseInt(amount)
    },
    0 // The initial value to start with
)

Другие вопросы по теме

Похожие вопросы