2013-04-08 36 views
0

我想從兩個表中獲取數據。我在一張桌子上有耐心的姓名和身份證,在其他桌子上有預約時間。如何格式化我使用PHP從兩個表中獲取的數據?

Table1: 
Name Id 
Joe Wang 1234 
Jack Steward 5555 

Table2: 
Id  Month Date 
1234 Jan 15 
1234 Jan 18 
1234 Feb 5 
1234 Mar 1 
1234 Mar 3 
5555 Jan 3 
5555 Apr 4 
5555 Apr 12 

...

我得到的數據:

$stmt = $mysqli->prepare("SELECT Name, 
      Table1.Id, 
      Month, 
      Date 
      FROM Table1 JOIN Table2 
      WHERE Table1.Id=Table2.Id"); 

我怎樣才能得到這樣的輸出:

Joe Wang 
1234 
    Jan 
     15 
     18 
    Feb 
     5 
    Mar 
     1 
     3 
Jack Steward 
5555 
    Jan 
     3 

...

我用的是下面的PHP代碼,它會至少有一個名字,我D,月多次,

$stmt->execute(); 

$result = $stmt->get_result(); 

while($row = $result->fetch_assoc()){ 
printf("\t<p>Name: %s Id: %s %s %s</p>\n", 
    htmlspecialchars($row["Name"]), 
    htmlspecialchars($row["Id"]), 
      htmlspecialchars($row["Month"]), 
    htmlspecialchars($row["Date"]) 
    ); 
} 

在此先感謝!

+1

您使用一個循環,就像您一樣,然後跟蹤每個「列」並僅在其更改時輸出新的列標題。不,我們不會爲你寫。這是你的工作。寫一些東西,然後我們會盡力幫助解決它。 – 2013-04-08 03:44:15

+1

使用'[$ id] [$ month] [] = $ date;' – 2013-04-08 03:44:45

+0

創建3d數組實際的數據集越大,項目越多。我不能簡單地使用3D數組。請問如何跟蹤每個「欄目」? – juju 2013-04-08 05:00:16

回答

0

對於分組而言,第一列是Id。所以你做它的主數組,併爲每個不同的ID,設置名稱一次。第二個分組列是Month,因此您必須爲ID中的每個循環內的每個數組創建一個數組,併爲每個日期創建一個條目。

幫助你在這個任務中,我建議:

  • 添加ORDER BY Id, Month子句中查詢,
  • 做陣列的var_dump它已經構建其結構與期望的結果進行比較後, 。
相關問題