我确实在为一些代码而苦苦挣扎。我正在尝试获取表中特定列的总数,下面是我的代码。

它的工作方式是为我提供列的总数-但是当我过滤表格时,总数保持不变,并且在过滤时不会改变。

例如,当我加载页面时-transaction_amount列的总和为99-但是当我对其进行过滤以在过滤器中搜索其他帐户时,它仍将总和抛出99。这可能真的很简单,但是我已经挣扎了一段时间。希望您能提供帮助?

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script>
    $(document).ready(function() {
        $('table thead th').each(function(i) {
            calculateColumn(i);
        });
    });

    function calculateColumn(index) {
        var total = 0;
        $('table tr').each(function() {
            var value = parseInt($('td', this).eq(index).text());
            if (!isNaN(value)) {
                total += value;
            }
        });
        $('table tfoot td').eq(index).text('Total: ' + total);
    }
</script>
</head>
<body>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
  <script src="https://cdn.datatables.net/1.10.12/js/jquery.dataTables.min.js"></script>
  <script src="https://cdn.datatables.net/1.10.12/js/dataTables.bootstrap.min.js"></script>
  <link rel="stylesheet" href="https://cdn.datatables.net/1.10.12/css/dataTables.bootstrap.min.css" />
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
 </head>
 <body>
  <div class="container box">
   <h3 align="center">How to Get SUM with Datatable Server-side-processing in PHP</h3>
   <br />

 <table id="example1" class="table table-bordered table-striped">
     <thead>
         <tr>
            <th> Date</th>
            <th>Account</th>
            <th> Transaction Name</th>
            <th> Type</th>
            <th>Method</th>
            <th>Amount</th>
            <th> More</th>
           </tr>
    </thead>
    <?php
    if ($result->num_rows > 0)
    {
      while($row = $result->fetch_assoc()) {
        ?>
            <tr class="table table-bordered table-striped" id="row-<?php echo $row["id"]; ?>">
                <td style="width: 11%" class="table table-bordered table-striped"><?php echo $row["submitted_date"]; ?></td>
                <td style="width: 11%"class="table table-bordered table-striped" > <?php echo $row["posting_account_number"]; ?></td>
                <td style="width: 45%"class="table table-bordered table-striped"><?php echo $row["transaction_name"]; ?></td>
                <td style="width: 22%"class="table table-bordered table-striped"><?php echo $row["method"]; ?></td>
                <td width="11%"class="table table-bordered table-striped"><?php echo $row["type"]; ?></td>
                <td class="table table-bordered table-striped"><?php echo $row["transaction_amount"]; ?></td>
                <td class="table table-bordered table-striped" align = "" colspan="2">
                  <a <a href="" type="link" class="" data-toggle="modal" data-target="#modal-default<?php echo $row["id"]; ?>"> Details</a> </a>

        <tfoot>
            <tr>
                <td></td>
                <td></td>
                <td></td>
                <td></td>
                <td></td>
                <td>Total:</td>
                <td></td>
            </tr>
        </tfoot>

最佳答案

您的代码中HTML代码中有很多错误……我想知道它的运行方式。 </head>被写入两次。 <a>添加在另一个<a>中。 <tr>未关闭。在末尾。其他您还没有结束循环。也许这就是为什么您可能一直面对这些问题。休息,我们需要检查过滤器代码以详细说明。

我已经在下面纠正了您的问题。

  <script>
    $(document).ready(function() {
        $('table thead th').each(function(i) {
            calculateColumn(i);
        });
    });

    function calculateColumn(index) {
        var total = 0;
        $('table tr').each(function() {
            var value = parseInt($('td', this).eq(index).text());
            if (!isNaN(value)) {
                total += value;
            }
        });
        $('table tfoot td').eq(index).text('Total: ' + total);
    }
</script>

<table id="example1" class="table table-bordered table-striped">
    <thead>
       <tr>
          <th>Date</th>
          <th>Account</th>
          <th>Transaction Name</th>
          <th>Type</th>
          <th>Method</th>
          <th>Amount</th>
          <th>More</th>
       </tr>
    </thead>
    <tbody>
        <?php
           if ($result->num_rows > 0)
           {
               while($row = $result->fetch_assoc())
               {
                  ?>
                   <tr class="table table-bordered table-striped" id="row-<?php echo $row["id"]; ?>">
                       <td style="width: 11%" class="table table-bordered table-striped"><?php echo $row["submitted_date"]; ?></td>
                       <td style="width: 11%"class="table table-bordered table-striped" > <?php echo $row["posting_account_number"]; ?></td>
                       <td style="width: 45%"class="table table-bordered table-striped"><?php echo $row["transaction_name"]; ?></td>
                       <td style="width: 22%"class="table table-bordered table-striped"><?php echo $row["method"]; ?></td>
                       <td width="11%"class="table table-bordered table-striped"><?php echo $row["type"]; ?></td>
                       <td class="table table-bordered table-striped"><?php echo $row["transaction_amount"]; ?></td>
                       <!-- action -->
                       <td class="table table-bordered table-striped" align = "" colspan="2">
                          <a href="" type="link" class="" data-toggle="modal" data-target="#modal-default<?php echo $row["id"]; ?>"> Details</a>
                       </td>
                  </tr>
                  <?php
               }
        ?>
    </tbody>
    <tfoot>
       <tr>
          <td></td>
          <td></td>
          <td></td>
          <td></td>
          <td></td>
          <td>Total:</td>
          <td></td>
       </tr>
    </tfoot>
</table>



  根据您的要求更新了答案:


给数量一个类,并在js函数中,仅添加该类的数据。

<script>
    $(document).ready(function() {
        $('table thead th').each(function(i) {
            calculateColumn('.cal_amt');
        });
    });

    function calculateColumn(index) {
        var total = 0;
        $(index).each(function() {
            var value = parseInt($(this).text());
            if (!isNaN(value)) {
                total += value;
                console.log(total);
            }
        });
        $('.show_amt').text('Total: ' + total);
    }
</script>

<table id="example1" class="table table-bordered table-striped">
    <thead>
       <tr>
          <th>Date</th>
          <th>Account</th>
          <th>Transaction Name</th>
          <th>Type</th>
          <th>Method</th>
          <th>Amount</th>
          <th>More</th>
       </tr>
    </thead>
    <tbody>
        <?php
           if ($result->num_rows > 0)
           {
               while($row = $result->fetch_assoc())
               {
                  ?>
                   <tr class="table table-bordered table-striped" id="row-<?php echo $row["id"]; ?>">
                       <td style="width: 11%" class="table table-bordered table-striped"><?php echo $row["submitted_date"]; ?></td>
                       <td style="width: 11%"class="table table-bordered table-striped" > <?php echo $row["posting_account_number"]; ?></td>
                       <td style="width: 45%"class="table table-bordered table-striped"><?php echo $row["transaction_name"]; ?></td>
                       <td style="width: 22%"class="table table-bordered table-striped"><?php echo $row["method"]; ?></td>
                       <td width="11%"class="table table-bordered table-striped cal_amt"><?php echo $row["type"]; ?></td>
                       <td class="table table-bordered table-striped"><?php echo $row["transaction_amount"]; ?></td>
                       <!-- action -->
                       <td class="table table-bordered table-striped" align = "" colspan="2">
                          <a href="" type="link" class="" data-toggle="modal" data-target="#modal-default<?php echo $row["id"]; ?>"> Details</a>
                       </td>
                  </tr>
                  <?php
               }
        ?>
    </tbody>
    <tfoot>
       <tr>
          <td></td>
          <td></td>
          <td></td>
          <td></td>
          <td></td>
          <td class="show_amt">Total:</td>
          <td></td>
       </tr>
    </tfoot>
</table>

关于php - 无法在PHP中重新计算列的总和,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59850103/

10-10 19:29