Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: tabela grupująca dane po wierszach i kolumnach
Forum PHP.pl > Forum > PHP
emmjot
Witam,

Potrzebuję zrobić coś a'la kwerendę krzyżową ale w postgresl. W Access jest taka dodatkowa opcja ale jak sobie z tym poradzić w postgres?

Struktura:

Projekty:

Username|Projectname|Subprojectname|Date|

Projectname|Subprojectname|1-01-2007|2-01-2007|3-01-2007|4-01-2007|.......
Projekt1......|Podprojekt11....|2 h..........| 4 h..........|3 h..........| 4 h.........|......
Projekt2......|Podprojekt21....|3 h..........| 5 h..........|6h...........|8h...........|......
Projekt3......|Podprojekt.31...|3 h..........| 5 h..........|6h...........|8h...........|......
Projekt3......|Podprojekt.32...|3 h..........| 5 h..........|6h...........|8h...........|......
Projekt4......|Podprojekt.42...|3 h..........| 5 h..........|6h...........|8h...........|......

W wierszach mają się wyświetlać nazwy projektów i podprojektów. W kolumnach data (każdy dzień) obejmująca 1 miesiąc kalendarzowy. Na ich przecięciu wyświetlą się godziny (ile godzin dziennie zostało przypisane na dany projekt i odpowiadający mu podrojekt). Cała tabela ma wyświetlać dane o jednym użytkowniku (username).

Dane z tej tabeli mają się wyświetlać pod warunkiem, że dana nazwa projektu jest równa nazwie występującej w drugiej tabeli, z nazwami tzw. słownikowymi (gotowymi).

Nie wiem niestety jak poradzić sobie z wyświetleniem takiej struktury w na stronie www, przy użyciu php i postgresql-a.

Zapytanie do bazy mam takie:

SELECT * FROM projekty INNER JOIN slownik_projekty ON slownik_projekty.projectname=projekty.projectname WHERE username='imie.nazwisko' order by projectname, subprojectname, date;

Zapytanie działa dobrze w konsoli, tzn wybiera faktycznie te wartości które powinno. Ale problem się robi przy wyświeltaniu ich w tej tabeli o wyżej podanej strukturze na stronie www.

Bardzo proszę o pomoc.
Darti
jezeli faktycznie wynikiem sa juz gotowe dane to zrobilbym tablice mniej wiecej tak (pisane z palca, nie sprawdziłem składni):
  1. <?php
  2. // gromadzenie danych
  3. // $result = pg_query(.......);
  4. $tabelka = array();
  5. while ($wynik = pg_fetch_array($result)){
  6. $projekty[$wynik['Subprojectname']]['project'] = $wynik['projectname'];
  7. $godziny[$wynik['Subprojectname']][$wynik['date']] += $wynik['ile_godzin'];
  8. // += na wypadek jak by były dwa wpisy z godzinami
  9. }
  10. // sprawdzmy wylosowany miesiac ;)
  11. list($dzien,$miesiac,$rok) = explode('-', $godziny[0][0]);
  12. $ile_dni_ma_nasz_miesiac = date('t', mktime(1,1,1,$miesiac,$dzien,$rok));
  13. // wyswietlenie
  14. echo '<table>';
  15. foreach($projekty as $podprojekt => $projekt){
  16.  echo '<tr>';
  17.  echo '<td>'.$projekt.'</td>';
  18.  echo '<td>'.$podprojekt.'</td>';
  19.  for ($kolumna = 1; $kolumna <= $ile_dni_ma_nasz_miesiac; $kolumna++){
  20.  echo '<td>'. @$godziny[$podprojekt][$kolumna.'-'.$miesiac.'-'.$rok].'</td>';
  21. }
  22.  echo '</tr>';
  23. }
  24. echo '</table'>;
  25. ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.