Как я могу показать последний пост без обрезки и обрезать остальное?

Я хотел бы, чтобы последний пост показывался полностью, а не обрезался, но тогда остальные посты будут обрезаны. Я не уверен, как это сделать, вот и я!
Вот немного кода!

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

-1

Решение

Прежде всего: не использовать mysql_ функции, но mysqli_ или же PDO, mysql_ функции устарели несколько лет назад и больше не поддерживаются в самых последних версиях PHP.

Есть несколько способов, описанных в ответах на этот вопрос о том, как определить последнюю строку набора результатов.

Я не буду давать решение на основе устаревших mysql_ функции; Вы должны сначала преобразовать свой код.

Если вы идете на mysqli_ и получить связь в $ жулик, тогда вы можете сделать это:

$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']));
1

Другие решения

Это предположение, что последний — это ваш первый результат, который основан на запросе.

Вам нужно условие и способ узнать, когда обрезать, так что вне вашего цикла while добавьте:

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

Затем в верхней части цикла

$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

Это как сказал Марк Б и ботаник. Вам нужно знать, где находится последний пост. Один из способов сделать это:

$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]);
}
0
По вопросам рекламы [email protected]