2017-07-17 46 views
2

我有两个表“table1”和“table2”。在“表1”为项目名称和“表2”是日期和项目接受数量PHP MYSQL Foreach日期列表

SQL:

SELECT t2.title, t1.price, t1.quantity, t1.date 
        FROM table2 t2 
        JOIN table1 t1 
        ON t1.id = t2.t_id 
       WHERE t2.date BETWEEN '2017-07-12' AND '2017-07-15' 

现在我得到这样的结果:

title date quantity 
item1 2017-07-12 100 
item2 2017-07-12 120 
item3 2017-07-12 150 
item1 2017-07-13 200 
item2 2017-07-13 320 
item3 2017-07-13 450 

但我希望得到的结果像这样: enter image description here

现在我有这样的代码在PHP中:

  <?php foreach ($AmmunitionDate as $key => $row): ?> 
      <tr> 
       <td> <?=$row['id']?> </td> 
       <td> <?=$row['title']?> </td> 
       <td> <?=$row['quantity']?> </td> 
       <td> </td> 
      </tr> 
      <?php endforeach ?> 

我该如何解决这个问题?

谢谢

+2

尝试从MySQL组织您的结果到多维数组中,日期为数组键 – Raptor

+0

谢谢! @Raptor –

回答

2

尝试像这样的MySQL查询

SELECT t2.title, Group_concat(`t1.date` order by `t1.date`) as date, 
Group_concat(t1.quantity order by `t1.date`) as quantity ,sum(`t1.quantity`) as total 
FROM table2 t2 
JOIN table1 t1 
ON t1.id = t2.t_id 
WHERE t2.date BETWEEN '2017-07-12' AND '2017-07-15' group by `t2.title` 

它产生输出

title date     quantity  total 
item1 2017-07-12,2017-07-13 100,200  300 
item2 2017-07-12 ,2017-07-13 120,320  440 
item3 2017-07-12 ,2017-07-13 450,150  600 

然后爆炸昏迷分隔值并显示它如你所愿。

+0

谢谢,这是最好的解决方案! –

+0

欢迎:) –

0

如果你想保持你的数据库,因为它是让你的生活困难有两种解决方法:

解决方案一:

让两个查询一个项目表一为历史tabe。使用PHP echo,构建一个JavaScript,其中包含JavaScript变量,其中包含MYSQL的结果。比用javascript创建表格。

二(更好的解决方案):

让您得到所有​​你从历史表需要什么,得到的日期的查询。有了这个,你可以制作表格的尺寸(因为你知道在<tr>中有多少<td>)。之后,在后台创建一个AJAX请求,并将更多的表格行添加到历史记录中,并使用另一个名称添加历史记录。

0

首先,您应该处理您的数据并将其传递给数组。

<?php 
foreach($AmmunitionDate as $item){ 
    $arr[$item['title']] = array(
      $item['date'] = array(
       'quantity' = $item['quantity']; 
     ) 
    ) 
} 
?> 

之后,您可以使用任何循环在您的表中回显您的结果。