Można się bawić z SQLem i stworzyć pivot table
, ale (zwłaszcza, jeżeli ilość użytkowników będzie się zwiększać) jest to rozwiązanie dość niepraktyczne. Za to bardzo prosto jest taki rekord już w PHP przekształcić tak, by łatwo można było go wyświetlić.
Kod nie jest doskonały: zakłada, że każdy użytkownik brał udział w każdym spotkaniu oraz kolejność kolumn zależy od kolejności wierszy w oryginalnych danych. Obie rzeczy możesz poprawić i potraktować to jako pracę domową ;).
http://ja.revciu.pl/pub/4p/202687-sqlphp_-_wyswietlanie_tabeli/
http://ja.revciu.pl/pub/4p/202687-sqlphp_-_wyswietlanie_tabeli/?source
<?php
if(isset($_GET['source'])) { highlight_file(__FILE__); die(); }
$data = array(
array('id' => 1, 'id_usera' => 1, 'id_spotkania' => 1, 'suma' => 11),
array('id' => 2, 'id_usera' => 1, 'id_spotkania' => 2, 'suma' => 12),
array('id' => 3, 'id_usera' => 2, 'id_spotkania' => 1, 'suma' => 21),
array('id' => 4, 'id_usera' => 2, 'id_spotkania' => 2, 'suma' => 22)
);
$meetings = array();
$users = array_unique(array_map(function($row) {
return $row['id_usera'];
}, $data));
foreach($data as $row) {
$meetings[$row['id_spotkania']][$row['id_usera']] = $row['suma'];
}
print '<table border="1"><thead><tr><th>id spotkania</th>';
foreach($users as $user) {
print '<th>suma user ' . $user . '</th>';
}
print '</tr><thead><tbody>';
foreach($meetings as $meetingId => $meeting) {
print '<tr><td>' . $meetingId . '</td>';
foreach($users as $user) {
print '<td>' . $meeting[$user] . '</td>';
}
print '</tr>';
}
print '</tbody></table>';
?>