如何使用PHP在两个日期之间总和金额

时间:2017-03-02 06:07:01

标签: php html mysql

<?php
   if(isset($_SESSION['role'])) {
       $role=$_SESSION['role'];
   }

   if(isset($_POST["fdate"])) {
       $fdate=$_POST["fdate"];
       $_SESSION['fdate']=$fdate;
   } else if(isset($_SESSION['fdate'])) {
       $fdate=$_SESSION['fdate'];
   }
   $todate='';
   if(isset($_POST["todate"])) {
       $todate=$_POST["todate"];
       $_SESSION['todate']=$todate;
   } else if(isset($_SESSION['todate'])) {
       $todate=$_SESSION['todate'];
   }
   //$_SESSION["sql"]=$sql;
   $begin =  new DateTime($fdate. " 00:00:00");
   $end = new DateTime($todate. " 23:59:59");
   $interval = DateInterval::createFromDateString('1 day');
   $period = new DatePeriod($begin, $interval, $end);    
   $_SESSION["fdate"]=$fdate;
   $_SESSION["todate"]=$todate;
   foreach ( $period as $dt ) {
      $new=$dt->format("y-m-d");
      $profit_detail=mysql_query("select * from project_detail where date like '%".$new."%' group by project_id ");
      $old_value='0';
      $new_value='0';
      $value='0';
      $balance='0';
      while($row=mysql_fetch_array($profit_detail)) {                                                                                   
?>
         <tr bgcolor="#FFFFFF">
            <td><?php echo $row["date"];?></td>
            <td><?php echo $row["companyname"];?></td>
            <td><?php echo $row["project_name"];?></td>
            <td><?php echo $row["amount_given"];
            $old_value=$old_value+$row["amount_given"];?></td>
            <td><?php echo $row["total_amount"]; $new_value=$new_value+$row["total_amount"];?></td>
            <td><?php echo  $value=$value+$row["blank"]?></td>
         </tr>
<?php 
      }
   }
   $balance=$old_value-$new_value;
?>
<tr bgcolor="#FFFFFF">
   <td>Total</td>
   <td></td>
   <td></td>
   <td><?php echo $old_value;?></td>
   <td><?php echo $new_value;?></td>
   <td><?php echo $balance;?></td>
</tr>
</tbody>
</table> 
</div>

我想总计两个选定日期之间的总金额,但问题是我选择日期并显示结果金额总和仅当前日期金额总和 我的SQL查询或日期问题在哪里出现问题,如果发布日期,那么显示的金额和详细信息都显示在我的输出链接https://ibb.co/k9yj8v

1 个答案:

答案 0 :(得分:0)

您正在重新初始化循环中的值

//Add this before foreach
$old_value='0';
 $new_value='0';
 $value='0';
$balance='0';
foreach ( $period as $dt )
                        {
                    $new=$dt->format("y-m-d");
                       $profit_detail=mysql_query("select * from project_detail where date like '%".$new."%' group by project_id ");


                           while($row=mysql_fetch_array($profit_detail))
                           {                                                                                   
                       ?>
                       <tr bgcolor="#FFFFFF">
                        <td><?php echo $row["date"];?></td>
                           <td><?php echo $row["companyname"];?></td>
                           <td><?php echo $row["project_name"];?></td>
                           <td><?php echo $row["amount_given"];

                            $old_value=$old_value+$row["amount_given"];?></td>

                               <td><?php echo $row["total_amount"]; $new_value=$new_value+$row["total_amount"];?></td>

                               <td><?php echo  $value=$value+$row["blank"]?></td>

                       </tr>
                       <?php 

                           }
                }
                $balance=$old_value-$new_value;

                       ?>
                       <tr bgcolor="#FFFFFF">
                           <td>Total</td>
                        <td></td>
                        <td></td>
                           <td><?php echo $old_value;?></td>
                           <td><?php echo $new_value;?></td>
                           <td><?php echo $balance;?></td>
                    </tr>
            </tbody>
       </table> 
       </div>