【发布时间】:2016-09-24 04:01:16
【问题描述】:
提前感谢您提供详细的帮助和回复。
我已经为此困扰了好几个星期。一直在网上研究,无法弄清楚。请帮忙。
请务必注意 - 我试图获取总数的列未存储在我的 sql 数据库中。 SELECT SUM 不适用于此。我也不想将 SUBTOTAL 列写入 sql - 因为如果我需要更改小时数或费率(如果有笔误),我宁愿只更改 1 个字段,而不是 2 个。
这是我的表的样子,由 sql 查询填充: table looks like
表中显示 TOTAL,我需要它来将其上方的列相加并填充总数。
这是我的代码 - 很长,因为我包含了所有内容以备不时之需。
$staffquery = mysqli_query($con, "SELECT * FROM kmis_transcribers WHERE transcriber_projectid = '$projectinvoiceid ' ORDER BY transcriber_calltime ASC");
$staffcount = mysqli_num_rows($staffquery);
for($i=0; $i<$staffcount; $i++) {
$staffarray = mysqli_fetch_array($staffquery);
$staffid = $staffarray['transcriber_id'];
$staffregid = $staffarray['transcriber_registryid'];
$staffposition = $staffarray['staff_position'];
$staffcalltime = $staffarray['transcriber_calltime'];
$staffrate = $staffarray['staff_rate'];
$staffhours = $staffarray['transcriber_hours'];
$staffovertime = $staffarray['transcriber_overtime'];
echo('<tr>
<td align="center" style="border:1px solid #000000; padding:3px">$'.$staffrate.'</td>
<td align="center" style="border:1px solid #000000; padding:3px">');
$invoicequery = mysqli_query($con, "SELECT * FROM kmis_invoices WHERE invoice_staffid='$staffid'");
while ($invoicearray = mysqli_fetch_array($invoicequery)) {
echo(''.$invoicearray['invoice_hours'].'');
}
echo('</td>
<td align="center" style="border:1px solid #000000; padding:3px">');
$invoicequery = mysqli_query($con, "SELECT * FROM kmis_invoices WHERE invoice_staffid='$staffid'");
while ($invoicearray = mysqli_fetch_array($invoicequery)) {
echo(''.$invoicearray['invoice_overtime'].'');
}
echo('</td>
<td align="center" style="border:1px solid #000000; padding:3px">');
$invoicequery = mysqli_query($con, "SELECT * FROM kmis_invoices WHERE invoice_staffid='$staffid'");
while ($invoicearray = mysqli_fetch_array($invoicequery)) {
$invoicehours= $invoicearray['invoice_hours'];
$invoiceovertime= $invoicearray['invoice_overtime'];
$subtotal = ($invoicehours*$staffrate)+($invoiceovertime*$staffrate*1.5);
$subtotalformat = number_format((float)$subtotal, 2, '.', '');
echo('$'.$subtotalformat.'');
}
echo('</td>
</tr>');
}
echo('<tr>
<td align="center" style="border:1px solid #000000; padding:3px"></td>
<td align="right" style="border:1px solid #000000; padding:3px" colspan="4"><b>TOTAL DUE:</b></td>
<td align="center" style="border:1px solid #000000; padding:3px"><b>TOTAL</b></td>
</tr>
您可以看到,我用来创建小计列的公式使用了四种不同的查询——来自发票和来自员工。一些员工的费率不同,因此小计基于可能完全不同的数据。
我认为答案在于 array_sum 并在填充时使用数组来保存所有 $subtotal 但我完全被难住了。
衷心感谢。如果您需要我澄清或帮助使其更准确,请告诉我。
【问题讨论】:
-
我不完全理解你的问题。我已经回答了你的问题,因为这对我来说似乎很简单。希望尽快得到你的反馈