Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从mysql(组)和数组生成表_Php_Html - Fatal编程技术网

Php 从mysql(组)和数组生成表

Php 从mysql(组)和数组生成表,php,html,Php,Html,我想用数据库中的数据生成一个表。在一个表中,我有关于员工、任务、日期和时间的数据 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, `t

我想用数据库中的数据生成一个表。在一个表中,我有关于员工、任务、日期和时间的数据

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>';
作为当时的雇员,它不处理数据库中的任何条目。最后,我想在这里创建这样一个表:

echo '<td>'.($worktime['time']?$worktime['time']:'0').'</td>';
就在我抓取的地方,数据库中没有任何条目。每个员工的任务数量可能不同


感谢您对如何正确生成表格提出的建议。

在您的行中,您可以在其中输出工作时间,并检查如下值:

echo '<td>'.(isset($worktime['time'])?$worktime['time']:'0').'</td>';
echo'.($worktime['time']?$worktime['time']:'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 
echo'(isset($worktime['time'])?$worktime['time']:'0');
?


请注意,使用这种方式,GROUP BY可能会产生意外的结果。

您是对的,已更正,但不幸的是,它不会影响表的生成。数组是唯一的工作时间(不为零)。见:
echo '<td>'.(isset($worktime['time'])?$worktime['time']:'0').'</td>';
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