[英]How to format 1st row in MySQL output differently from all following rows in PHP?
我有一個MySQL查詢,正在返回我需要的結果。 但是,我想根據具體用例清理一下輸出。 具體來說,我想從輸出中刪除一個列,以便它只在第一次從數據庫中提取時出現。 這是我得到的輸出類型的快速示例:
Event A - workshop 1
Event A - workshop 2
Event A - workshop 3
Event B - workshop 1
Event B - workshop 3
Event C - workshop 2
Event D - workshop 1
Event D - workshop 2
etc
這就是我想要的:
Event A
workshop 1
workshop 2
workshop 3
Event B
workshop 1
workshop 3
Event C
workshop 2
Event D
workshop 1
workshop 2
所以,基本上,我只想看一次“事件A”標題,即使它是研討會記錄的一部分。
這是我正在使用的php代碼(在這種情況下,“campaigntitle”是我只希望每組看到一次的列。“assettitle”將顯示在查詢返回的每一行中):
<?php do { ?>
<tr>
<td><a href="detail-nd.php?recordID=<?php echo $row_assetslist['assetid']; ?>"> Details</a> <a href="assetupdate-nd.php?recordID=<?php echo $row_assetslist['assetid']; ?>">edit</a> delete</td>
<td><?php echo $row_campaignassetjoin['campaigntitle']; ?></td>
<td><?php echo $row_campaignassetjoin['assettitle']; ?></td>
<td><?php echo $row_campaignassetjoin['assettype']; ?></td>
</tr>
<?php } while ($row_campaignassetjoin = mysql_fetch_assoc($campaignassetjoin)); ?>
這是文檔頭中相關的mysql查詢:
mysql_select_db($database_campaignarchive, $campaignarchive);
$query_campaignassetjoin = "SELECT assets.*, campaign.* FROM campaign JOIN assets ON assets.campaignid=campaign.campaignid ORDER BY campaign.campaignid DESC";
$campaignassetjoin = mysql_query($query_campaignassetjoin, $campaignarchive) or die(mysql_error());
$row_campaignassetjoin = mysql_fetch_assoc($campaignassetjoin);
$totalRows_campaignassetjoin = mysql_num_rows($campaignassetjoin);
首先,讓我做一個必要的觀察,你真的不應該使用mysql_ *函數。 您應該使用PDO或mysqli_ *
這就是我要做的事情:
更新為了使其正常工作,您的結果必須按廣告系列標題進行排序
<?php $lastCampaign = ''; ?>
<?php foreach($rows as $row): ?>
<tr>
<td><a href="detail-nd.php?recordID=<?php echo $row['assetid']; ?>"> Details</a> <a href="assetupdate-nd.php?recordID=<?php echo $row['assetid']; ?>">edit</a> delete</td>
<?php if($lastCampaign != $row['campaigntitle']): ?>
<td><?php echo $row['campaigntitle']; ?></td>
<?php else: ?>
<td> </td>
<?php endif; ?>
<td><?php echo $row['assettitle']; ?></td>
<td><?php echo $row['assettype']; ?></td>
</tr>
<?php $lastCampaign = $row['campaigntitle']; ?>
<?php endforeach; ?>
我沒有測試過這個,但你明白了
這是一個非常常見的應用程序,您需要按特定列對輸出進行分組。 有很多方法可以做到這一點。 由於您使用的是PhP,因此首先要確保檢索按“事件”排序的記錄。 然后保留一個名為$ old_event的變量,並將其與剛剛獲取的事件進行比較。 如果不同,則輸出事件名稱並將$ old_event設置為新獲取的事件。 如果不是,則僅輸出其他列。
您也可以使用帶有group by子句的select,但是如果要按照上面的說明進行編碼,則不需要...按事件排序的簡單選擇應該這樣做。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.