2016-10-09 154 views
0

我有一個數據庫表的行中可以有相同的值的字段。這是一個具有訂單號的「交易ID」字段。這些行可以具有相同的訂單號,但是對於每個訂購的商品不同的產品ID。PHP foreach循環和具有相同值的字段分隔的行

我在查詢數據庫就好了,並輸出數據。但是,我想要分開相同的事務標識並對該數據進行一些不同的操作。我只是想出了一些原因。

例如:

ID  txn_id  product_id  Product_name  field5 
-------- ---------  -----------  ---------   --------- 
1   265   98    Product Name 
2   265   99    Product Name 
3   244   98    Product Name 

UPDATE

所以這裏仍然需要幫助,我更新的代碼。我現在有兩個疑問。一個檢查重複項並將它們放入一個數組中,然後另一個用if語句循環遍歷數據庫表,檢查匹配的事務ID號。

第一查詢:

$myquery = $wpdb->get_results("SELECT txn_id , COUNT(*) FROM test_table HAVING COUNT(*) > 1"); 
global $TXN;      
foreach($myquery as $query){ 
    $TXN= $query->txn_id; 
} 

然後在主查詢/循環

global $wpdb; 
$prepare_query = $wpdb->get_results("SELECT * FROM test_table"); 

foreach($prepare_query as $data){ 
    $txn_id = $data->txn_id; 
    $product_id = $data->product_id; 
    $product_name = $data->product_name; 
    ?> 
    <table class="shop_table my_account_orders" width="100%"> 
     <thead> 
      <tr> 
       <th align="left">Order #</th> 
       <th align="left">Product ID</th> 
       <th align="left">Product Name</th> 
      </tr> 
     </thead> 

     <tbody> 
      <tr class="order"> 
       <td> 
        <?php echo "#" .$txn_id; ?> 
        <?php 
         if($txn_id === $TXN){ 
          echo'YES'; 
         } 
         ?> 
       </td> 
       <td> 
        <?php echo $product_id; ?> 
       </td> 
       <td> 
        <?php echo $product_name; ?> 
       </td> 
      </tr> 
     </tbody> 
    </table> 
<?php } ?> 

這將輸出:

<table width="100%"> 
 
\t <thead> 
 
\t \t <tr> 
 
\t \t <th align="left">Order #</th> 
 
\t \t <th align="left">Product ID</th> 
 
\t \t <th align="left">Product Name</th> 
 
\t \t </tr> 
 
\t </thead> 
 
\t <tbody> 
 
\t \t <tr> 
 
\t \t \t <td>#265 YES</td> 
 
\t \t \t <td>98</td> 
 
\t \t \t <td>Product Name</td> 
 
\t \t </tr> 
 
\t </tbody> 
 
</table> 
 

 
<table width="100%"> 
 
\t <thead> 
 
\t \t <tr> 
 
\t \t <th align="left">Order #</th> 
 
\t \t <th align="left">Product ID</th> 
 
\t \t <th align="left">Product Name</th> 
 
\t \t </tr> 
 
\t </thead> 
 
\t <tbody> 
 
\t \t <tr> 
 
\t \t \t <td>#265 YES</td> 
 
\t \t \t <td>99</td> 
 
\t \t \t <td>Product Name</td> 
 
\t \t </tr> 
 
\t </tbody> 
 
</table> 
 

 
<table width="100%"> 
 
\t <thead> 
 
\t \t <tr> 
 
\t \t <th align="left">Order #</th> 
 
\t \t <th align="left">Product ID</th> 
 
\t \t <th align="left">Product Name</th> 
 
\t \t </tr> 
 
\t </thead> 
 
\t <tbody> 
 
\t \t <tr> 
 
\t \t \t <td>#244</td> 
 
\t \t \t <td>98</td> 
 
\t \t \t <td>Product Name</td> 
 
\t \t </tr> 
 
\t </tbody> 
 
</table>

當我想要得到的是:

<table width="100%"> 
 
\t <thead> 
 
\t \t <tr> 
 
\t \t <th align="left">Order #</th> 
 
\t \t <th align="left">Product ID</th> 
 
\t \t <th align="left">Product Name</th> 
 
\t \t </tr> 
 
\t </thead> 
 
\t <tbody> 
 
\t \t <tr> 
 
\t \t \t <td>#265 YES</td> 
 
\t \t \t <td>98</td> 
 
\t \t \t <td>Product Name</td> 
 
\t \t </tr> 
 
\t \t <tr> 
 
\t \t \t <td>#265 YES</td> 
 
\t \t \t <td>99</td> 
 
\t \t \t <td>Product Name</td> 
 
\t \t </tr> 
 
\t </tbody> 
 
</table> 
 

 
<table width="100%"> 
 
\t <thead> 
 
\t \t <tr> 
 
\t \t <th align="left">Order #</th> 
 
\t \t <th align="left">Product ID</th> 
 
\t \t <th align="left">Product Name</th> 
 
\t \t </tr> 
 
\t </thead> 
 
\t <tbody> 
 
\t \t <tr> 
 
\t \t \t <td>#244</td> 
 
\t \t \t <td>98</td> 
 
\t \t \t <td>Product Name</td> 
 
\t \t </tr> 
 
\t </tbody> 
 
</table>

回答

0

我最終這樣做:

$myArray = $wpdb->get_results("SELECT * FROM " . $license_table); 
    $newArray=array();     
    foreach($myArray as $val){ 
     $newKey=$val->txn_id; 
     $newArray[$newKey][]=$val; 
    } 
    print_r($newArray); 

    foreach ($newArray as $key => $array){ 
     ?> 
     <table border="0" cellpadding="0" cellspacing="0"> 
      <tr class="header"> 
       <td width="73%" valign="top">KEY</td> 
       <td width="73%" valign="top">Product Id</td> 
       <td width="27%" valign="top">Product Name</td> 
      </tr> 
       <?php 
       foreach($array as $values) { 
        ?> 
      <tr class="details"> 
       <td width="27%" valign="top"><?php echo $key; ?></td> 
       <td width="73%" valign="top"><?php echo $values->product_id; ?></td> 
       <td width="27%" valign="top"><?php echo $values->product_name ?></td> 
      </tr> 
       <?php } ?> 
     </table> 
     <?php 
    } 
0

要獲得複製ID,您就可以使用:

SELECT id,txn_id , COUNT(*) 
FROM table_name 
HAVING COUNT(*) > 1 

與你的表的名稱替換課程表名的

+0

所以,爲了讓它工作,我在我的客戶訂單循環之外創建了另一個查詢,並將其變爲一個變量數組,然後在我創建的訂單循環中,並且如果語句檢查任何事務標識是否匹配在數組中重複。爲了測試這個,我在每個重複的訂單旁邊輸出「TRUE」並且它工作。不過,我仍然需要將這些數據分開併合併產品ID。 –

+0

基本上,在那個主循環中,我想要將具有相同事務標識的兩個項目分離爲不同於不匹配的事務標識的單獨輸出輸出。 –

相關問題