我希望最新的帖子显示完整而不是修剪它,但其他帖子将被修剪。我不确定该怎么做,所以我来了! 这是一些代码!
<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>
答案 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_
或PDO
。 mysql_
函数在几年前已被弃用,并且在最新版本的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]);
}