0

最後の投稿を見つけて、その<hr>下に置かないようにするにはどうすればよいですか?

<?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 ?>
4

4 に答える 4

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);    
?>
于 2013-07-14T17:56:06.377 に答える
2

count()ラウンドごとにインクリメントするカウンターを 1 に設定し、返された $query 配列と等しいかどうかを確認します。もしそうなら、あなたは最後のラウンドにいます!

<?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 ?>
于 2013-07-14T17:52:55.193 に答える
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 } ?>
于 2013-07-14T17:55:31.167 に答える
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」は、投稿されたコードが内部にある要素です。

于 2013-07-14T17:57:04.607 に答える