2011-04-14 51 views
1

好的,我知道這是愚蠢的,但我卡住了,我需要一個踢在腦海中。 我有3個表(訂單的OrderItems,產品),我用2留在一個查詢,顯示在客戶部分訂單的歷史外連接:MySQL多重連接 - 我如何顯示數據? (使用PHP)

SELECT * FROM orderitems oi, orders o 
LEFT OUTER JOIN product p ON p.dbarcode = oi.orderitems_item 
WHERE o.order_code = oi.orderitems_ordercode 
    AND oi.orderitems_ordercode = '".$_GET['ordercode']."'` 

我可以爲每個產品顯示一行表order_items,但我似乎無法顯示(回聲)字段orders.order_amount中保存的總金額,我認爲這與該字段有多個實例或任何事實有關。由於連接了多個表,我該如何顯示數據?對於Quassnoi

編輯:通過結果

我環路,併爲每一個錶行,並在循環後,我想要顯示的一般總:

<? do { ?> 
    <tr> 
    <td><? echo $row_OrderItems['dbarcode']; ?></td> 
    <td><? echo $row_OrderItems['name']; ?></td> 
    <td><? echo $row_OrderItems['orderitems_quantity']; ?></td> 
    <td><? echo $row_OrderItems['price']; ?></td> 
    </tr> 
    <? } while ($row_OrderItems = mysql_fetch_assoc($OrderItems)); ?> 

    <tr> 
    <td colspan="5">Total order amount (incl. shipping and handling): &euro; <? echo $row_OrderItems['order_amounteuro']; ?></td> 
    </tr> 
+0

會在SELECT幫助中添加「o.order_amount AS order_amount」嗎? – Marco 2011-04-14 11:49:51

+0

您需要在while循環結束之前存儲總數。 – bumperbox 2011-04-14 12:33:39

+0

是的,我意識到我不能顯示總數的原因是因爲它在循環之外,但是我需要在那裏顯示它,而不是在重複區域內。有任何想法嗎? – bikey77 2011-04-14 13:45:26

回答

1
<? do { ?> 
    <tr> 
    <td><? echo $row_OrderItems['dbarcode']; ?></td> 
    <td><? echo $row_OrderItems['name']; ?></td> 
    <td><? echo $row_OrderItems['orderitems_quantity']; ?></td> 
    <td><? echo $row_OrderItems['price']; ?></td> 
    </tr> 
    <? 
$total = $row_OrderItems['order_amounteuro']; // store the total, before you loop past the last row 
} while ($row_OrderItems = mysql_fetch_assoc($OrderItems)); ?> 

    <tr> 
    <td colspan="5">Total order amount (incl. shipping and handling): &euro; <? echo $total; ?></td> 
    </tr> 
+0

是的,我有,我使用print_r,我可以正確地看到所有的數據。 – bikey77 2011-04-14 12:01:42

+0

@ bikey77需要看到的PHP代碼,以進一步幫助 – bumperbox 2011-04-14 12:15:59

3

o.order_amount將反覆在每一行中,只取第一個。沒有mysql_real_escape_string

oi.orderitems_ordercode = '".$_GET['ordercode']."'` 

,當然,千萬不要用這個。

+0

是的,我確實對輸入進行了消毒,我只是以上述爲例!我喜歡這個卡通地帶! :) – bikey77 2011-04-14 11:55:45

+0

雖然忘了問,我怎麼只顯示第一個實例?如果我只是回顯出該字段,即echo $ row_orderinfo('order_amout'),雖然數據已被提取(我可以看到它與print_r),但它沒有顯示任何內容 – bikey77 2011-04-14 12:00:17

+0

@ bikey77:請發佈您的代碼示例原帖) – Quassnoi 2011-04-14 12:04:48

0

只是一個供參考,您的發言的這一部分:

SELECT * FROM orderitems oi, orders o 
LEFT OUTER JOIN product p ON p.dbarcode = oi.orderitems_item 

是獲取一切從orderitemsordersproducts。用你想要的所有字段的表前綴*,或者重寫它以提取特定的字段。

+0

我明白了你的意思,但是沒有條件「AND oi.orderitems_ordercode ='」。$ _ GET ['ordercode']。''「做這個工作,只需從數據庫中提取特定記錄? – bikey77 2011-04-14 11:57:16