質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

3049閲覧

ページングで、2ページ目以降も1ページ目が表示されてしまう

退会済みユーザー

退会済みユーザー

総合スコア0

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2017/10/21 07:01

編集2017/10/21 07:04

掲示板を制作しているのですが、ページングがうまく実装出来ません。
タイトルの通りなのですが、2ページ目、3ページ目にも1ページ目と同じ内容が
表示されてしまいます。
1ページに16投稿ごと表示していて、1ページ目は正しく表示されています。
ご教授いただければ幸いです。

php

1<?php 2 3//config.php 4define('DSN', 'mysql:dbname=test;host=localhost'); 5define('USER', 'test'); 6define('PASSWORD', '');

php

1<?php 2 3require_once('./config.php'); 4 5if (preg_match('//debug.php?page=[1-9]\d*/', $_SERVER['REQUEST_URI'])) { 6 $page = $_GET['page']; 7} else { 8 $page = 1; 9} 10 11$dbh = new PDO(DSN, USER, PASSWORD); 12$dbh->query('SET NAMES utf8'); 13 14$offset = NAME_PER_PAGE *($page - 1); 15$sql = "SELECT * FROM user order by code desc limit " .$offset.",".NAME_PER_PAGE; 16$stmt = $dbh->query($sql); 17$records = $stmt->fetchAll(PDO::FETCH_ASSOC); 18$total = $dbh->query("select count(*) from user")->fetchColumn(); 19$totalPages = ceil($total / NAME_PER_PAGE); 20 21?>

php

1 2//次・前ページのリンク 3<?php if($page > 1) : ?> 4<li><a href="?page=<?php echo $page-1; ?>">前へ<span aria-hidden="true"></span></a></li> 5<?php endif; ?> 6<?php for($i = 1; $i <= $totalPages; $i++) : ?> 7 <?php if ($page == $i) : ?> 8 <li class="active"><a href="?page=<?php echo $i; ?>"><?php echo $i; ?></a></li> 9 <?php else: ?> 10 <li><a href="?page=<?php echo $i; ?>"><?php echo $i; ?></a></li> 11 <?php endif; ?> 12<?php endfor; ?> 13<?php if($page < $totalPages) : ?> 14<li><a href="?page=<?php echo $page+1; ?>">次へ<span aria-hidden="true"></span></a></li> 15<?php endif; ?>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/10/21 07:15 編集

$offset に意図した値が入っているかを確認してください。
guest

回答1

0

ベストアンサー

php

1if (preg_match('//debug.php?page=[1-9]\d*/', $_SERVER['REQUEST_URI'])) {

この条件式がおかしいということは、理解していますか?

2ページ目、3ページ目にも1ページ目と同じ内容が

表示されてしまいます。

このことから、

php

1$page = $_GET['page'];

のブロックには入っていないことが予想できます。
正規表現はテストも難しく、代替案がある場合は、使わない方がメンテナンス性が向上します。

php

1if (isset($_GET['page']) && $_GET['page'] > 0) {

という条件式で同じことができるはずです。

投稿2017/10/21 07:20

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/10/21 07:37

条件式がおかしいことは理解出来ていないです。 もう一度提示していただいた内容を参考にページングのエラーを修正してみます。
退会済みユーザー

退会済みユーザー

2017/10/23 07:28

再度、1からページングを組み直しました。その際に、教えていただいたコードを組み込んだところ、すべて望んでいたとおりに動きました。どっといんすとーるで学んだ正規表現以外にも方法があることに驚きました。本当に勉強になりました!ありがとうございました! ベストアンサーにさせていただきました。 ```php //提示していただいたコード if (isset($_GET['page']) && $_GET['page'] > 0) { $page = (int)$_GET['page']; }else{ $page = 1; } ```
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問