誰かがこれについて私を助けてくれることを願っています...
これが私のクエリです:
$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
その理由は、上記の各セットのフォーマットが異なるためです。個別のクエリを簡単に実行できますが、理想的ではありません。さらに、後でページネーションが台無しになります。
では、その 1 つのクエリでこれらのループを実行するにはどうすればよいでしょうか。どんな助けでも大歓迎です!ありがとう。
///// アップデート /////
これは私が今持っているものであり、まさに私が望むものを提供しますが、行31〜42も表示します(現在、DBには存在しません):
$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++;
}