如何显示最新的 post untrimmed 和 trim 其余的?

How can I show the latest post untrimmed and trim the rest?

我想让最新的 post 完整显示而不是 trim,但其他 post 会 trim 显示。我不确定该怎么做,所以我来了! 这是一些代码!

<div id="news">
    <?php

    $query=mysql_query("SELECT NewsID, Title, Content, Author, 
                        date_format(Date, '%m/%d/%y') AS Date
                        FROM news ORDER BY NewsID DESC LIMIT 2");

    while($row=mysql_fetch_assoc($query)){
        echo "<div class=\"news_item\">
                <div class=\"title\">
                    <a href=\"article.php?newsID=$row[NewsID]\">$row[Title]</a>
                </div>
                <div class=\"date\">
                    Posted: $row[Date] by $row[Author]
                </div>
                <div class=\"news_content\">
                    <p>".trimNewsContent($row[Content])."</p> 
                </div>
              </div>";
    }
    ?>
</div>

这是假设最新是您的第一个结果,基于查询似乎是这种情况。

你需要一个条件和一种方法来知道什么时候 trim 所以在你的 while 循环之外添加:

$shouldTrim = false; //Sine the latest is your first item you do not want to trim first

然后在 while 循环的顶部

$content = "";
if($shouldTrim){//Anything but the latest
   $content = trimNewsContent($row[Content]);
} else { //This is your latest
   $content = $row[Content]; //output to full content
   $shouldTrim = true; //Set this to true going forward will trim
}

现在你可以做

<p>".$content."</p>

首先:don't use mysql_ functions,但mysqli_PDOmysql_ 函数在几年前就被弃用了,并且在 PHP 的最新版本中不再受支持。

this question 的答案中描述了几种关于如何检测结果集最后一行的方法。

我不会根据已弃用的 mysql_ 函数给出解决方案;你应该先转换你的代码。

如果您选择 mysqli_ 并在 $con 中建立连接,那么您可以这样做:

$query = mysqli_query($con, "SELECT NewsID, Title, Content, Author, date_format(Date, '%m/%d/%y') AS Date FROM news ORDER BY NewsID DESC LIMIT 2");
// fetch all rows
$rows = mysqli_fetch_all($query); // pass MYSQLI_ASSOC as 2nd argument if needed
foreach($rows as $i => $row) {
    $content = $i == count($rows)-1 ? $row['Content'] : trimNewsContent($row['Content']));
    echo ".... // etc
        $content
         ....// etc
    ";
}

如果目标是区别对待第一条记录,那么只需相应地更改条件即可:

    $content = $i == 0 ? $row['Content'] : trimNewsContent($row['Content']));

正如 Marc B 和 nerdlyist 所说。您需要知道最后一个 post 在哪里。一种方法:

$query2 = mysql_query("SELECT count(*) AS nb_news FROM news");
$nbNews = mysql_fetch_array($query2);

有了这个你就知道你有多少新闻了。

在你之前:

$i = 0;

稍等片刻后,增加 $i :$i++;

然后测试$i是否等于新闻条数,如果是,则你排在最后post:

if($i == $nbNews['nb_news'])
{
    $content = $row[Content];
}
else
{
    $content = trimNewsContent($row[Content]);
}