2013-11-01 31 views
1

我有一張根據星期ID分解信息的表。這是創建它的查詢:當ID相同時拆分爲新表

$result = mysqli_query($con,"SELECT * FROM b_tasks_report WHERE TASK_ID=$taskid"); 

$current_week_id = -1; 

while($row = mysqli_fetch_array($result)) 
{ 
if($current_week_id != $row['WEEK_ID']) 
{ 
echo "<tr class='no-border'><td class='no-border'><div class='task-detail-title'>Week Number: " . $row['WEEK_ID'] . "</div></td></tr>";   
echo "<tr>"; 
echo "<th width='100'>Day</th>"; 
echo "<th width='75'>Start</th>"; 
echo "<th width='75'>End</th>"; 
echo "<th width='100'>Billable Hours</th>"; 
echo "<th width='100'>Non Billable Hours</th>"; 
echo "</tr>"; 

$current_week_id = $row['WEEK_ID']; 
} 
echo "<tr>"; 
echo "<td class='tdclass'>" . $row['DAY'] . "</td>"; 
echo "<td class='tdclass'>" . $row['START'] . "</td>"; 
echo "<td class='tdclass'>" . $row['END'] . "</td>"; 
echo "<td class='tdclass'>" . $row['BILLABLE_HOURS'] . "</td>"; 
echo "<td class='tdclass'>" . $row['NON_BILLABLE_HOURS'] . "</td>"; 
echo "</tr>"; 

} 

echo "</table>"; 

這工作,提出新的頭標識爲每個新的一週ID的週數。然而,我想要的是:我需要它們成爲單獨的表格,而不是具有多個分組周和上面的表格的表格。

例如,假設我們有3周ID爲week_1,week_2和week_3。我希望這幾周有3張單獨的桌子。我已經嘗試了多種方法來做到這一點,但它一直在分割行。

</table><table> 

我知道它需要在while部分,只是不確定在哪裏。

任何幫助表示讚賞

回答

1

首先在你的SQL語句您應該記錄與WEEK_ID? 並且還這部分代碼之前,您應該刪除張開臺echo "<table>"

$result = mysqli_query($con,"SELECT * FROM b_tasks_report WHERE TASK_ID=$taskid ORDER BY WEEK_ID"); 
$current_week_id = -1; 
while($row = mysqli_fetch_array($result)) 
{ 
if($current_week_id != $row['WEEK_ID']) 
{ 
    if($current_week_id != - 1) 
    {  
     echo "</table>"; 
    } 
echo "<table>"; 

echo "<tr class='no-border'><td class='no-border'><div class='task-detail-title'>Week Number: " . $row['WEEK_ID'] . "</div></td></tr>";   
echo "<tr>"; 
echo "<th width='100'>Day</th>"; 
echo "<th width='75'>Start</th>"; 
echo "<th width='75'>End</th>"; 
echo "<th width='100'>Billable Hours</th>"; 
echo "<th width='100'>Non Billable Hours</th>"; 
echo "</tr>"; 
$current_week_id = $row['WEEK_ID']; 
} 
echo "<tr>"; 
echo "<td class='tdclass'>" . $row['DAY'] . "</td>"; 
echo "<td class='tdclass'>" . $row['START'] . "</td>"; 
echo "<td class='tdclass'>" . $row['END'] . "</td>"; 
echo "<td class='tdclass'>" . $row['BILLABLE_HOURS'] . "</td>"; 
echo "<td class='tdclass'>" . $row['NON_BILLABLE_HOURS'] . "</td>"; 
echo "</tr>"; 
} 
    if($current_week_id != - 1) 
    {  
     echo "</table>"; 
    } 
+0

我已經使用過它,它可以工作。我有一個問題,是否可以在每個帶有值WEEK_ID的表後添加一個按鈕?如果在之後添加一個按鈕,那麼它會在每張桌子的最後一個桌子之外,除非您在底部的之後添加一個按鈕。但我希望它具有來自上面表格中指定給按鈕的WEEK_ID的值。 – andy

0
$result = mysqli_query($con,"SELECT * FROM b_tasks_report WHERE TASK_ID=$taskid"); 

$current_week_id = -1; 

