php代码显示金额列的总和

标签 php mysql

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

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

下面是我的代码,用于根据 fromdate 和 todate 从数据库中过滤数据...

[问题。我的代码是否正确显示数据,但不显示来自 fromdate 和 to date 过滤器中第二个条件的金额列总和...

 <?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>

最佳答案

您实际上可以使用提到的两个查询查询两次,然后将其合并到 $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 传递到任何地方以使用这两个值。

关于php代码显示金额列的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29233319/

相关文章:

php - dirname(__FILE__) VS 设置全局变量到目录

javascript - 未捕获的语法错误 : Unexpected token < - Wordpress

php - 我需要获取用户 ID 并将其添加到列表中

mysql - Coldfusion Post 到查询以构建查询

PHP 行为怪异

当我对 PHP 数组进行硬编码时,它与从 mysql 获取它时不一样

PHPUnit:如何断言一个类扩展了另一个类?

php - 为什么会出现此mysql错误?

PHP - 我无法正确显示 xls 文件中的数据(从 mysql 导出))

php - 即时编写 $_POST 变量脚本