0

我正在用 php 创建报告。我有一个数据库,其中包含 20 多家商店的订单数据。我想创建一个表来显示商店,然后在商店编号之后的后续行中列出数据。我试图用一个while循环来做到这一点。唯一的问题是,每个商店都有多个条目。我只希望报告列出商店一次。目前它循环遍历并列出所有商店,遍历并再次列出它们。我知道必须有一种方法让它只提取一次商店编号的数据。有没有更好的解决方案而不是 while 循环?

    if ($store_number == '[All_Stores]'){
    $store_query = mysql_query('SELECT * FROM `Orders` WHERE `StoreNumber` <> "0"');
    while($store_row = mysql_fetch_array($store_query)){
        #$store_number = $store_row['StoreNumber'];
        echo    "<tr>";
        echo    "<td align=\"center\"><strong>" . $store_row['StoreNumber'] . "</strong></td>";
and a bunch more data afterwards

产生与此类似的结果,只是它重复了很多次。

http://i.imgur.com/9FzZ8Gp.png

4

2 回答 2

1

首先,我会按商店编号订购(如果有商店名称,可能会更有意义)。然后,当我循环浏览列表时,当我跑到一家新商店时,我会打印它。我只会在找到新商店时打印。

$current_store = null;
while(...) {
     if($current_store != $store_row['StoreNumber']) {
         //print Store
         $current_store = $store_row['StoreNumber'];
     }
}

那种东西。

于 2013-09-22T03:37:13.177 回答
0

尝试:

if ($store_number == '[All_Stores]'){
        $store_query = mysql_query('SELECT * 
              FROM `Orders` 
              WHERE `StoreNumber` <> "0"
              ORDER BY StoreNumber');
      $old_Nbr = "";
      while($store_row = mysql_fetch_array($store_query)){
        if ( $store_row['StoreNumber'] == $old_Nbr ) {
          $store_number = ""
        } else {
          $store_number = $store_row['StoreNumber'];
          $old_Nbr = $store_number;
        }
        echo    "<tr>";
        echo    "<td align=\"center\"><strong>" . $store_number . "</strong></td>";
    and a bunch more data afterwards
于 2013-09-22T03:54:19.870 回答