如何显示最新的 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_
或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']));
正如 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]);
}
我想让最新的 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_
或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']));
正如 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]);
}