自作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ランキング
-
POSTを使わずに値を渡す方法
-
laravelを利用してコントロール...
-
ブックマークレットで他ドメイ...
-
サーバ上でGETはできるがPOSTが...
-
大鏡「若き日の道長」の訳
-
phpで、フォームのラジオボタン...
-
phpでのセレクトボックスの値を...
-
ポインタ配列をfscanfで読み込...
-
プルダウンとCSVの連動
-
<input type="hidden" >で配列...
-
アマゾンのような評価の星を選...
-
PHPのエラーの解消法について教...
-
「"」(ダブルクォーテーション)...
-
フォームボタンを押すたびに数...
-
Flaskでサーバー立ち上げに関して
-
CodeIgniter/set_value()
-
GETとPOST以外のデータの渡し方...
-
入力した部分を表示させたまま...
-
<select>文、foreachと初期値設定
-
Fortranでのファイル名操作につ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
laravelを利用してコントロール...
-
pythonのhttp.serverでpostされ...
-
サーバ上でGETはできるがPOSTが...
-
POSTの値を配列として受け取っ...
-
郵便番号検索
-
php sprintfの中で、ifのような...
-
POSTを使わずに値を渡す方法
-
プログラムの複製(VB.net)
-
アコーディオンPHPが上手くいか...
-
wordpressでのパーマリンクの表...
-
SQLとPHPの連結方法がわからな...
-
mod_rewrite について
-
php foreach文
-
【smarty】予約変数に可変変数
-
CGI Perlでの認証について
-
高高兴兴は高兴と何が違います...
-
PHPから他のcgiにpostしたいの...
-
WordPressでID番号以外でのペー...
-
RSSと投稿記事を交互に表示させ...
-
自作PHPブログでの記事を5件ず...
おすすめ情報