2017-01-10 24 views
0

如果標題寫得不好,我很抱歉,因爲我不確定究竟是什麼稱呼它!循環不重複在表列中的值

我有一個非常基本的表設置:employees和employees_deductions。我想加入這兩個並使用php在表格中顯示內容。

我得到的員工:

$employees = $wpdb->get_results("SELECT * from employees"); 

我然後遍歷$employees,並在每一個,我得到的扣除額,則在表中顯示它們:(代碼下面簡化的)

foreach($employees as $emp) { 
    $deductions = $wpdb->get_results("SELECT * FROM employee_deductions WHERE employee_id = $this_employee_id"); 

    foreach($deductions as $ded) { 
    <tr> 
     <td>name</td> 
     <td>deduction</td> 
    </tr> 
    } 

} 

我的問題是如何獲得第一個包含「BLANK」上面的「名稱」的單元格,如果它正上方的行中的單元格包含相同的確切「名稱」?

什麼我越來越:

+------+-----------+ 
| name | deduction | 
+------+-----------+ 
| John |  100 | 
| John |  142 | 
| John |  204 | 
| Mary |  200 | 
| Mary |  340 | 
+------+-----------+ 

期望的結果:

+------+-----------+ 
| name | deduction | 
+------+-----------+ 
| John |  100 | 
|  |  142 | 
|  |  204 | 
| Mary |  200 | 
|  |  340 | 
+------+-----------+ 
+0

你在寫PHP和HTML中的一個序列沒有開始或結束PHP?併爲答案請嘗試由mysql的組 –

回答

1

你可以有一個額外的變量,你將存儲的最後名稱或ID,然後把它比作當前的名稱/ID。如果匹配,只顯示一個空列,如果不匹配,則顯示名稱。

假設你SELECT查詢是爲了通過名字,這是可行的:

foreach($employees as $emp) { 

    $lastid = ''; /* WHERE YOU WILL STORE THE LAST ID OR NAME; JUST LEAVE IT EMPTY AT FIRST */ 

    $deductions = $wpdb->get_results("SELECT * FROM employee_deductions WHERE employee_id = $this_employee_id"); 

    foreach($deductions as $ded) { 
     echo '<tr>'; 
     // JUST REPLACE THE CORRESPONDING VARIABLE/CONDITION BELOW 
     echo (empty($lastid) || $lastid != $this_employee_id)?'<td>name</td>':'<td></td>'; 
     echo '<td>deduction</td> 
       </tr>'; 

     $lastid = $this_employee_id; /* STORE THE CURRENT ID/NAME TO THIS VARIABLE */ 

    } 

} 
+0

謝謝!這工作就像一個魅力! – drumichael611

0

我想你在正確的代碼運行, 我會做這樣的

foreach($employees as $emp) { 
    $deductions = $wpdb->get_results("SELECT * FROM employee_deductions WHERE employee_id = $this_employee_id"); 

    //becasue same employee_id must have same name 
    $show = 0; 
    foreach($deductions as $ded) { 
    <tr> 
     if ($show == 0) { 
     <td>name</td> 
     } else { 
     <td></td> 
     } 
     <td>deduction</td> 
    </tr> 
    $show++; 
    } 

}