SQL/PHP - wyświetlanie tabeli

0

Hej, w jaki sposób mając tabelę w bazie np:


id | id_usera | idSpotkania | suma

1 | 1 | 1 | 11
2 | 1 | 2 | 12
3 | 2 | 1 | 21
4 | 2 | 2 | 22

wyświetlić w taki sposób


idSpotkania | Suma_user1 | suma_user2

  1         |       11       |       21
  2         |       12       |       22

próbowałem np coś takiego jednak nici:
SELECT o1.suma o1, o2.suma o2
FROM sumy as o1, sumy as o2
WHERE o1.idSpotkania=o2.idspotkania

1

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

?>
0

Wielkie dzięki, praca domowa wykonana i się opłaciła:)

1 użytkowników online, w tym zalogowanych: 0, gości: 1