Создание пустой строки для повторяющейся строки

Возможный дубликат:
Отображение отдельных столбцов и нечеткого столбца в одной таблице

У меня 3 таблицы. Один из них – userinfo (где вы можете найти Name ), затем logs для входа и evaluation для оценки пользователем активности. Они связаны полем attendee_id .

Когда я присоединился к ним, он дал мне этот результат:

Фактический результат

Я хочу получить такой вывод:

Желаемые результаты

Когда я использую GROUP BY Name, он возвращает только одну строку для каждого и не возвращает другие данные.

Related of "Создание пустой строки для повторяющейся строки"

Это можно сделать так. В этом примере я жестко закодировал массив $rows , но вы можете заменить его массивом строк из базы данных.

 <?php $rows = array( array( 'name' => 'Juan', 'login' => '09:00:01', 'evaluation' => 'Yes' ), array( 'name' => 'Juan', 'login' => '09:00:02', 'evaluation' => 'Yes' ), array( 'name' => 'Juan', 'login' => '09:00:03', 'evaluation' => 'Yes' ), array( 'name' => 'Jose', 'login' => '09:00:04', 'evaluation' => 'No' ), array( 'name' => 'Jose', 'login' => '09:00:05', 'evaluation' => 'No' ) ); ?> <table> <tr> <th>Name</th> <th>Login</th> <th>Evaluation</th> </tr> <?php $prevName = ''; foreach($rows as $row): if($prevName == $row['name']) { $name = ''; } else { $name = $prevName = $row['name']; } ?> <tr> <td><?php echo htmlspecialchars($name); ?></td> <td><?php echo htmlspecialchars($row['login']); ?></td> <td><?php echo htmlspecialchars($row['evaluation']); ?></td> </tr> <?php endforeach; ?> </table> 

Результат:

введите описание изображения здесь

Я пытался сделать это несколько раз и сдался. В конце я отформатировал вывод в PHP, проверив, отличается ли значение для «name» в текущей строке предыдущей:

 <?php //Assume the query has been done //... $lastName=''; echo '<table>'; while ($row=mysql_fetch_assoc($query_result)) { if ($row['name']!=$lastName) { $lastName=$row['name']; } else { $row['name']=''; } echo '<td>'.implode('</td><td>',$row).'</td>; echo '<tr>'; } echo '</table>'; 

Это некрасиво, но это даст вам результат, который вы хотите. Вы можете его испортить