2013-07-14 50 views
-1

我怎樣才能找到最後一個帖子,而不是把<hr>放在它下面?在foreach查詢中查找最後一行

<?php foreach($db->query("SELECT * FROM news") as $row): ?> 
<div class="NewsHeadline"> 
<div class="NewsDate"><?php echo $date; ?> - </div> 
<div class="NewsTitle"><?php echo $title; ?></div> 
</div> 

<div class="NewsBody"> 
<?php echo $body; ?> 
</div> 

<hr> 
<?php endforeach ?> 
+1

而....你有什麼試過? –

+0

如果您只想要最後一個條目,請使用ORDER BY子句和限制來修改您的查詢。 –

+1

如果您的意思是您在每個條目之後但最後一個條目之後都需要'


';反向邏輯,並把'
'__before__每個條目__except__第一 –

回答

2

設置等於1的計數器,該計數器遞增每一輪中,並檢查它是否等於$查詢陣列的count()返回。如果是這樣,你就在上一輪!

<?php 
    $counter = 1; 
    $total = count($db->query("SELECT * FROM news")); 
?> 
<?php foreach($db->query("SELECT * FROM news") as $row): ?> 
    <div class="NewsHeadline"> 
     <div class="NewsDate"><?php echo $date; ?> - </div> 
     <div class="NewsTitle"><?php echo $title; ?></div> 
    </div> 

    <div class="NewsBody"> 
     <?php echo $body; ?> 
    </div> 
    <?php if($counter != $total){ 
    ?> 
     <hr> 
    <?php 
    } 

    ?> 

<?php $counter++; ?> 
<?php endforeach ?> 
1

可以轉換爲普通for循環,然後比較$ i到您的查詢結果的大小:

<?php 
    $news = $db->query("SELECT * FROM news"); 

    for($i=0; $i<sizeof($news);$i++){ ?> 
     <div class="NewsHeadline"> 
      <div class="NewsDate"><?php echo $date; ?> - </div> 
      <div class="NewsTitle"><?php echo $title; ?></div> 
     </div> 

     <div class="NewsBody"> 
      <?php echo $body; ?> 
     </div> 

     <?php if(($i+1) < sizeof($news)) echo '<hr>'; ?> 
<?php } ?> 
2

一個解決辦法是建立一個數組,然後使用join

<?php 
$arr=array(); 
foreach($db->query("SELECT * FROM news") as $row): 
    $arr[] = '<div class="NewsHeadline"><div class="NewsDate">'.$date 
     .' - </div><div class="NewsTitle">'.$title' 
     .</div></div><div class="NewsBody">'.$body.'</div>'; 
endforeach 
echo join("<hr>",$arr);  
?> 
0

如果您在循環之前獲得行數,則可以檢查計數並避免添加HR。

$rows = $db->query("SELECT * FROM news"); 
$row_count = $rows.count(); 
$iter = 0; 
foreach($rows as $row) 
{ 
    //... 
    if ($iter < $row_count) 
    { 
     // render hr 
    } 
    $iter++; 
} 

你也可以去一個純CSS的方法:

div.containerClass:last-child hr { display:none; } 

其中「containerClass」將是任何元素的發佈代碼坐在裏面。

+0

FYI:未經測試的僞代碼那裏。 –

+0

@在上帝我信任的例子是正確的PHP,我的不是(錯誤使用count()) –