ホームページ > バックエンド開発 > PHPチュートリアル > 前回の記事と次回の記事のPHP実装方法例まとめ

前回の記事と次回の記事のPHP実装方法例まとめ

高洛峰
リリース: 2023-03-05 13:12:01
オリジナル
1651 人が閲覧しました

この記事の例では、前の記事と次の記事をPHPで実装する方法を分析しています。参考までに皆さんにも共有してください。詳細は以下の通りです:

php は前の記事と次の記事を実装しています。これは主に SQL を使用して現在の ID に基づいて判断し、現在の ID またはデータの前のデータを除外します。 ID の後は非常に簡単なので、詳細を見てみましょう。

Web記事の前後記事のSQL文の書き方を実装します。

現在の記事の ID は $article_id で、現在の記事の対応するカテゴリの ID は $cat_id です。すると、前の記事は次のようになります。

SELECT max(article_id) FROM article WHERE article_id < $article_id AND cat_id=$cat_id;
ログイン後にコピー

この SQL ステートメントを実行すると、$max_id が取得されます。

SELECT article_id, title FROM article WHERE article_id = $max_id;
ログイン後にコピー

それを単純化して変換します。 サブクエリは次のとおりです:

SELECT article_id, title FROM article WHERE article_id = (SELECT max(article_id) FROM article WHERE article_id < $article_id AND cat_id=$cat_id);
ログイン後にコピー

次の記事です。コードは次のとおりです:

SELECT min(article_id) FROM article WHERE article_id > $article_id AND cat_id=$cat_id;
ログイン後にコピー

この SQL ステートメントを実行した後、$min_id を取得し、次に:

SELECT article_id, title FROM article WHERE article_id = $min_id;
ログイン後にコピー

を単純化して、それをサブクエリに変換します:

SELECT article_id, title FROM article WHERE article_id = (SELECT min(article_id) FROM article WHERE article_id > $article_id AND cat_id=$cat_id);
ログイン後にコピー

最後に、次のステートメントを使用するのを好む友人がたくさんいます


前の記事では、コードは次のとおりです:

select id from table where id10 limit 0,1;
ログイン後にコピー

これで間違いなく問題はありません。しかし、パフォーマンスはあまり良くありません。

SQL ステートメントの最適化:

これを実現するには、union all を使用できます。1 つのステートメントで 3 行のデータをフェッチしますが、前提条件として、3 つのクエリのフィールドが同じである必要があります。このクエリの結果の行は前の記事、2 行目は現在の記事、3 行目は次の記事です:

(select id from table where id < 10 order by id asc limit 1) union all (select id from table where id = 10) union all (select id from table where id > 10 order by id desc limit 1);
ログイン後にコピー

それでは、cms での phpcms 実装の例をいくつか見てみましょう。前の記事次の記事.

現在閲覧中の記事idを取得:

$id = isset($_GET[&#39;id&#39;]) > 0 ? intval($_GET[&#39;id&#39;]) : "";
ログイン後にコピー

次の記事:

$query = mysql_query("SELECT id,title FROM article WHERE id>&#39;$id&#39; ORDER BY id ASC LIMIT 1");
$next = mysql_fetch_array($query);
ログイン後にコピー

前の記事:

$query = mysql_query("SELECT id,title FROM article WHERE id <&#39;$id&#39; ORDER BY id DESC LIMIT 1");
$prev = mysql_fetch_array($query);
ログイン後にコピー

この記事がPHPプログラミングの皆さんのお役に立てれば幸いです。

前回と次回の記事の PHP 実装方法と例については、関連記事の PHP 中国語 Web サイトに注目してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート