mysql CRUD理解循环

时间:2016-10-26 13:37:52

标签: php pdo foreach

我正在关注有关mysql数据库中CRUD操作的教程,具体来说是PDO(我不认为它是相关的)。

这是一个时间跟踪器;由项目表和任务表组成;每个任务都属于一个项目。项目可以有多个任务,但任务只能属于一个项目。我需要显示"报告"页面,其中包括项目,然后是该项目的任务列表,其中包含在每个任务上花费的时间,以及在每个项目结束时,该项目所花费的总时间。

这是显示报告的表格;最后一个项目没有总数,但这是在教程中进一步讨论的问题。

<?php 
$filter = 'all';
?>
<table>
  <?php 
  $total = $project_id = $project_total = 0;
  foreach (get_tasks_list($filter) as $item) {
      if ($project_id != $item['project_id']) {
          if ($project_id > 0) {
              echo '<tr>';
              echo '<th colspan="2">Project Total</th>';
              echo '<th>' . $project_total . '</th>';   
              echo '</tr>';
              $project_total = 0;
             }
             $project_id = $item['project_id'];
             echo '<thead>';
             echo '<tr>';
             echo '<td>' . $item['project'] . '</td>';
             echo '<td>  Date  </td>';
             echo '<td> Time </td>';
             echo '</tr></thead>';
         }    
         $project_total += $item['time'];
         $total += $item['time'];
         echo '<tr>';
         echo '<td>' . $item['title'] .  '</td>';
         echo '<td>' . $item['date'] .  '</td>';
         echo '<td>' . $item['time'] .  '</td>';
         echo '</tr>';
     }
  ?>
    <tr class="totalReportTime">
      <th colspan="2">Total</th>
      <th><?php echo $total; ?></th>
    </tr>
  </table>

get_tasks_list给出了所有任务的列表。

这是报告表的外观: enter image description here

我怀疑是......我在做什么: $ project_id = $ item [&#39; project_id&#39;]; ??

我的意思是....在foreach循环之后,foreach任务我检查我刚刚设置为0的$ project_id是否不等于与任务相关的project_id,但是,为什么我说如果$ project_id是否大于0?为什么在它之后它将$ project_id的值设置为来自任务的project_id的相同值?

基本上,我并没有理解它是如何知道的#34;它需要在最后添加每个项目的总数,或者为什么要进行该项任务$ project_id = $ item [&#39; project_id&#39;];

任何基本的解释都会有所帮助。

谢谢!

1 个答案:

答案 0 :(得分:1)

我为每个代码部分添加了注释,以便您可以阅读它们并了解每个代码的重要性,仍然有任何问题请告诉我。

<body>
  

最后一个项目没有总数

因为你可以看到它的最后一个任务所以循环不会再次自我迭代而且没有比较project_id的变化所以它不会达到那个条件所以它不会打印最后的项目总数