Php While循环-将标题与循环结果分开-循环,然后为每组结果设置标题

Php While循环-将标题与循环结果分开-循环,然后为每组结果设置标题,php,mysql,Php,Mysql,我有一个while循环,它将所有链接的数字分隔成表中的不同部分。声明如下: $result2 = mysqli_query($con,"SELECT a.*, b.*, c.* FROM b_statement_main a INNER JOIN b_crm_company b ON a.COMPANY_ID = b.ID INNER JOIN b_statement c ON a.LINK = c.LINK WHERE a.COMPANY_ID = '$companyID2' AND a

我有一个while循环,它将所有链接的数字分隔成表中的不同部分。声明如下:

$result2 = mysqli_query($con,"SELECT a.*, b.*, c.* FROM b_statement_main a 
INNER JOIN b_crm_company b ON a.COMPANY_ID = b.ID INNER JOIN b_statement c 
ON a.LINK = c.LINK 
WHERE a.COMPANY_ID = '$companyID2' AND a.COMMENCE BETWEEN '$from2' AND '$to2' ");

$linked = -1;
while($row = mysqli_fetch_array($result2))
{

    $companyName = $row['TITLE'];
    $arDates = strtotime($row['COMMENCE']);
    $remaining = $row['REMAINING_HOURS'];
    $linking = $row['LINK'];
    $arNumber = $row['REF_NUMBER'];
    $billable = $row['BILLABLE'];


    if($linked != $row['LINK'])
    {
    print "<tr><td><strong>$companyName</strong></td><td></td><td><strong>".date('d/m/Y',$arDates)."</strong></td><td></td><td></td><td><strong>$remaining</strong></td></tr>";

    $linked = $row['LINK'];
    }

    print "<tr><td></td><td></td><td></td><td>$arNumber</td><td>$billable</td><td></td></tr>";

}

print "</table>";
当我需要它时,就像:

| Company  | Date        | Hours |
| Result 1 | 10/11/2014  | 44    |
| Result 2 | 08/11/2014  | 22    |
| Title 1  | 20/11/2014  |       |

根据表中所需的条目创建一个新数组怎么样。因此,您的代码将类似(注意添加了$outputarray):

编辑:假设每个数据集只有一个标题。如果您希望每组记录有多个标题,则需要在记录中设置标识集合的内容。在本例中,最简单的方法是根据结果是否为标题(根据您的标准),生成结果的多维数组

$linked=-1;
而($row=mysqli_fetch_数组($result2)){
$companyName=$row['TITLE'];
$arDates=strottime($row['start']);
$remaining=$row['remaining_HOURS'];
$linking=$row['LINK'];
$arNumber=$row['REF_NUMBER'];
$billable=$row['billable'];
如果($linked!=$row['LINK'])){
$outputarray['title'][]=“$companyName
.date('d/m/Y',$arDates)。“
剩余美元”;
$linked=$row['LINK'];
}否则{
$outputarray['row'][]=“$arNumber
$billable”;
}
}
“打印”
"; // 等把标题放在这里。
foreach($outputarray作为$key=>$value){
如果($key=='title'){
$thistTitle=$value;
}否则{
打印$value;
}
}
打印$thistitle;
打印“”;

显示的结果与我当时的结果完全相同什么是链接有多个标题?你会只显示一个标题吗?您可以拆分这两个数组(例如,
$outputarraytle
$outputarraytent
,并分别打印它们。但是来自查询的数据可能与您的愿景不匹配。标题将始终分隔结果,我编辑了我的问题,以向您展示我在底部的意思。不清楚您的输出是如何被分割的。您的查询中有一列不是hat同时输出
结果
标题
?如果
$linked!=$row['LINK']
它是如何成为标题的?或者是向后的?是的,
$linked!=$row['LINK']
总是显示标题。当$linked=$row['LINK']时,它会在数据库表中显示链接中具有相同数字的所有结果。
| Company  | Date        | Hours |
| Result 1 | 10/11/2014  | 44    |
| Result 2 | 08/11/2014  | 22    |
| Title 1  | 20/11/2014  |       |
$linked = -1;
while($row = mysqli_fetch_array($result2)){    
    $companyName = $row['TITLE'];
    $arDates = strtotime($row['COMMENCE']);
    $remaining = $row['REMAINING_HOURS'];
    $linking = $row['LINK'];
    $arNumber = $row['REF_NUMBER'];
    $billable = $row['BILLABLE'];

    if($linked != $row['LINK']){
       $outputarray['title'][] ="<tr><td><strong>$companyName</strong></td>
          <td></td><td><strong>".date('d/m/Y',$arDates)."</strong></td><td></td><td>
          </td><td><strong>$remaining</strong></td></tr>";
       $linked = $row['LINK'];
    } else {
       $outputarray['row'][]= "<tr><td></td><td></td><td></td><td>$arNumber</td>
          <td>$billable</td><td></td></tr>";
    }
  }
   print"<table>
         <thead>"; // etc... have the titles go here.
   foreach($outputarray as $key=> $value){
        if($key=='title'){
          $thistitle=$value;
        } else {
          print $value;
        }
   }
   print $thistitle;

   print "</table>";