0

だから、これは私のお尻を少し蹴っています。簡単な説明は、2 つのテーブル (機器と ehours) があることです。基本的に、機器は静的なままでプロジェクトに転送され、使用状況が毎日追跡されます。equipment.eid機器の一意の識別子であり、各 ehours エントリで使用されます。

以下は、出力を作成するために使用しているクエリです。取得している出力は正しくソートされていますが、適切に出力する方法がわかりません。

SELECT e.cid, e.eid, h.pid, h.hdate, e.eqid, e.name, e.make, e.model, h.hours, e.uid
FROM equipment e
LEFT JOIN ehours h on h.eid = e.eid
AND MONTH(h.hdate) = $data[month] AND YEAR(h.hdate) = $data[year]
ORDER BY cid ASC, eid ASC, pid ASC, hdate ASC

私が抱えている問題は、特定の月に機器が 2 つの別々のプロジェクトにある可能性があることです。クエリは次のことを示しています...

cid | eid | pid  | hdate      | eqid | name     | make        | model | hours | uid
4   | 55  | 1    | 2012-11-01 | E8   | Forklift | Clark CGP25 |       | 5     | 1
4   | 55  | 1    | 2012-11-07 | E8   | Forklift | Clark CGP25 |       | 5     | 1
4   | 55  | 1    | 2012-11-10 | E8   | Forklift | Clark CGP25 |       | 2     | 1
4   | 55  | 1    | 2012-11-13 | E8   | Forklift | Clark CGP25 |       | 3     | 1
4   | 55  | 4    | 2012-11-13 | E8   | Forklift | Clark CGP25 |       | 2     | 1

出力には、その月の適切な日に出力される日付の 2 番目のディメンションが必要です。最終的な表示には、その月のすべての日付が表示されます。たとえば、最初のものは 1 のeid1 行に出力され、月の適切な日に があります。その後、同じ装備で4のラインがあります。pidhourspid

したがって、とにかく、各行を出力するときにウォークスルーできる配列の 2 番目の次元に日付を作成する必要があります。それとも、各日付に関連付けられている時間を把握するための 3 番目の次元でしょうか? これを試みるためにいくつかのphpメソッドを調べましたが、これまでのところ成功していません。どんな助けでも大歓迎です。うわーこれは小説になりました。

編集:

以下は、出力がどうあるべきかです...

pid | eqid | name     | make        | 11-01 | 11-02 | ... | 11-07 | ... | 11-10 | ... | 11-13
1   | E8   | Forklift | Clark CGP25 | 5     | 0     | ... | 5     | ... | 2     | ... | 3
4   | E8   | Forklift | Clark CGP25 | 0     | 0     | ... | 0     | ... | 0     | ... | 2

の NULL 値も考慮する必要があります。pid

4

1 に答える 1

0

私があなたが何を求めているのかを理解していると仮定すると、あなたができることは、次のようなそれぞれの日付行を含む各PIDの連想配列を作成することです。

while ($row = mysql_fetch_assoc($res))
{
  $output[$row['pid']][] = $row;
}

次に、新しいアレイを確認する必要があります

foreach ($output as $job)
{
  foreach ($job as $line)
  {
    // do some formatiign here
    print_r($line)
  }
  echo "<hr>"; // this is the line or whatever seperator you need
}

お役に立てれば :)

于 2012-11-20T04:30:54.793 に答える