以透视表格式显示数据的php代码

以透视表格式显示数据的php代码,php,mysql,Php,Mysql,我的数据库有如下数据 surveyorname bookingdate receiptno raj 20-03-2015 56 raj 20-03-2015 701 angel 21-03-2015 55 raj 22-03-2015 700 现在我的代码显示如下格式的数据。

我的数据库有如下数据

surveyorname       bookingdate       receiptno
  raj              20-03-2015         56   
  raj              20-03-2015         701 
  angel            21-03-2015         55    
  raj              22-03-2015         700
现在我的代码显示如下格式的数据。

surveyorname         20-03-2015
   raj                  2
  21-03-2015            --
   angel                1
  22-03-2015            --
   raj                  1
 surveyorname    20-03-2015        21-03-2015        22-03-2015  
    raj             2                                    1
    angel                            1
我需要显示如下所示的报告格式…

surveyorname         20-03-2015
   raj                  2
  21-03-2015            --
   angel                1
  22-03-2015            --
   raj                  1
 surveyorname    20-03-2015        21-03-2015        22-03-2015  
    raj             2                                    1
    angel                            1
我的查询正确地获取了数据,但唯一的问题是我无法理解如何以上述格式显示这些数据

   <?php
$book = $database->getRows("SELECT surveyor_name as srv, bookingdate as bd, COUNT(DISTINCT receipt_no) as num  FROM receipt_entry  GROUP BY surveyor_name, bookingdate");
$days=array();
$line=array();
foreach ($book as $b) {
   $days[$d['bd']]=1;
   if (!is_array($line[$d['srv']])) {
      $line[$d['srv']]=array();
   }
   $line[$d['srv']][$d['bd']]=$d['num'];
}
print "<table><tr><th></th>\n";
foreach ($days as $d=>$n) {
      print "<th>$d</th>\n";
}
print "</tr>\n";
foreach ($line as $srv=>$l) {
    print "<tr><td>$srv</td>";
    foreach ($days as $d=>$n) {
        print "<td>" . $l[$d] . "</td>\n";
    }
    print "</tr>\n";
} 
print "</table>\n";
?>

可以试试这个

SELECT count(*) as TotalNum, surveyorname, bookingdate FROM your_table group by bookingdate,surveyorname;
$book=$database->getRows(“选择勘测员名称作为srv
,预订日期为bd
,计数(*)为num
从收据输入
按验船师姓名、登记日期分组
按预订日期订购);
$days=array();
$line=array();
foreach(账面价值为$b){
$days[$d['bd']]=1;
如果(!is_数组($line[$d['srv']])){
$line[$d['srv']]=array();
}
$line[$d['srv'][$d['bd']]=$d['num'];
}
打印“\n”;
foreach($d=>n的天数){
打印“$d\n”;
}
打印“\n”;
foreach($srv=>l的行){
打印“$srv”;
foreach($d=>n的天数){
打印“%$l[$d]”。\n;
}
打印“\n”;
} 
打印“\n”;

我已经告诉过我的查询,代码工作正常……请帮助我以上表格式显示数据……请……我需要以相同的td循环bookingdate,并根据此bookingdate显示总计……低于此日期……但先生,您的代码不会在网页上显示任何数据……我将您的代码按原样放在我的更新页面上发布…并对未定义的变量发出警告:染料,其中有一个输入错误-代码旨在向您展示如何解决问题,如果你想让我写一个有效的解决方案,那么我们需要讨论费率。好的,告诉我你的费率,先生…我问bcoz我正在努力学习php,而不是更多的知识…如果你在这个解决方案上帮助我,我将感谢你。。