我希望有人可以帮助我解决这个问题...
这是我的查询:
$query_articles = mysql_query("SELECT * FROM articles ORDER BY article_date DESC LIMIT 30") or die(mysql_error());
$row_articles = mysql_fetch_assoc($query_articles);
我想做的是显示所有 30 个结果,但我希望它是这样的:
// Show article #1
// Then loop through articles 2-7
// Then show article #8
// Then loop through articles 9-30
原因是因为我对上面列出的每个集合都有不同的格式。我可以轻松地进行单独的查询,但这并不理想,而且之后会搞砸我的分页。
那么我将如何使用那个查询来执行这些循环呢?任何帮助,将不胜感激!谢谢。
///// 更新 /////
好的,这就是我现在所拥有的,它给了我我想要的东西,但它也显示了第 31-42 行(现在我的数据库中甚至不存在):
$query_articles = mysql_query("SELECT * FROM articles ORDER BY article_date DESC LIMIT 32") or die(mysql_error());
$row_articles = mysql_fetch_assoc($query_articles);
$shown_articles = array(1, 8);
$article_index = 1;
foreach ($row_articles as $article) {
do {
if (in_array($article_index, $shown_articles)) {
echo '<p>'.$article_index.' ';
echo $row_articles['title'];
echo '</p>';
} else {
echo '<p>'.$article_index.' ';
echo $row_articles['title'];
echo '</p>';
}
$article_index++;
} while($row_articles = mysql_fetch_assoc($query_articles));
}
关于它为什么显示额外行的任何想法?此外,如果我使用 mysql_fetch_array,它会上升到第 55 行。
///// 更新 /////
如果其他人需要,这是我的最终代码。我还添加了另一个条件,因为我还想分隔 9-30 行。
$query_articles = mysql_query("SELECT * FROM articles ORDER BY article_date DESC LIMIT 32") or die(mysql_error());
$shown_articles = array(1, 8);
$article_range = range(9, 30);
$article_index = 1;
while($row_articles = mysql_fetch_assoc($query_articles)) {
if (in_array($article_index, $shown_articles)) {
echo '<p>'.$article_index.' ';
echo $row_articles['title'];
echo '</p>';
} elseif (in_array($article_index, $article_range)) {
echo '<p>'.$article_index.' ';
echo $row_articles['title'];
echo ' - 9-30</p>';
} else {
echo '<p>'.$article_index.' ';
echo $row_articles['title'];
echo ' - 2-7</p>';
}
$article_index++;
}