为重复行创建空行

时间:2013-01-23 09:48:50

标签: php mysql

  

可能重复:
  Displaying distinct columns and non-distinct column in one table

我有3张桌子。一个是userinfo(您可以在其中找到Name),然后logs用于登录详细信息,evaluation用于用户评估活动。它们通过字段attendee_id连接。

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

Actual Output

我想要的是这样的输出:

Desired Results

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

2 个答案:

答案 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>

结果是:

enter image description here

答案 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>';

它不漂亮,但它会让你得到你想要的结果。你可以通过

来解决它