2017-07-17 9 views
2

私は2つのテーブル "table1"と "table2"を持っています。 「TABLE1」でアイテムのタイトルで、「表2」に日付とアイテムが数量PHP MYSQL Foreach dateリスト

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でこのコードを持っています210

  <?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

は、それがその後昏睡区切り値を爆発し、あなたが望むようにそれを表示

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 

として出力を生成し、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` 

で、次のように試してみてください。

+0

ありがとう、それは最高のソリューションです! –

+0

あなたは歓迎です:) –

0

あなたはそれがあるとして、あなたのデータベースを維持し、2つのソリューションがあります難しくあなたの人生を作りたいならば:

まず解決策:

すると、アイテムのための2つのクエリの1を作ります履歴表のテーブル1。 PHP echoでは、MYSQLの結果を含むjavascript変数を持つjavascriptを作成します。 Javascriptを使ってテーブルを作るよりも。

セカンド(はるかに良い解決策):

あなたが履歴テーブルから必要なもの全てを取得し、日付を取得するクエリを作成します。これでテーブルの次元を作ることができます(<tr>の中に何個の<td>があるか知っているので)。その後、バックグラウンドでAJAXリクエストを作成し、さらに多くのテーブル行に履歴を追加し、別の行に名前を追加します。

0

まず、データを処理して配列に渡す必要があります。

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

その後、任意のループを使用して結果をテーブルにエコーすることができます。