我正在用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
产生与此类似的结果,只是重复多次。
https://i.stack.imgur.com/8c8eY.png
首先,我会按商店编号排序(如果它在那里并且更有意义,也许是商店名称)。然后,在循环浏览列表时,当我跑到一家新商店时,我会打印它。我只会在找到新店时打印。
$current_store = null;
while(...) {
if($current_store != $store_row['StoreNumber']) {
//print Store
$current_store = $store_row['StoreNumber'];
}
}
那种事情。
尝试:
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