簡體   English   中英

如何格式化MySQL輸出中的第一行與PHP中的所有后續行不同?

[英]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>&nbsp;</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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM