回答編集履歴

4 実験方法について追記

masaya_ohashi

masaya_ohashi score 9028

2016/06/24 15:41  投稿

最初へ、前へ、次へ、最後への表示切替はいきなりやるには複雑すぎるのでまずは「ページ数分だけリンクを並べて、各ページを正しく表示できる」ところを目指しましょう。
例えば例としてlist.phpでページング処理をするとして、5ページあったらリンク一覧はこんな感じになりますよね?
```HTML
<a href="/list?page=1">1</a>
<a href="/list?page=2">2</a>
<a href="/list?page=3">3</a>
<a href="/list?page=4">4</a>
<a href="/list?page=5">5</a>
```
するとlist.phpに$_GET["page"]の形で「何ページ目をクリックしたか」が渡されますよね?
そしたらSELECTのLIMITを使って「レコード全体の中から(ページ数*5)番目から5件引き出して表示」するだけです。例えば今は1ページに5件表示したいとのことですのでこんな感じになるでしょう。
```PHP
$page = $_GET["page"];//pageというパラメータに現在のページが入っているものとする
$stmt = $pdo->prepare("SELECT user_data.id,birth_year,birth_month,birth_day,pref,city,major_category,major_skill,cont_date,introduction FROM user_data,user_pr WHERE user_data.id=user_pr.user_id ORDER BY id DESC LIMIT ?, 5;");
$stmt->execute([$page * 5]);
```
このように、prepareを使ってページ番号をSQLに渡してやることで、何ページ目であってもこのSQLで対応可能というわけです。
このように、prepareを使ってページ番号をSQLに渡してやることで、何ページ目であってもこのSQLで対応可能というわけです。試しにこう処理を変えた後に、URLに直接「?page=1」や「?page=2」と追加してジャンプしてみてください。動作が確認できると思います。
3 5倍にする処理が抜けていたので修正

masaya_ohashi

masaya_ohashi score 9028

2016/06/24 15:37  投稿

最初へ、前へ、次へ、最後への表示切替はいきなりやるには複雑すぎるのでまずは「ページ数分だけリンクを並べて、各ページを正しく表示できる」ところを目指しましょう。
例えば例としてlist.phpでページング処理をするとして、5ページあったらリンク一覧はこんな感じになりますよね?
```HTML
<a href="/list?page=1">1</a>
<a href="/list?page=2">2</a>
<a href="/list?page=3">3</a>
<a href="/list?page=4">4</a>
<a href="/list?page=5">5</a>
```
するとlist.phpに$_GET["page"]の形で「何ページ目をクリックしたか」が渡されますよね?
そしたらSELECTのLIMITを使って「レコード全体の中から(ページ数*5)番目から5件引き出して表示」するだけです。例えば今は1ページに5件表示したいとのことですのでこんな感じになるでしょう。
```PHP
$page = $_GET["page"];//pageというパラメータに現在のページが入っているものとする
$stmt = $pdo->prepare("SELECT user_data.id,birth_year,birth_month,birth_day,pref,city,major_category,major_skill,cont_date,introduction FROM user_data,user_pr WHERE user_data.id=user_pr.user_id ORDER BY id DESC LIMIT ?, 5;");
$stmt->execute([$page]);
$stmt->execute([$page * 5]);
```
このように、prepareを使ってページ番号をSQLに渡してやることで、何ページ目であってもこのSQLで対応可能というわけです。
2 追記

masaya_ohashi

masaya_ohashi score 9028

2016/06/24 15:34  投稿

最初へ、前へ、次へ、最後への表示切替はいきなりやるには複雑すぎるのでまずは「ページ数分だけリンクを並べて、各ページを正しく表示できる」ところを目指しましょう。
例えば例としてlist.phpでページング処理をするとして、5ページあったらリンク一覧はこんな感じになりますよね?
```HTML
<a href="/list?page=1">1</a>
<a href="/list?page=2">2</a>
<a href="/list?page=3">3</a>
<a href="/list?page=4">4</a>
<a href="/list?page=5">5</a>
```
するとlist.phpに$_GET["page"]の形で「何ページ目をクリックしたか」が渡されますよね?
そしたらSELECTのLIMITを使って「レコード全体の中から(ページ数*5)番目から5件引き出して表示」するだけです。例えば今は1ページに5件表示したいとのことですのでこんな感じになるでしょう。
```SQL
SELECT user_data.id,birth_year,birth_month,birth_day,pref,city,major_category,major_skill,cont_date,introduction FROM user_data,user_pr WHERE user_data.id=user_pr.user_id ORDER BY id DESC LIMIT page * 5, 5
```
```PHP
$page = $_GET["page"];//pageというパラメータに現在のページが入っているものとする
$stmt = $pdo->prepare("SELECT user_data.id,birth_year,birth_month,birth_day,pref,city,major_category,major_skill,cont_date,introduction FROM user_data,user_pr WHERE user_data.id=user_pr.user_id ORDER BY id DESC LIMIT ?, 5;");
$stmt->execute([$page]);
```
このように、prepareを使ってページ番号をSQLに渡してやることで、何ページ目であってもこのSQLで対応可能というわけです。
1 SQL文に不要箇所があったので修正

masaya_ohashi

masaya_ohashi score 9028

2016/06/24 14:44  投稿

最初へ、前へ、次へ、最後への表示切替はいきなりやるには複雑すぎるのでまずは「ページ数分だけリンクを並べて、各ページを正しく表示できる」ところを目指しましょう。
例えば例としてlist.phpでページング処理をするとして、5ページあったらリンク一覧はこんな感じになりますよね?
```HTML
<a href="/list?page=1">1</a>
<a href="/list?page=2">2</a>
<a href="/list?page=3">3</a>
<a href="/list?page=4">4</a>
<a href="/list?page=5">5</a>
```
するとlist.phpに$_GET["page"]の形で「何ページ目をクリックしたか」が渡されますよね?
そしたらSELECTのLIMITを使って「レコード全体の中から(ページ数*5)番目から5件引き出して表示」するだけです。例えば今は1ページに5件表示したいとのことですのでこんな感じになるでしょう。
```SQL
SELECT user_data.id,birth_year,birth_month,birth_day,pref,city,major_category,major_skill,cont_date,introduction FROM user_data,user_pr WHERE user_data.id=user_pr.user_id ORDER BY id DESC LIMIT page * 5, 5;");
SELECT user_data.id,birth_year,birth_month,birth_day,pref,city,major_category,major_skill,cont_date,introduction FROM user_data,user_pr WHERE user_data.id=user_pr.user_id ORDER BY id DESC LIMIT page * 5, 5
```

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る