2017-07-17 45 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']; 
     ) 
    ) 
} 
?> 

之後,您可以使用任何循環在您的表中回顯您的結果。