2016-10-09 118 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

基本上,在那个主循环中,我想要将具有相同事务标识的两个项目分离为不同于不匹配的事务标识的单独输出输出。 –

相关问题