如何显示未修剪的最新帖子并修剪其余部分?

时间:2016-07-19 19:52:07

标签: php 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>

3 个答案:

答案 0 :(得分:1)

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

你需要一个条件和方法来知道何时修剪,以便在你的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>

答案 1 :(得分:1)

首先: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']));

答案 2 :(得分:0)

就像马克B和书呆子说的那样。你需要知道最后一篇文章的位置。一种方法:

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

有了这些,你知道你有多少新闻。

在你之前:

$i = 0;

在你的时间之后,增加$ i:$i++;

然后测试$ i是否等于新闻的数量,如果是,你在最后的帖子:

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