2017-01-10 24 views
0

タイトルが正しく書かれていないと謝罪します。テーブルの列でループが値を繰り返さない

かなり基本的なテーブル設定:employeesとemployees_deductionsがあります。私はこれらの2つに参加して、PHPでテーブルにコンテンツを表示したいと思います。

I従業員を得る:

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

I $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> 
    } 

} 

私の質問は、真上の行のセルに同じ正確な「名前」が含まれている場合、「名前」が空白の上にある最初のセルをどうすればできますか?

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

望ましい結果:

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

のように行いますあなたがPHPを書いていますPHPを開始したり終了したりすることなくHTMLを1つのシーケンスで処理できますか?そして答えは、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++; 
    } 

} 
関連する問題