2015-10-29 30 views
0

我正忙於創建站點來控制文檔流。我有以下表mysql多表查詢在發送到查看之前返回排序結果

圖紙 enter image description here

繪製修訂 enter image description here

憑單 enter image description here

客戶 enter image description here

項目細節enter image description here

在我的網站中,用戶可以選擇他們想要發送客戶端的文檔以及它應該去的客戶端。然後該網站應該在一個視圖中顯示該單據的頁碼,日期,客戶端和項目信息一次,並將發送給該​​客戶端的文檔放置在該表格下方的html表格中。

我創建了以下查詢。

SELECT tr.*, d.*, dr.*, cl.*, us.*, proj.project_name 
FROM transmittal_slips AS tr 
    INNER JOIN drawings AS d ON tr.dwg_id = d.dwg_id 
    INNER JOIN dwg_rev AS dr ON d.dwg_id = dr.dwg_id 
    INNER JOIN client AS cl ON tr.client_id = cl.client_id 
    INNER JOIN `user` AS us ON tr.user_id = us.id 
    INNER join projects AS proj ON tr.project_no = proj.project_no 
WHERE tr.slip_num = '".$slip_num."' AND dr.slip_num = '".$slip_num."' 
ORDER BY cl.client_id" 

我的查詢連接的所有表和笨還給了我一個數值數組,我可以傳遞給視圖,但我會那麼需要過濾的陣列來獲得我想要描述的顯示以上。

這是用foreach循環以及一些標籤和html表格生成的當前顯示。 enter image description here

這是我希望顯示數據的方式。 enter image description here

如何過濾或者將它傳遞給視圖,所以我可以用下面這個所列的文件顯示一次訂單號,日期,客戶信息等視圖前每個客戶端對結果進行排序。我想你可以將我想要做的事與來自諸如亞馬遜的在線商店的發票進行比較。

請幫助別人

+0

你可以發佈預期的輸出? –

回答

1

看起來你有一個是對所有行同一些頭信息,然後一些數據,爲每個行的不同。如果你想成爲正式的它,查詢後,你可以這樣做:

$header = rows[0]; 
$list = array_map(function($row) { return array('dwg_id' => $row->dwg_id, ...); }, $rows); 

但實際上所有你需要在視圖中做的是第一渲染根據單列,然後依次通過你的頭所有的行和櫻桃選擇你需要的領域。

+0

感謝您的建議,但我不太清楚如何使用array_map。我仍然是PHP的新手。你的權利,我需要提取頭一次,其餘的我需要跑槽。我不太清楚如何實際做到這一點...... –

+1

array_map需要一個數組,對每個數組做一些操作,然後返回另一個數組。所以如果你的查詢返回一個名爲$ rows的數組,你可以使用array_map來構建另一個包含這些項目子集的數組。上面的函數只創建一個只包含原始字段的新行。 – Jerry

+0

謝謝。管理讓array_map工作。但是你的代碼確實包含一些語法錯誤。這是爲我工作的代碼。'$ data ['list'] = array_map(「modify_array」,$ data ['results']); 函數modify_array($ row) { \t return array('dwg_id'=> $ row ['dwg_id'],...); };' –