php代码显示金额列的总和

时间:2015-03-24 12:59:27

标签: php mysql

我需要根据某些条件过滤数据并显示过滤后的数据以及金额的总和值。

但问题是我有两个不同的查询...

下面是我的代码,用于根据fromdate和todate ...

过滤数据库中的数据

[问题。是我的代码显示数据正确,但不显示从日期过滤器到日期过滤器的第二个条件的金额列的总和....

 <?php
    if($_POST && isset($_POST['Submit']))
    {   
        if($_POST['street']!='')
        {
        $street = $_POST['street']; 
        $data = $database->getRows("SELECT *,  GROUP_CONCAT(coupon) as cou,GROUP_CONCAT(coupondate) as coupondt FROM receipt_entry WHERE street =:street GROUP by book_no,receipt_no",array(':street'=>$street)); 
        }   


        elseif($_POST['fromdate']!='' && $_POST['todate']!='')
    {   
    $fromdate = $_POST['fromdate']; 
    $todate = $_POST['todate'];
    $data = $database->getRows("SELECT *, GROUP_CONCAT(coupon) as cou,GROUP_CONCAT(coupondate) as coupondt FROM receipt_entry WHERE bookingdate BETWEEN :fromdate AND :todate GROUP          BY book_no,receipt_no order by bookingdate asc"
    ,array(':fromdate'=>$fromdate,':todate'=>$todate)); 

     $tot = $database->getRows("SELECT SUM(AmountTotal) FROM (SELECT SUM(DISTINCT amount) AS AmountTotal, receipt_no  FROM receipt_entry where bookingdate BETWEEN :fromdate AND     :todate GROUP BY receipt_no) AS T1",array(':fromdate'=>$fromdate,':todate'=>$todate)); 
    } 


        }
    ?>


<table>
        <thead> 
        <tr>
            <th width="4%">Sr.No</th>
            <th width="12%">Book / Recpt</th>            

        </tr>
        </thead>

         <tbody>
           <?php foreach($data as $row){ ?>         
            <tr>
             <td></td>
            <td><?php echo htmlspecialchars($row['book_no']); ?> / <?php echo htmlspecialchars($row['receipt_no']); ?></td>     

        </tr>   
        </tbody>
        <?php  }?>

<?php foreach($tot as $tota) {?>
    <tr><td colspan="8"><?php echo $tota['AmountTotal']; ?></td></tr>           
    <?php }  ?> 
    </table>

1 个答案:

答案 0 :(得分:0)

您可以使用上述两个查询实际查询两次,然后将其合并到$ data变量中的单个关联数组中。

 $d = $database->getRows("SELECT *, GROUP_CONCAT(coupon) as cou,GROUP_CONCAT(coupondate) as coupondt FROM receipt_entry WHERE bookingdate BETWEEN :fromdate AND :todate GROUP          BY book_no,receipt_no order by bookingdate asc"
,array(':fromdate'=>$fromdate,':todate'=>$todate)); 
 $tot = $database->getRows("SELECT SUM(AmountTotal) FROM (SELECT SUM(DISTINCT amount) AS AmountTotal, receipt_no  FROM receipt_entry where bookingdate BETWEEN :fromdate AND     :todate GROUP BY receipt_no) AS T1",array(':fromdate'=>$fromdate,':todate'=>$todate));
 $data = array('data'=>$d, 'total'=>$tot);

然后你可以在任何地方传递$ data来使用这两个值。