1

重複の可能性:
1 つのテーブルに個別の列と非個別の列を表示する

私は3つのテーブルを持っています。1 つはuserinfo(ここで見つけることができますName)、次にlogsログインの詳細とevaluationアクティビティのユーザー評価です。それらはフィールドによって接続されていますattendee_id

それらに参加すると、次の出力が得られます。

実際の出力

私が欲しいのは、次のような出力を持つことです:

望ましい結果

GROUP BY Name を使用すると、それぞれに対して 1 つの行のみが返され、他のデータは返されませんでした。

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

私はこれを数回やってみましたが、あきらめました。最後に、現在の行の「名前」の値が前の行と異なるかどうかを確認して、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 に答える