我有一個名爲table
Orders
,和另一個叫orderProducts
。凝結多行成一個單一的,許多情況下
orderProducts
包含CustomerID
字段,listCustomerOrders()
然後在DB
中查找匹配的行。返回的輸出如下:
array() {
[0]=>
object(Basket)#3 (11) {
["ProductName"]=>
string(17) "Green Pesto Bagel"
["completeDate"]=>
string(19) "2015-02-25 11:00:00"
}
[1]=>
object(Basket)#4 (11) {
["ProductName"]=>
string(12) "Cheese Bagel"
["completeDate"]=>
string(19) "2015-02-25 11:00:00"
}
[2]=>
object(Basket)#4 (11) {
["ProductName"]=>
string(12) "Salt Beef Bagel"
["completeDate"]=>
string(19) "2015-02-25 11:00:00"
}
[3]=>
object(Basket)#4 (11) {
["ProductName"]=>
string(12) "Veggie Bagel"
["completeDate"]=>
string(19) "2015-02-25 11:00:00"
}
[4]=>
object(Basket)#4 (11) {
["ProductName"]=>
string(12) "Chicken Bagel"
["completeDate"]=>
string(19) "2015-03-25 20:30:00"
}
[5]=>
object(Basket)#4 (11) {
["ProductName"]=>
string(12) "Cheese Salad"
["completeDate"]=>
string(19) "2015-03-25 20:30:00"
}
}
並顯示爲;
------1st order, date:02-25-15 11:00-------
Green Pesto Bagel
Cheese Bagel
Salt Beef Bagel
Veggie Bagel
------2nd order, date:03-25-15 11:00-------
Chicken Bagel
Cheese Salad
我想知道如何處理每orderDate
輸出一個結果,而遍歷每個row
任何附加產品,並將它們添加到陣列。
我可以使用某種計數器通過每個代碼塊迭代,當條件滿足到下一個進步?
這裏有功能,歡呼!
function myAccount(){
require_once('classes/basket.php');
// pull the customers order
$CustomerID = $_SESSION['CustomerID'];
$Limit = 20;
$results = Basket::listCustomersOrders($CustomerID, $Limit);
$orders['orders'] = $results['results'];
include('templates/myAccount.php');
}
public static function listCustomersOrders($CustomerID, $Limit){
$conn = new PDO(DB_DSN, DB_USERNAME, DB_PASSWORD);
$sql = "SELECT Orders.OrderID, Orders.payPalRef, Orders.SubTotal, Orders.completeDate,
OrderProducts.Quantity, OrderProducts.ProductName, OrderStatus.Status
FROM Orders
LEFT OUTER JOIN OrderProducts
ON Orders.OrderID = OrderProducts.OrderID
LEFT OUTER JOIN OrderStatus
ON Orders.OrderStatusID = OrderStatus.OrderStatusID
WHERE CustomerID = :CustomerID AND (Status = 'Cash on Delivery' or Status = 'PayPal') ORDER BY CompleteDate DESC LIMIT :Limit";
$st = $conn->prepare($sql);
$st->bindValue(":CustomerID", $CustomerID, PDO::PARAM_INT);
$st->bindValue(":Limit", $Limit, PDO::PARAM_INT);
$st->execute();
$list = array();
while ($row = $st->fetch()) {
$basket = new Basket($row);
$list[] = $basket;
}
//var_dump($list);
$conn = null;
return (array ("results" => $list));
}
只能看到這個表面上看起來像'group by'的工作 – developerwjk 2015-03-02 19:03:18
請更完整地解釋所需的輸出。 4-5個訂單和3個相同日期的例子會有所幫助。 – 2015-03-02 20:04:13
根據要求@PeterBowers更新了我的問題。 developerwjk,我看了一下gro,似乎看不出它會如何幫助。你介意解釋嗎?謝謝 – atoms 2015-03-02 21:33:18