Php 汇总动态生成的字段

Php 汇总动态生成的字段,php,Php,我创建了一个使用php动态填充表字段的脚本。如果您查看下面的代码片段,我现在遇到了一个难题,我想添加所有$sub_total以创建$total_cost。我不确定我是否解释得很好,但如果有任何指导,我将不胜感激 // loop through results of database query, displaying them in the table while($row = mysql_fetch_array( $result )) { // Calcula

我创建了一个使用php动态填充表字段的脚本。如果您查看下面的代码片段,我现在遇到了一个难题,我想添加所有
$sub_total
以创建
$total_cost
。我不确定我是否解释得很好,但如果有任何指导,我将不胜感激

// loop through results of database query, displaying them in the table
    while($row = mysql_fetch_array( $result )) {

            // Calculate hours done per day

            $hrs_done = $row['time_out'] - $row['time_in'];

            if($hrs_done > $row['con_hr']){$hrs = $hrs_done;}
            else{$hrs = $hrs_done;}

            // echo out results into a table

            echo "<tr>";
            echo '<td bgcolor="#FFFFFF">' . $row['date'] . '</td>';
            echo '<td bgcolor="#FFFFFF">' . $hrs . '</td>';
            echo '<td bgcolor="#FFFFFF">' . $row['rate'] . '</td>';
            echo '<td bgcolor="#FFFFFF">'?>

           // Multiply hrs by rate to get sub total charge for day    

           <?php $sub_total = $hrs * $row['rate'];
           echo $sub_total ;
           ?>

             <?php '</td>';
            echo "</tr>"; 
    } 
    // close table>
    echo "</table>";
//循环数据库查询的结果,并将其显示在表中
while($row=mysql\u fetch\u数组($result)){
//计算每天完成的小时数
$hrs_done=$row['time_out']-$row['time_in'];
如果($hrs_done>$row['con_hr']){$hrs=$hrs_done;}
else{$hrs=$hrs_done;}
//将结果回显到表中
回声“;
回显“.$row['date']”;
回音“.$hrs.”;
回显'.$row['rate'].';
回音“”?>
//将小时数乘以费率,得到当天的小计费用

如果我正确理解你想要的行为。 在循环过程中,将每个
$sub_total
添加到
$total_cost
中,并在完成
while
循环后进行
回显

<?php

    $total_cost = 0;

    while($row = mysql_fetch_array( $result )) {
        $sub_total = $hrs * $row['rate'];
        $total_cost += $sub_total;
    } 

    echo "Total cost: " . $total_cost;
?>

首先,您应该查找使用
mysqli
PDO
进行数据库访问的教程,因为
mysql.*
函数已被弃用

第二,这个问题很简单,只要在循环中迭代时将小计项相加即可

$grand_total = 0;
while($row = mysql_fetch_array( $result )) {
       // your other code omitted for clarity

       $sub_total = $hrs * $row['rate'];
       $grand_total += $sub_total;
       echo $sub_total ;

       // more code
}
echo $grand_total;

IF/ELSE块在两种情况下都会导致一个相同的结果。这是期望的结果吗

另一方面,我不确定我是否理解了你的意思,但是如果我理解了,这是我的答案

由于您希望接收所有$sub_total,因此需要所有其他构建了$sub_total的变量:

它们是:

$hrs = $hrs_done = $row['time_out'] - $row['time_in']
$row['rate'];
如果尝试使用SUM()MySQL函数,您将收到上述列的总和:

SELECT sum(time_out) as 'sum_time_out', sum(time_in) as 'sum_time_in', sum(rate) as 'sum_rate' FROM myTable;

$hrs_sum = $hrs_done_sum = $row['sum_time_out'] - $row['sum_time_in'];
$stotal_cost = $hrs)sum * $row['sum_rate'];

while循环的每次迭代都会创建一个新变量$subtotal,您希望将其添加到常量变量$total中

因此,在循环中,您可以将$subtotal添加到$total,并在while循环退出后回显$total

while($row = mysql_fetch_array( $result )) 
{
  // your code
  $total = $total + $subtotal; // shorthand is -  $total += $subtotal.
} 

echo $total;

完美…绝对有道理。你刚刚帮我节省了至少4小时。我会接受你的建议,查看mysqli和PDO。再次感谢。