0

我创建了一个脚本,它使用 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>";
4

4 回答 4

0

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

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

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

echo $total;
于 2013-04-18T17:59:03.417 回答
0

如果我正确理解您想要的行为。$sub_total在循环期间,在完成循环后添加每个$total_costechothiswhile

<?php

    $total_cost = 0;

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

    echo "Total cost: " . $total_cost;
?>
于 2013-04-18T17:51:16.673 回答
0

首先,您应该寻找使用mysqliPDO用于数据库访问的教程,因为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;
于 2013-04-18T17:53:07.117 回答
0

您的 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'];
于 2013-04-18T17:56:40.097 回答