显示活动日期,名称,然后列出已注册的名称?!MySQL PHP


Display Event Date, Name and then List Names who have signed up?! MySQL PHP

真的需要帮助!我知道这很容易做到,但就是无法让我的大脑打开。我有一个名为'预订'的数据库表,其中是表列'StartDate' 'EventTitle' 'Fornames' '姓'

我想做的是查询数据库,并按其开始日期和标题回显事件列表,然后在每个事件旁边显示已预订到每个事件的名称。

当我运行下面的代码,它显示StartDate, EventTitle和名称,但重复这为每个条目-我希望这是有意义的。

$sql = "SELECT *
FROM Bookings";
$result = mysql_query($sql) or die (mysql_error());
$row = mysql_fetch_array($result) or die (mysql_error());
while($row = mysql_fetch_array($result)){ 
echo '<table>';
echo '<tr>';
echo '<td>' . $row['StartDate'] . '</td>' . '<td>' . $row['EventTitle'] . '</td>'
.'<td>' . $row['Forenames'] . '</td>';
echo '</tr>';
echo '</table>';
}

尝试:

$sql = "SELECT StartDate, EventTitle, GROUP_CONCAT(Fornames) as Attendees
FROM Bookings
GROUP BY StartDate, EventTitle";
$result = mysql_query($sql) or die (mysql_error());
echo '<table>';
while($row = mysql_fetch_assoc($result)){ 
    echo '<tr>';
    echo '<td>' . $row['StartDate'] . '</td>' . '<td>' . $row['EventTitle'] . '</td>'.'<td>' . $row['Attendees'] . '</td>';
    echo '</tr>';
}
echo '</table>';

注意事项:

  • mysql_fetch_array()不会提供$row中的字段名,但mysql_fetch_assoc()会提供。
  • 您发布的代码将跳过结果的第一行
  • <table>不需要放在每一行。