可能重复:
在一个表中显示不同的列和非不同的列
我有 3 张桌子。一个是userinfo
(您可以在其中找到Name
),然后logs
是登录详细信息和evaluation
用户对活动的评估。它们由场相连attendee_id
。
当我加入他们时,它给了我这个输出:
我想要的是有这样的输出:
当我使用 GROUP BY Name 时,它只返回一行,而不返回其他数据。
可能重复:
在一个表中显示不同的列和非不同的列
我有 3 张桌子。一个是userinfo
(您可以在其中找到Name
),然后logs
是登录详细信息和evaluation
用户对活动的评估。它们由场相连attendee_id
。
当我加入他们时,它给了我这个输出:
我想要的是有这样的输出:
当我使用 GROUP BY Name 时,它只返回一行,而不返回其他数据。
可以这样做。在此示例中,我对$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>
结果是:
我尝试这样做几次并放弃了。最后,我通过检查当前行中“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>';
它并不漂亮,但它会给你你想要的结果。你可以通过