2013-04-18 101 views
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>"; 

回答

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; 
+0

完美的......绝对是有道理的后呼应$总。你至少救了我4个小时。我会采取建议,并检查出mysqli和PDO。再次感谢。 –

0

如果我能正确理解你想要的行为。 在每次循环$sub_total添加到$total_costecho这点你已经完成了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; 
?> 
+0

点上...干杯 –

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']; 
0

while循环的每次迭代创建要添加到您的常量变量$总一个新的变量$小计。

所以在循环中,你可以$小计增加$总量和while循环退出

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

echo $total;