1

可能重复:
在一个表中显示不同的列和非不同的列

我有 3 张桌子。一个是userinfo(您可以在其中找到Name),然后logs是登录详细信息和evaluation用户对活动的评估。它们由场相连attendee_id

当我加入他们时,它给了我这个输出:

实际输出

我想要的是有这样的输出:

期望的结果

当我使用 GROUP BY Name 时,它​​只返回一行,而不返回其他数据。

4

2 回答 2

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>

结果是:

在此处输入图像描述

于 2013-01-23T10:04:41.793 回答
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>';

它并不漂亮,但它会给你你想要的结果。你可以通过

于 2013-01-23T10:08:27.903 回答