Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP] Grupowanie wyników i generowanie tabelki
konsument
post
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 21.11.2012

Ostrzeżenie: (0%)
-----


Witajcie, mam problem z skryptem, który będzie generował tabelkę. Pakuję do jednej tabelki dane dotyczące pracowników (ilość przepracowanych godzin danego dnia, data, id_zadania, id_klienta, id_pracownika). Struktura:

  1. CREATE TABLE IF NOT EXISTS `wh_zadanie_czaspracy` (
  2. `id_czaspracy` int(11) NOT NULL AUTO_INCREMENT,
  3. `id_zadanie` int(11) NOT NULL,
  4. `id_pracownik` int(11) NOT NULL,
  5. `id_klient` int(11) NOT NULL,
  6. `date` date NOT NULL,
  7. `czas` int(11) NOT NULL,
  8. PRIMARY KEY (`id_czaspracy`)
  9. ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=16 ;
  10.  
  11. INSERT INTO `wh_zadanie_czaspracy` (`id_czaspracy`, `id_zadanie`, `id_pracownik`, `id_klient`, `date`, `czas`) VALUES
  12. (12, 1, 3, 1, '2013-01-18', 8),
  13. (11, 2, 3, 2, '2013-01-18', 8),
  14. (9, 2, 3, 2, '2013-01-16', 5),
  15. (7, 2, 3, 2, '2013-01-15', 6),
  16. (10, 2, 3, 2, '2013-01-13', 6),
  17. (13, 1, 3, 1, '2013-01-16', 6),


A tutaj generuję tabelkę
  1. echo '<table style="width: 300px; clear:both;" class="list">';
  2. echo '<tr class="bold">';
  3. echo '<td style="width:100px;">Data</td>';
  4.  
  5. // TUTAJ GENERUJĘ NAGŁÓWKI TABELKI Z NAZWAMI ZADAŃ
  6. $zapytanie0 = "SELECT * FROM ".$prefix."zadanie_czaspracy cp INNER JOIN ".$prefix."zadanie z ON cp.id_zadanie = z.id WHERE `id_pracownik`= ".$id_pracownik." GROUP BY cp.id_zadanie HAVING count(*) > 1 ";
  7. $news0 = mysql_query($zapytanie0) or die ('Błąd: ' . mysql_error());
  8. while ($rekord0 = mysql_fetch_assoc($news0)) {
  9. echo '<td>'.$rekord0[nazwa].'</td>';
  10. }
  11. echo "</tr>";
  12.  
  13. // A TUTAJ WYŚWIETLAM WERSY Z DATĄ I ILOŚCIĄ GODZIN PRZEPRACOWANĄ (W ZALEŻNOŚCI OD ZADANIA)
  14. $zapytanie = "SELECT date, czas, id_czaspracy, id_zadanie FROM ".$prefix."zadanie_czaspracy WHERE id_pracownik = ".$id_pracownik." order by date ASC";
  15. $news1 = mysql_query($zapytanie) or die ('błąd: ' . mysql_error());
  16. $daty = array();
  17. while ($row = mysql_fetch_array($news1)) {
  18. $id_date = $row['date'];
  19. if (!isset($daty[$id_date]))
  20. $daty[$id_date] = array('date' => $row['date'], 'czas' => array());
  21.  
  22. if (!empty($row['czas']))
  23. $daty[$id_date]['czas'][] = array('czas' => $row['czas']);
  24. }
  25.  
  26. // WYŚWIETLANIE GODZIN I DATY
  27. foreach ($daty as $id => $data){
  28. echo '<tr><td>'.$data['date'].' </td>';
  29. foreach ($data['czas'] as $czaspracy){
  30. echo '<td>'.$czaspracy['czas'].'</td>';
  31. }
  32. echo '</tr>';
  33. }
  34. echo '</table>';
  35. echo '<pre>';
  36. print_r($daty);
  37. echo '</pre>';
  38. ?>


Rezultatem jest tabela z pustymi wersami, zamiast dziur chciałbym, żeby były powstawiane zera.

  1. DATA Zadanie1 Zadanie2
  2. 2013-01-13 6
  3. 2013-01-15 6
  4. 2013-01-16 5 6
  5. 2013-01-18 8 8


Chciałbym, aby ilość godzin była przypisana do odpowiedniej kolumny (zadania), a tam gdzie pracownik nie pracował, żeby się pojawiło zero. Nie mam pomysłu jak prawidłowo wygenrować taką tabelkę. Chciałbym aby wyglądała
  1. DATA Zadanie1 Zadanie2
  2. 2013-01-01 6 0
  3. 2013-01-02 6 6
  4. 2013-01-03 0 6


Z góry dzięki za wszelkie sugestie.

Ten post edytował konsument 22.01.2013, 00:45:19
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 04:10