0

how do i put list in while loop?

PHP:

> $q = $db->query("SELECT * FROM
> bs_events LEFT JOIN bs_reservations ON
> bs_reservations.id_event = bs_events.id   
> GROUP BY bs_reservations.id_event 
> ORDER BY bs_events.eventDate ASC LIMIT 20");

HTML TABLE:

> while($r = $q->fetch_array(MYSQLI_ASSOC)):  
> echo '<tr>';
> echo '<td>' . $r['title'] . '</td>';  
> echo '<td>' . date('d/M/Y', strtotime($r['eventDate'])) . ' / ' . $r['eventTime'] . '</td>';  
> echo '<td>' . $r['location'] . '</td>';  
> echo '<td>' . array($r['username']) .'</td>';  
> echo '<td ></td>';  
> echo '<td ></td>';  
> echo '</tr>';  
> endwhile;

the above code will output

TITLE        DATE/TIME      LOCATION    USERNAME
=================================================
1       dd/mm/yyy / hh:mm   location    username
1       dd/mm/yyy / hh:mm   location    username1 
1       dd/mm/yyy / hh:mm   location    username2 
2       dd/mm/yyy / hh:mm   location    username   

and i want the output

TITLE        DATE/TIME      LOCATION    USERNAME
=================================================
1       dd/mm/yyy / hh:mm   location    username, username1, username2  
2       dd/mm/yyy / hh:mm   location    username 

or do i need to put foreach on echo '<td>' . array($r['username']) .'</td>';

Malachi
  • 33,142
  • 18
  • 63
  • 96
tonoslfx
  • 3,422
  • 15
  • 65
  • 107

2 Answers2

2

Check out GROUP_CONCAT

Mārtiņš Briedis
  • 17,396
  • 5
  • 54
  • 76
2

Something like

SELECT title,
       event_date,
       event_time,
       location,
       GROUP_CONCAT(username SEPARATOR ', ') AS username
  FROM bs_events 
  LEFT JOIN bs_reservations
         ON bs_reservations.id_event = bs_events.id   
 GROUP BY bs_reservations.id_event 
          bs_events.title,
          bs_events.event_date,
          bs_events.event_time,
          bs_events.location
 ORDER BY bs_events.eventDate ASC LIMIT 20

EDIT

Added alias for username

Mark Baker
  • 209,507
  • 32
  • 346
  • 385