while($row = mysqli_fetch_array($result)) 
{ 
echo "<table>"; 

if($current_week_id != $row['WEEK_ID']) 
{ 
echo "<tr class='no-border'><td class='no-border'><div class='task-detail-title'>Week Number: " . $row['WEEK_ID'] . "</div></td></tr>";   
echo "<tr>"; 
echo "<th width='100'>Day</th>"; 
echo "<th width='75'>Start</th>"; 
echo "<th width='75'>End</th>"; 
echo "<th width='100'>Billable Hours</th>"; 
echo "<th width='100'>Non Billable Hours</th>"; 
echo "</tr>"; 

$current_week_id = $row['WEEK_ID']; 
} 
echo "<tr>"; 
echo "<td class='tdclass'>" . $row['DAY'] . "</td>"; 
echo "<td class='tdclass'>" . $row['START'] . "</td>"; 
echo "<td class='tdclass'>" . $row['END'] . "</td>"; 
echo "<td class='tdclass'>" . $row['BILLABLE_HOURS'] . "</td>"; 
echo "<td class='tdclass'>" . $row['NON_BILLABLE_HOURS'] . "</td>"; 
echo "</tr>"; 
echo "<table>"; 
} 
+0

這不起作用。它只是爲每一行創建新表。 – andy

0

試試這個 - 它應該工作

<?php 
$current_week_id = -1; 
while($row = mysqli_fetch_array($result)) 
{ 

if($current_week_id != $row['WEEK_ID']) 
{ 
    echo "<table>"; 
    echo "<tr class='no-border'><td class='no-border'><div class='task-detail-title'>Week Number: " . $row['WEEK_ID'] . "</div></td></tr>";   
    echo "<tr>"; 
    echo "<th width='100'>Day</th>"; 
    echo "<th width='75'>Start</th>"; 
    echo "<th width='75'>End</th>"; 
    echo "<th width='100'>Billable Hours</th>"; 
    echo "<th width='100'>Non Billable Hours</th>"; 
    echo "</tr>"; 
} 
    echo "<tr>"; 
    echo "<td class='tdclass'>" . $row['DAY'] . "</td>"; 
    echo "<td class='tdclass'>" . $row['START'] . "</td>"; 
    echo "<td class='tdclass'>" . $row['END'] . "</td>"; 
    echo "<td class='tdclass'>" . $row['BILLABLE_HOURS'] . "</td>"; 
    echo "<td class='tdclass'>" . $row['NON_BILLABLE_HOURS'] . "</td>"; 
    echo "</tr>"; 

    if($current_week_id != $row['WEEK_ID']) 
    { 
     echo "</table>"; 
    } 

    $current_week_id = $row['WEEK_ID']; 
} 

>

0

這個怎麼樣?這裏可能會有一些錯誤,但你可以暫時解決該怎麼做。目前沒有坐在PHP電腦上,所以我無法檢查語法100%。

$weeks = array(); 
while($row = mysqli_fetch_array($result)) 
{ 
    if(isset($row['WEEK_ID'])){    
    $tmp_array = $row['WEEK_ID']);   // fetch the existing array holding rows. 
    array_push($tmp_array, $row);    // Adding a row 
    $weeks['$row['WEEK_ID']'] = $tmp_array; // Putting it back in the main array. 
    } else { 
    $list = array();       // Creates a new one array 
    $list[] = $row;       // Adds the row data 
    $weeks['$row['WEEK_ID']'] = $list[0]; // Stores the array under week id. 
} 
} 

foreach ($weeks as $weekID => $week_array){ 
    echo "<tr class='no-border'><td class='no-border'><div class='task-detail-title'>Week Number: " . $weekID . "</div></td></tr>";   
    echo "<tr>"; 
    echo "<th width='100'>Day</th>"; 
    echo "<th width='75'>Start</th>"; 
    echo "<th width='75'>End</th>"; 
    echo "<th width='100'>Billable Hours</th>"; 
    echo "<th width='100'>Non Billable Hours</th>"; 
    echo "</tr>"; 
    foreach($week_array as $data){ 
    echo "<tr>"; 
    echo "<td class='tdclass'>" . $data['DAY'] . "</td>"; 
    echo "<td class='tdclass'>" . $data['START'] . "</td>"; 
    echo "<td class='tdclass'>" . $data['END'] . "</td>"; 
    echo "<td class='tdclass'>" . $data['BILLABLE_HOURS'] . "</td>"; 
    echo "<td class='tdclass'>" . $data['NON_BILLABLE_HOURS'] . "</td>"; 
    echo "</tr>"; 
    } 
    echo "</table>"; 
} 
相關問題