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:
CREATE TABLE IF NOT EXISTS `wh_zadanie_czaspracy` (
`id_czaspracy` int(11) NOT NULL AUTO_INCREMENT,
`id_zadanie` int(11) NOT NULL,
`id_pracownik` int(11) NOT NULL,
`id_klient` int(11) NOT NULL,
`date` date NOT NULL,
`czas` int(11) NOT NULL,
PRIMARY KEY (`id_czaspracy`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=16 ;
INSERT INTO `wh_zadanie_czaspracy` (`id_czaspracy`, `id_zadanie`, `id_pracownik`, `id_klient`, `date`, `czas`) VALUES
(12, 1, 3, 1, '2013-01-18', 8),
(11, 2, 3, 2, '2013-01-18', 8),
(9, 2, 3, 2, '2013-01-16', 5),
(7, 2, 3, 2, '2013-01-15', 6),
(10, 2, 3, 2, '2013-01-13', 6),
(13, 1, 3, 1, '2013-01-16', 6),
A tutaj generuję tabelkę
echo '<table style="width: 300px; clear:both;" class="list">'; echo '<tr class="bold">'; echo '<td style="width:100px;">Data</td>';
// TUTAJ GENERUJĘ NAGŁÓWKI TABELKI Z NAZWAMI ZADAŃ
$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 ";
echo '<td>'.$rekord0[nazwa
].'</td>'; }
// A TUTAJ WYŚWIETLAM WERSY Z DATĄ I ILOŚCIĄ GODZIN PRZEPRACOWANĄ (W ZALEŻNOŚCI OD ZADANIA)
$zapytanie = "SELECT date, czas, id_czaspracy, id_zadanie FROM ".$prefix."zadanie_czaspracy WHERE id_pracownik = ".$id_pracownik." order by date ASC";
$id_date = $row['date'];
if (!isset($daty[$id_date])) $daty[$id_date] = array('date' => $row['date'], 'czas' => array());
if (!empty($row['czas'])) $daty[$id_date]['czas'][] = array('czas' => $row['czas']); }
// WYŚWIETLANIE GODZIN I DATY
foreach ($daty as $id => $data){
echo '<tr><td>'.$data['date'].' </td>'; foreach ($data['czas'] as $czaspracy){
echo '<td>'.$czaspracy['czas'].'</td>'; }
}
?>
Rezultatem jest tabela z pustymi wersami, zamiast dziur chciałbym, żeby były powstawiane zera.
DATA Zadanie1 Zadanie2
2013-01-13 6
2013-01-15 6
2013-01-16 5 6
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
DATA Zadanie1 Zadanie2
2013-01-01 6 0
2013-01-02 6 6
2013-01-03 0 6
Z góry dzięki za wszelkie sugestie.
Ten post edytował konsument 22.01.2013, 00:45:19