【发布时间】:2019-03-21 12:24:17
【问题描述】:
我在 PHP 中有一个查询结果,并使用 foreach 循环通过在 html 表中生成新的 tr 来显示结果,但同时将在我想通过添加一些行使用 Javascript 显示的循环内计算一些值
我该怎么做?
PHP:
<tbody>
<?php
$gTotalBorn = 0;
$gTotalSanc = 0;
$bTotalBorn = 0;
$bTotalSanc = 0;
foreach ($reNominalRoll as $key => $value) {
if ($row_area->ADMIN_ID == $value->AREA_ID) {
$gTotalBorn += $value->Borne;
$gTotalSanc += $value->sanction;
?>
<tr class="allrow">
<td><?php echo $value->Rank ?></td>
<td><?php echo $value->Part ?></td>
<td><?php echo $value->sanction;
$bTotalSanc += $value->sanction; ?></td>
<td><?php echo $value->Borne;
$bTotalBorn += $value->Borne; ?></td>
<td><?php echo $value->TotalIn ?></td>
<td><?php echo $value->TotalOut ?></td>
</tr>
<?php
}
}
}
?>
<!--Grand Total Row-->
<tr>
<td style="text-align: center; font-weight: bold;" colspan="5">Grand Total</td>
<td style="text-align: center; font-weight: bold;"><?php echo $gTotalSanc; ?></td>
<td style="text-align: center; font-weight: bold;"><?php echo $gTotalBorn; ?></td>
<td></td>
<td></td>
</tr>
</tbody>
Javascript:
if (allrow.hasClass('expectedRow')) {
$('.expectedRow').each(function () {
let thisRow = $(this);
let prevShip = thisRow.prevAll('.ships:first');
let prevUnit = thisRow.prevAll('.units:first');
let prevBranch = thisRow.prevAll('.units:first');
//thisRow.after('<tr><td colspan="6"><strong>Branch Total</strong></td></tr>');
thisRow.after('<tr>'+
'<td><strong>Branch Total</strong></td>'+
'<td></td>'+
'<td><strong>'+"<?php echo $bTotalSanc; $bTotalSanc = 0;?>"+'</strong></td>'+
'<td><strong>'+"<?php echo $bTotalBorn; $bTotalBorn = 0;?>"+'</strong></td>'+
'<td></td>'+
'<td></td>'+
'</tr>');
// below conditions for identify the unit based on rowspan length
if (prevUnit.find('td[rowspan]').length == 2) {
// ship rowspan incremented by 1
let prevShipRowspan = parseInt(prevShip.find('td:first').attr('rowspan'));
let newPrevShipRowspan = prevShipRowspan+1;
prevShip.find('td:first').attr('rowspan',newPrevShipRowspan);
// unit rowspan incremented by 1
let unitRowspan = parseInt(prevUnit.find('td:first').attr('rowspan'));
let newUnitRowspan = unitRowspan+1;
prevUnit.find('td:first').attr('rowspan',newUnitRowspan);
// branch rowspan incremented by 1
let branchRowspan = parseInt(prevUnit.find('td:eq(1)').attr('rowspan'));
let newBranchRowspan = branchRowspan+1;
prevBranch.find('td:eq(1)').attr('rowspan',newBranchRowspan);
}
else if (prevUnit.find('td[rowspan]').length == 3) {
// ship rowspan incremented by 1
let prevShipRowspan = parseInt(prevShip.find('td:first').attr('rowspan'));
let newPrevShipRowspan = prevShipRowspan+1;
prevShip.find('td:first').attr('rowspan',newPrevShipRowspan);
// unit rowspan incremented by 1
let unitRowspan = parseInt(prevUnit.find('td:eq(1)').attr('rowspan'));
let newUnitRowspan = unitRowspan+1;
prevUnit.find('td:eq(1)').attr('rowspan',newUnitRowspan);
// branch rowspan incremented by 1
let branchRowspan = parseInt(prevBranch.find('td:eq(2)').attr('rowspan'));
let newBranchRowspan = branchRowspan+1;
prevBranch.find('td:eq(2)').attr('rowspan',newBranchRowspan);
}
});
}
在上面的代码中,如何在javascript中添加$bTotalBorn和$bTotalSanc的值而不是总数,随着循环值的同步将在javascript中更新
谁能帮帮我?
【问题讨论】:
-
你想总结 $bTotalBorn $bTotalSanc 吗?
-
@MohammedYassineCHABLI 我已经更新了问题
-
从上表中得到的期望值是多少?
-
也许将每个小计存储在 PHP 中的数组中,并在 JS 中访问当前迭代函数中想要的小计(
.each()的第一个参数)。 -
你为什么不在 PHP 中构建小计行呢?
标签: javascript php foreach