我有一个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>";
所以返回的是每个部分的标题,然后它循环与下面的查询相关的结果。一旦它返回了所有相应的结果,它将再次显示标题部分并再次循环相关结果。它会重复此操作,直到显示完所有内容。
然而,我想要的是标题部分低于循环结果。因此,它将循环结果,然后一旦它为特定部分循环它们,将标题放在下面。然后它将进入并再次循环结果并将标题放在下面,它将一直持续到完成。
任何人都知道我该怎么做。显然,如果我在if之前移动打印,那么它会输出结果,标题,结果,标题等。
所以这就是目前的样子(不准确,只是为了显示标题和结果):
| Company | Date | Hours |
| Title 1 | 20/11/2014 | |
| Result 1 | 10/11/2014 | 44 |
| Result 2 | 08/11/2014 | 22 |
当我需要它时:
| Company | Date | Hours |
| Result 1 | 10/11/2014 | 44 |
| Result 2 | 08/11/2014 | 22 |
| Title 1 | 20/11/2014 | |
答案 0 :(得分:0)
如何根据表中所需的条目创建新数组。所以你的代码会像(注意$outputarray
已添加):
编辑:假设每个数据集只有一个标题。如果每个记录集需要多个标题,则需要在记录中设置标识集的内容。在这种情况下,最简单的方法是根据标题是否为(根据您的标准)制作结果的多维数组。
$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>";