2017-01-10 2 views
0

Прошу прощения, если заголовок плохо написан, так как я не уверен, что именно назвать это!Цикл не повторяет значение в столбце таблицы

У меня есть довольно простая настройка таблицы: сотрудники и сотрудники. Я хочу присоединиться к этим двум и отобразить содержимое в таблице с 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

Вы можете иметь дополнительную переменную, в которой вы будете хранить фамилию или идентификатор, а затем сравнить его с текущим именем /Я бы. Если он совпадает, просто отобразите пустой столбец, а если нет, укажите имя.

Предполагая, что ваш 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++; 
    } 

} 
Смежные вопросы