![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
自作PHPブログでの記事を5件ずつ表示する方法について
PHPで自作のブログをサイト等を参考に制作しているのですが、
最新の記事5件ずつ表示させたい場合はどのような記述をすれば良いのでしょうか?
「前ページ」と「次ページ」的なリンクを貼りたいと思っております。
一番最古の記事のページまで行くと「前ページ」リンクも消えるようにしたいのです。
pager等を検索したのですが、いまいち自分の物に組み込むとなるといまいちよくわからなくなります。
LIMITで5件表示まではわかったのですが、「次へ」で6~10件表示の仕方がわかりませんでした。
どのような記述が良いでしょうか、よろしくお願いします。
<?php
$pdo = new PDO("mysql:dbname=blog", "root");
$st = $pdo->query("SELECT * FROM post ORDER BY no DESC LIMIT 5");
$posts = $st->fetchAll();
for ($i = 0; $i < count($posts); $i++) {
$st = $pdo->query("SELECT * FROM comment WHERE post_no={$posts[$i]['no']} ORDER BY no DESC");
$posts[$i]['comments'] = $st->fetchAll();
}
require 't_index.php';
?>
t_index.phpで表示のプログラムを書いています。
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
pagerを使うべきだと思いますけどねぇ。
まぁ一度は練習問題としてやってみるといいかもしれません。5件表示なのに5件しか読まないのでは「次データがあるかどうか」が判断出来ません(最初に全レコード数を取得していれば別ですが、そうではありませんよね)。
ざっくりと書きますので、ソースを机上で追ってみてください。
<?php
$pdo = new PDO("mysql:host=localhost;dbname=test;charset=utf8", "root", "");
// デバッグ用ここから
$st = $pdo->query("truncate table post");
$st->execute();
$st = $pdo->prepare("insert into post(no, post) values(?, ?)");
for ($i = 1; $i < 21; $i++) { // 作成数を変えてデバッグする
$st->execute(array($i, 'post_' . $i));
}
// デバッグ用ここから
$page = isset($_GET['page']) ? intval($_GET['page']) : 1;
if ($page < 1) { $page = 1; }
$perpage = 5; // ページ当りの記事数
$st1 = $pdo->prepare("select * from post order by no desc limit :skip , :read");
$st2 = $pdo->prepare("select * from comment where post_no=:post_no order by no desc");
$skip = ($page - 1) * $perpage;
$read = $perpage + 1;
$st1->bindParam(':skip', $skip, PDO::PARAM_INT);
$st1->bindParam(':read', $read, PDO::PARAM_INT);
$st1->execute();
$cnt = 0;
while($row1 = $st1->fetch()) { // 記事を読む
if (++$cnt > $perpage) { break; }
print $row1['no'] . '<br />'; //とりあえずnoだけ表示
$post_no = $row1['no'];
$st2->bindParam(':post_no', $post_no, PDO::PARAM_INT);
$st2->execute();
while($row2 = $st2->fetch()) { // コメントを読む
print $row2['post_no'] . '-' . $row2['no'] . '<br />'; // こっちもとりあえずの表示
}
}
// リンク生成
if ($page > 1) {
print '<a href="?page=' . ($page - 1) . '">Prev.</a>';
}
if ($cnt > $perpage ) {
print '<a href="?page=' . ($page + 1) . '">Next.</a>';
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHP MySql ページング 2 2022/09/20 06:38
- PHP php my adminより取り出したデータ表示 2 2022/06/15 11:56
- PHP コメント機能に返信欄を矢印で追加したい 1 2022/05/09 21:17
- Perl RSSにdiv,ul classを付けたいのですがどのようにつけるのかわからないです 2 2022/03/28 01:53
- PHP PHP ページング データベース 1 2022/06/16 10:30
- PHP ランキングを表示する際の画像の大きさを固定することは可能でしょうか? <?php if ( has_ 1 2022/07/21 14:55
- MySQL SQL任意に並び替えをしたい 2 2023/08/28 10:47
- PostgreSQL 画像とカテゴリーを出力したいのですが、取得の条件を付ける方法がわかりません。 2 2022/05/01 18:03
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- PHP PHP一覧表示した項目にリンクをはりたい 1 2023/07/12 17:08
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
laravelを利用してコントロール...
-
高高兴兴は高兴と何が違います...
-
【smarty】予約変数に可変変数
-
郵便番号検索
-
POSTを使わずに値を渡す方法
-
PHPの関数実行
-
PHPでURLにジャンプするには?
-
プログラミング言語で、使える...
-
入力フォーム→確認画面→送信画...
-
検索時の選択内容を保持する方法
-
アマゾンのような評価の星を選...
-
エラーを元の画面に表示させるには
-
演算子について教えてください。
-
ボタンをクリックでPHP文を実行
-
配列をPOSTで受けとる
-
HTMLのリンクをクリックするこ...
-
mySQLのデータを多次元配列に格...
-
テキストリンクをPOST送信したい
-
PHP 入力フォームにて半角スペ...
-
PHPで画像の渡しが上手く行きま...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
laravelを利用してコントロール...
-
POSTを使わずに値を渡す方法
-
POSTの値を配列として受け取っ...
-
サーバ上でGETはできるがPOSTが...
-
大鏡「若き日の道長」の訳
-
pythonのhttp.serverでpostされ...
-
アコーディオンPHPが上手くいか...
-
プログラムの複製(VB.net)
-
【smarty】予約変数に可変変数
-
$_SERVER['REQUEST_METHOD']と"...
-
淡路島の洲本にレンタカーはあ...
-
昭和40年の現金書留での送金...
-
ストアドプロシージャーでルー...
-
郵便番号検索
-
jQuery Ajaxで送信先ドキュメン...
-
ブックマークレットで他ドメイ...
-
高高兴兴は高兴と何が違います...
-
ASPを出ぶ方法
-
海外郵便 宛名国名のスペル教えて
-
自作PHPブログでの記事を5件ず...
おすすめ情報