Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在此foreach中显示每日总计?_Php_Sql Server_Foreach - Fatal编程技术网

Php 如何在此foreach中显示每日总计?

Php 如何在此foreach中显示每日总计?,php,sql-server,foreach,Php,Sql Server,Foreach,我做了一个查询MSSQL数据库的函数,以获得代表的每日总计列表。我用ISO周编号将它们分组为周,然后显示天数。在本周结束时,我得出一个总数,因此: 您可以从图像中看到,每周都会自动分隔,然后每一行都有日期、代表和总数据。在我画红线的地方,我希望能够用额外的一行来计算一天的总数,但不太清楚如何做到这一点,我猜是用额外的嵌套foreach 以下是产生上述结果的当前函数: function getWorkInByDay() { global $db; $data = '';

我做了一个查询MSSQL数据库的函数,以获得代表的每日总计列表。我用ISO周编号将它们分组为周,然后显示天数。在本周结束时,我得出一个总数,因此:

您可以从图像中看到,每周都会自动分隔,然后每一行都有日期、代表和总数据。在我画红线的地方,我希望能够用额外的一行来计算一天的总数,但不太清楚如何做到这一点,我猜是用额外的嵌套
foreach

以下是产生上述结果的当前函数:

function getWorkInByDay()
{
    global $db;
    $data = '';

    // Build query
    $q = mssql_query("SELECT DATEPART(isowk,Datedb) AS 'Week', DAY(Datedb) AS 'Day', Ref1 AS 'Rep', SUM(PriceEst) AS 'Total', Datedb AS 'Date' FROM MainJobDetails WHERE MONTH(Datedb) = " . date('m') . " AND YEAR(Datedb) = " . date('Y') . " GROUP BY DATEPART(isowk,Datedb), DAY(Datedb), Ref1, Datedb",$db);

    $weeks = array();
    while($r = mssql_fetch_assoc($q)) {
        $weeks[$r['Week']][] = $r;
    }

    foreach ($weeks as $w => $rs) {
        $t = 0;
        $data .= "<table class='data full-width'>";
        $data .= "<thead><tr><td colspan='3'>". date('F'). " - Week ".$w."</td></tr></thead>";
        foreach ($rs as $r) {
            $data .= "<tr>";
            $data .= "<td>".date('l',strtotime($r['Date']))."</td>";
            $data .= "<td>".$r['Rep']."</td>";
            $data .= "<td>£".number_format($r['Total'], 2, '.', ',')."</td>";
            $data .= "</tr>";
            $t += $r['Total'];
        }
        $data .= "<tr><td></td><td></td><td><strong>Total: £".number_format($t, 2, '.', ',')."</strong></td></tr>";
        $data .= "</table>";
    }

    return $data;
}
函数getWorkInByDay()
{
全球$db;
$data='';
//生成查询
$q=mssql_查询(“选择DATEPART(isowk,Datedb)作为“周”,DAY(Datedb)作为“天”,Ref1作为“代表”,SUM(Pricest)作为“总计”,Datedb作为“日期”,其中MONTH(Datedb)=“.Date('m').”和YEAR(Datedb)=“.Date('Y').”按日期部分分组(isowk,Datedb),Date(Datedb),Ref1,Datedb“,$db);
$weeks=array();
而($r=mssql\U fetch\U assoc($q)){
$weeks[$r['Week'][]=$r;
}
foreach(周为$w=>$rs){
$t=0;
$data.=“”;
$data.=“.date('F')”-周“$w.”;
外汇(卢比等于卢比){
$data.=“”;
$data.=''.date('l',strottime('r['date']))。'';
$data.=''.r['Rep'].'';
$data.=“£”.number_格式($r['Total'],2',',',');
$data.=“”;
$t+=$r[‘总计’];
}
$data.=“总计:£”。数字格式($t,2,',',')。””;
$data.=“”;
}
返回$data;
}

非常感谢您的帮助。

您可以使用group by修饰符获取每个group by子句的总计行。

您也可以使用简单的数据透视功能显示周和列