2013-01-22 53 views
0

我想用數據庫中的數據生成一個表。在一張表中,我有關於員工,任務,日期和時間的數據。從mysql(組)和數組生成表

CREATE TABLE IF NOT EXISTS `wh_task_worktime` (
`id_worktime` int(11) NOT NULL AUTO_INCREMENT, 
`id_task` int(11) NOT NULL, 
`id_worker` int(11) NOT NULL, 
`id_customer` int(11) NOT NULL, 
`date` date NOT NULL, 
`time` int(11) NOT NULL, 
PRIMARY KEY (`id_worktime`) 
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=16 ; 

INSERT INTO `wh_task_worktime` (`id_worktime`, `id_task`, `id_worker`, `id_customer`, `date`, `time`) 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), 

生成表:

echo '<table style="width: 300px; clear:both;" class="list">'; 
echo '<tr class="bold">'; 
echo '<td style="width:100px;">Date</td>'; 

// Headlines tasks 
$query0 = "SELECT z.name FROM ".$prefix."task_worktime cp INNER JOIN ".$prefix."task z ON cp.id_task = z.id WHERE `id_worker`= ".$id_worker." GROUP BY cp.id_task HAVING count(z.name) > 0 "; 
$news0 = mysql_query($query0) or die ('Error: ' . mysql_error()); 
while ($rekord0 = mysql_fetch_assoc($news0)) { 
echo '<td>'.$rekord0[name].'</td>'; 
} 
echo "</tr>"; 

// Here shows VERSES WITH DATE and the number of hours worked (depending on the task) 
$query = "SELECT date, time, id_worktime, id_task FROM ".$prefix."task_worktime WHERE id_worker = ".$id_worker." order by date ASC"; 
$news1 = mysql_query($query) or die ('Error: ' . mysql_error()); 
$daty = array(); 
while ($row = mysql_fetch_array($news1)) { 
$id_date = $row['date']; 
if (!isset($daty[$id_date])) 
$daty[$id_date] = array('date' => $row['date'], 'time' => array()); 

if (!empty($row['time'])) 
$daty[$id_date]['time'][] = array('time' => $row['time']); 
} 

// DISPLAY HOUR AND DATE 
foreach ($daty as $id => $data){ 
echo '<tr><td>'.$data['date'].' </td>'; 
foreach ($data['time'] as $worktime){ 
echo '<td>'.$worktime['time'].'</td>'; 
} 
echo '</tr>'; 
} 
echo '</table>'; 
echo '<pre>'; 
print_r($daty); 
echo '</pre>'; 

結果是一個空白的詩句表,而不是孔的,我想他們是零

enter image description here

DATE  Task1 Task2 
2013-01-13  6 
2013-01-15  6 
2013-01-16  5 6 
2013-01-18  8 8 

作爲一天的員工不是它不適用於數據庫中的任何條目。最終,我想在這裏創建這樣的表格:

DATE  Task1 Task2 Task3 
2013-01-01 6  0  2 
2013-01-02 4  2  0 
2013-01-03 0  8  0 

就在我抓它的地方沒有任何數據庫中的條目。每個員工的任務數量可能不同。

感謝您的任何建議如何正確生成表。

回答

0

在你行,你輸出的工作時間把支票上的價值是這樣的:

echo '<td>'.($worktime['time']?$worktime['time']:'0').'</td>'; 
+0

不是這樣。看陣列:http://awesomescreenshot.com/006u056bd – user1999659

0

試試這個: -

echo '<td>'.(isset($worktime['time'])?$worktime['time']:'0').'</td>'; 
+0

該陣列是唯一的工作時間(沒有零)。請參閱:http://awesomescreenshot.com/006u056bd – user1999659

0
SELECT name the columns you want returned 
    FROM task_worktime cp 
    LEFT 
    JOIN task z 
    ON cp.id_task = z.id 
WHERE id_worker = '$id_worker' 
GROUP 
    BY cp.id_task 
HAVING COUNT(*) > 1 

並注意使用這種方式,GROUP BY可以給出意想不到的結果。

+0

你是對的,糾正了,但不幸的是它不影響表的生成。 – user1999659