2011-04-14 72 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

相关问题