循环中的SUM值

时间:2017-05-18 10:30:16

标签: php while-loop

我正在寻找一种方法来计算一个组中属于一个组的人数(示例中为groupe1)和特定时间(09:00) 实际上我的回声结果是:2000000000。(事实上我的桌子上有2个人符合2个条件)。如何只显示结果“2”(即添加值2 + 0 + 0 + 0 + 0 + 0 + 0 + 0 ..)

谢谢

这是我的实际代码:

$r2=$my->query_array($sql2);

$counter=0;

$today=date('H:i',strtotime($row['heure']));


  while ($row2=$r2->fetch_array()) {

       if ($row2['groupe'] == 'groupe1' && $today == '09:00')
       $counter++ ;

      }

 echo $counter;

更新:

   while ($row=$r->fetch_array()) {

       if ($row['type']=='test1') {
          $sql2 = 'SELECT  ... ';  //( my request)

          $r2=$my->query_array($sql2);

          $counter=0;
          $today=date('H:i',strtotime($row['heure']));

                while ($row2=$r2->fetch_array()) {

                if ($row2['libellee'] == 'groupe1' && $today == '09:00')
                $counter++ ;

     $t.= '<tr><td class="text">'.$txt_annule.'&nbsp;       '.$row2['nom'].' '.$row2['prenom'].'</td>'.PHP_EOL;
     $t.= '<td  class="text">'.date('H:i',strtotime($row2['heure'])).'</td>'.PHP_EOL;
     $t.= '<td class="text">'.$row2['libellee'].' </td>'.PHP_EOL;
     $t.= '</tr>'.PHP_EOL;
        }

        echo $counter;      
        }

          else if ($row['type']=='test2') {

      $t.= '<tr><td class="text">'.$txt_annule.'&nbsp;&nbsp '.$row2['nom'].' '.$row2['prenom'].'</td>'.PHP_EOL;
      $t.= '<td class="text">'.date('H:i',strtotime($row2['heure'])).'</td>'.PHP_EOL;
      $t.= '<td class="text">'.$row2['libellee'].' </td>'.PHP_EOL;
      $t.= '</tr>'.PHP_EOL;     
            }       
    }

2 个答案:

答案 0 :(得分:0)

嘿,你不能这样尝试,不确定是否最优雅的解决方案,但我想会工作

$counter = 0;    
while ($row2=$r2->fetch_array()) {
     if ($row2['groupe'] == 'groupe1' && $today == '09:00') {
      $newCount = $counter+1;
      $counter = $newCount;
     }
    }

    echo $newCount;

答案 1 :(得分:0)

考虑使用纯SQL解决方案而不是获取所有记录和计数。随着数据库表的增长,它可能会导致性能问题 例如:

SELECT COUNT(*) FROM people WHERE groupe = 5 and TIME(heure) = '09:00'

此查询将返回确切的人数。