可能重复:
Displaying distinct columns and non-distinct column in one table
我有3张桌子。一个是userinfo
(您可以在其中找到Name
),然后logs
用于登录详细信息,evaluation
用于用户评估活动。它们通过字段attendee_id
连接。
当我加入它们时,它给了我这个输出:
我想要的是这样的输出:
当我使用GROUP BY Name时,它每个只返回一行而不返回其他数据。
答案 0 :(得分:1)
可以这样做。在此示例中,我对$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>
结果是:
答案 1 :(得分:0)
我试过这几次然后放弃了。最后,我通过检查当前行中'name'的值是否与前一行不同来格式化PHP中的输出:
<?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>';
它不漂亮,但它会让你得到你想要的结果。你可以通过
来解决它