1ページの表示件数は4
下記のようにページングしています
最初 3 4 5 最後
18件中 13-16件目を表示
これを下記のようにしたいです
最初 3 4 5 6 7 8 9 10 11 12 最後
よろしくお願い致します
<?php
// DBとの接続
include_once 'dbconnect.php';
// GETで現在のページ数を取得する(未入力の場合は1を挿入)
if (isset($_GET['page'])) {
$page = (int)$_GET['page'];
} else {
$page = 1;
}
// スタートのポジションを計算する
if ($page > 1) {
// 例:2ページ目の場合は、『(2 × 10) - 10 = 10』
$start = ($page * 4) - 4;
} else {
$start = 0;
}
// SELECT文を変数に格納
// 4件表示
$sql = "SELECT * FROM users ORDER BY created_at DESC LIMIT $start, 4";
// SQLステートメントを実行し、結果を変数に格納
$stmt = $pdo->query($sql);
$count = $stmt -> rowCount();
echo $count.'件ずつ表示しています。';
// 水平線を入れる
echo '<hr>';
// foreach文で配列の中身を一行ずつ出力
foreach ($stmt as $row) {
// データベースのフィールド名で出力
echo '投稿日:'.$row['created_at'].'<br>'.'NO:'.$row['user_id'].'<br>'.'氏名:'.$row['username'].'<br>'.'伝言:'.$row['content'];
// 水平線を入れる
echo '<hr>';
}
// SELECT文を変数に格納
// すべて
$alldata = "SELECT * FROM users ORDER BY created_at";
// SQLステートメントを実行し、結果を変数に格納
$stmt2 = $pdo->query($alldata);
$count2 = $stmt2 -> rowCount();
echo '全部で'.$count2.'件あります。';
// 水平線を入れる
echo '<hr>';
// 総ページ数を取得する
// (例)18÷4=4.5 切り上げ 5
$totalpages = ceil($count2 / 4);
// □件中 ○-△件目を表示
// $count2 全件数を取得
// レコードは4件ずつ表示
// ○ - △件目を表示
// ○は(現在ページ - 1) * 4 + 1で表示
// △は現在ページに4を掛けると表示
// しかし(例)全件数18件の時、17-20になる
// この場合、現在ページから1引いて4をかけた数に、(剰余:割り算の商と余りを計算)全件数を4で割ったあまりの数を足すと正しい数が出る
// (例)18件目は、5ページ目になる。(5-1)×4=16に、18÷4=商は4 余りは2、16+2=18
// 18件中 17-18件目を表示
$from_record = ($page - 1) * 4 + 1;
if($page == $totalpages && $count2 % 4 !== 0) {
$to_record = ($page - 1) * 4 + $count2 % 4;
} else {
$to_record = $page * 4;
}
?>
<html>
<body>
<!-- 最初のページ -->
<a href="?page=1">最初</a>
<!-- 前のページ -->
<?php if ($page > 1) : ?>
<a href="?page=<?php echo ($page - 1); ?>"><?php echo ($page - 1); ?></a>
<?php endif; ?>
<!-- 表示中ページ -->
<?php echo $page; ?>
<!-- 次のページ -->
<?php if ($page < $totalpages) : ?>
<a href="?page=<?php echo ($page + 1); ?>"><?php echo ($page + 1); ?></a>
<?php endif; ?>
<!-- 最後のページ -->
<a href="?page=<?php echo ($totalpages); ?>">最後</a>
<br />
<?php echo $count2; ?>件中
<br />
<?php echo $from_record; ?> - <?php echo $to_record;?> 件目を表示
</body>
</html>
No.2ベストアンサー
- 回答日時:
> リンクをつけない方法
function 表示($message, $page_no = null) {
_ if (isset($page_no)) ...
_ else ...
}
表示($i, ($i != C)? $i: null);
No.1
- 回答日時:
C = 表示頁
T = 総件数
E = 頁毎の件数
P = ceil(T / E) = 総頁数
A = 前後に表示する頁数
X = max(1, C - A)
Y = min(P, C + A)
if (X > 1) 表示(1);
for ($i=X; $i<=Y; $i++) 表示($i);
if (Y < P) 表示(P);
Ogre7077 様
回答ありがとうございます。
勉強になりました。
特に「XとY」の考え方は参考になりました。
可能であれば、あと一点教えて下さい。
表示しているページは、リンクをつけない方法はありますでしょうか?
よろしくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHP ページング データベース 1 2022/06/16 10:30
- Perl RSSにdiv,ul classを付けたいのですがどのようにつけるのかわからないです 2 2022/03/28 01:53
- PHP php my adminより取り出したデータ表示 2 2022/06/15 11:56
- PHP ランキングを表示する際の画像の大きさを固定することは可能でしょうか? <?php if ( has_ 1 2022/07/21 14:55
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- PHP PHPでユーザー情報を入力して簡易ログイン機能をつくってみたのですが 1 2023/05/29 08:51
- PHP htmlで複数の個数入力欄を表示させるには 1 2022/09/20 03:11
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- PostgreSQL 画像とカテゴリーを出力したいのですが、取得の条件を付ける方法がわかりません。 2 2022/05/01 18:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
php で C言語のdefineマクロの...
-
simplexml_load_file で呼び出...
-
PHPのタイムアウトについて
-
フォントの色を変えるには?
-
PHPのWARNINGをcatchするには
-
onedrive にexcelファイルをア...
-
PHP8を使うと、大量のWarningが...
-
バッチを用いたフォルダの自動移動
-
CSV出力にHTMLが入ってしまう
-
「クラス関数」「メンバ関数」...
-
index.phpって何ですか? 具体...
-
現在位置より2つ上のディレク...
-
透過PNGが透過されない!!
-
PHP 文字列を代入した配列を変...
-
PHPのif文でその処理を途中で抜...
-
$_SESSION 有効期限をブラウザ...
-
別ファイルの変数を呼び出した...
-
PHPで、エラーがない場合のみ画...
-
index.phpに入るには、どうすれ...
-
前後の全角スペースを削除する...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PHP MySql ページング
-
PHPのタイムアウトについて
-
BASIC認証のユーザー名をPHPで...
-
特定の値をPOST送信で他のサー...
-
php で C言語のdefineマクロの...
-
DBから取得した内容を横表示
-
[wordpress]外部RSSを「文字...
-
検索結果を2列で表示させたい
-
phpヒアドキュメントスクリプト...
-
■■simpleXMLでホットペッパーの...
-
PEARのHTTP_Requestをインストール
-
ヘッダーが付いた場合の、simpl...
-
phpでハイパーリンクして値を持...
-
名前空間のあるXMLからの取り出し
-
同一ディレクトリの連番ファイ...
-
RSSデータの読み込み方を教えて...
-
「include」と「file_get_conte...
-
PHP Mysql SELECTであいまい検...
-
PHP+MySQLでXMLを作成し、それ...
-
PHPでxmlファイルへのデータの...
おすすめ情報