2012-07-11 124 views
0

我有以下代碼:PHP循環解決方案

<?php 

$manifest_query = tep_db_query("select o.franchise_id, o.orders_id, o.customers_id, o.delivery_name, o.delivery_street_address, o.delivery_city, o.delivery_postcode, o.delivery_state, o.customers_telephone, o.date_purchased from " . TABLE_ORDERS . " o, " . TABLE_ORDERS_TOTAL . " ot where o.franchise_id = '" . (int)$franchise_id . "' and o.orders_id = ot.orders_id and ot.class = 'ot_total' and o.orders_status = '5'"); 

while ($manifest = tep_db_fetch_array($manifest_query)) 
{ 
    $products_query = tep_db_query("select orders_products_id, orders_id, products_id, products_model, products_name, products_quantity from " . TABLE_ORDERS_PRODUCTS . " where orders_id = '" . (int)$manifest['orders_id'] . "'"); 
    $products = tep_db_fetch_array($products_query); 
    ?> 
    <tr> 
    <td height="50" align="center"><?php echo $manifest['orders_id'] ;?></td> 
    <td cellpadding="2"><?php echo $manifest['delivery_name'] .'<br> '. $manifest['delivery_street_address'] .'<br> '. $manifest['delivery_city'].'<br> '. $manifest['delivery_postcode'].'<br> '. $manifest['delivery_state'].'<br> '. $manifest['customers_telephone'] ;?></td> 
    <td><?php echo $products['products_quantity'] . '&nbsp;x&nbsp;' . $products['products_name'] . '<br> ' . '&nbsp;&nbsp;'.$products['products_model'];?></td> 
    <?php 
} 
?> 

的$打印產品被分配到訂單ID在第3列的產品。但它只打印分配給訂單的第一個產品,即使有多個產品分配給訂單。任何人都知道如何打印order_id的所有產品?

+0

嘗試print_r($ products);在拳頭&檢查你的while循環too.It不關閉 – heyanshukla 2012-07-11 11:41:02

+0

乍一看,我看到你的while循環沒有關閉。 – F0G 2012-07-11 11:41:08

+0

對不起,忘了在我的文章上關閉 – user1506375 2012-07-11 11:44:13

回答

1

您需要嵌套一個while循環。您只需調用第一行,因爲您只有一個循環。

<?php 

$manifest_query = tep_db_query("select o.franchise_id, o.orders_id, o.customers_id, o.delivery_name, o.delivery_street_address, o.delivery_city, o.delivery_postcode, o.delivery_state, o.customers_telephone, o.date_purchased from " . TABLE_ORDERS . " o, " . TABLE_ORDERS_TOTAL . " ot where o.franchise_id = '" . (int)$franchise_id . "' and o.orders_id = ot.orders_id and ot.class = 'ot_total' and o.orders_status = '5'"); 

while ($manifest = tep_db_fetch_array($manifest_query)){ 

$products_query = tep_db_query("select orders_products_id, orders_id, products_id, products_model, products_name, products_quantity from " . TABLE_ORDERS_PRODUCTS . " where orders_id = '" . (int)$manifest['orders_id'] . "'"); 
    while($products = tep_db_fetch_array($products_query)) 


    ?> 

     <tr> 
     <td height="50" align="center"><?php echo $manifest['orders_id'] ;?></td> 
     <td cellpadding="2"><?php echo $manifest['delivery_name'] .'<br> '. $manifest['delivery_street_address'] .'<br> '. $manifest['delivery_city'].'<br> '. $manifest['delivery_postcode'].'<br> '. $manifest['delivery_state'].'<br> '. $manifest['customers_telephone'] ;?></td> 


     <td><?php echo $products['products_quantity'] . '&nbsp;x&nbsp;' . $products['products_name'] . '<br> ' . '&nbsp;&nbsp;'.$products['products_model'];?></td> 



    <?php 
    } 
} 
?> 
+0

+1以清楚地理解他的問題。 – 2012-07-11 11:51:40

+0

這個打印命令兩次,一個產品在一行中,然後用下一個產品重複排序。反正打印所有產品都是按順序排列的? – user1506375 2012-07-11 11:58:08

+0

好吧,我已經告訴你如何解決你的問題如果我爲你做了整件事,你會變得懶惰! – Pete 2012-07-11 11:59:33

0

那麼在每個while循環,你做一個新的數據庫查詢,所以舊的被丟棄,這意味着$產品將只擁有第一個條目。在$ product的原始while循環中創建另一個while循環。