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

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

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

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

Q&A

解決済

7回答

14630閲覧

ページング処理の実装について

earnest_gay

総合スコア615

PHP

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

0グッド

0クリップ

投稿2016/06/24 02:32

今現在DBへ試しに20件のデータが入っており、下記記述で20人分の表示がされている状態です。

1ページに5件づつ表示させたくて、色々とサイトを見て回っているのですが、
最初から全部を記述しているサイトがほとんどで理解できない状態です...

全部記述したあとに説明するより
まず、○○をする。
○○ができたから次は○○をする、というように順序だって組み立てていきながら解説して頂けると理解しやすいです。

ページング機能実装後の話になると思いますが、
下記の記述を1ページに5件ずつ表示するためにはどう組み合わせたらよろしいでしょうか?

$stmt = $pdo->query("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;"); <main class="main"> <div class="main-in"> <article> <?php foreach ($stmt as $row) { echo 'EngineerNo.'.$row['id'].'<br />'; echo '<img src="" alt="">'; $birth = $row['birth_year'].sprintf('%02d', $row['birth_month']).sprintf('%02d', $row['birth_day']); echo '年齢:'.floor((date("Ymd")-$birth)/10000).'歳'; echo ' | '; echo '所在:'.$row['pref'].' '.$row['city']; echo ' | '; echo '専攻カテゴリー:'.$row['major_category']; echo ' | '; echo '専攻スキル:'.$row['major_skill']; echo ' | '; echo '契約可能時期:'.$row['cont_date'].'<br /><br />'; echo 'PR'.$row['introduction'].'<br /><br />'; echo '<hr>'; } ?> </article> </div> </main>

最終的には下記画像ようにしたいのですが、

現在のページが1ページなら「最初へ戻る」「前へ」リンクを表示させない
現在のページが1ページ以外なら「前へ」リンクだけを表示させる
現在のページが5ページ以上なら「最初へ戻る」リンクも表示させる
「next」リンクは6~10という風に5件刻みで表示させる
「last」リンクは、ページ数が22とか半端なら18~22という風に表示させる
表示されているページ数が18~22なら「last」リンクは表示させないが、17~21とかなら表示させる

という風にしたいのですが、何から手を付けて、このページング処理の考え方のポイントが分かりません。

イメージ説明

ちなみに参考にしているサイトはこちらですが、どのサイトも一気に記述例を挙げていて組み立て方式ではないので理解できずです...

https://teratail.com/questions/8426
http://piyopi-yo.info/tori_wp/?p=91
http://www.webopixel.net/php/494.html
http://tenderfeel.xsrv.jp/php/639/
http://9jp.info/archives/11154
http://qiita.com/tabo_purify/items/fb902956c1e1a3c75041
http://ameblo.jp/yuu-sys-guard/entry-11893904475.html

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

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

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

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

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

guest

回答7

0

まずページ分のデータを取得する方法から考えるとよいと思います。
DBからページごとのデータを取得するときはlimitとoffsetを使うのでページ毎に計算します。
(offsetとlimitは検索するとわかりやすいものが出てきます)

以下の $limit には表示したいデータ数(ここだと5)、 $page には表示したいページ数を渡します。

PHP

1$data = ~~; //←ページ繰りしたいデータを全て取得 2$total = count($data); //データが何件あるか 3$page_sum = $total / $limit; //何ページになるか 4$page_sum = ceil($page_sum) //小数点切り上げ 5$offset = $page*$limit;

現在のページが1ページなら「最初へ戻る」「前へ」リンクを表示させない

if ($page > 1)

表示されているページ数が18~22なら「last」リンクは表示させない

if ($page < $page_sum -1) などで表示できると思います。

雑な説明ですが、考え方はこういう感じだと思います。
余談ですがフレームワークでは表示したい件数を渡すだけでページネーションを生成してくれるものも多いので、導入された方がよいかと思います。

投稿2016/06/24 02:59

tokutoku393

総合スコア54

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

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

earnest_gay

2016/06/24 05:36

最悪フレームワークを使おうとは思ってますが、 下記の表示方法のフレームワークがなさそうなんです... 現在のページが1ページなら「最初へ戻る」「前へ」リンクを表示させない 現在のページが1ページ以外なら「前へ」リンクだけを表示させる 現在のページが5ページ以上なら「最初へ戻る」リンクも表示させる 「next」リンクは6~10という風に5件刻みで表示させる 「last」リンクは、ページ数が22とか半端なら18~22という風に表示させる 表示されているページ数が18~22なら「last」リンクは表示させないが、17~21とかなら表示させる 仕組みが分かってる人なら フレームワークを少し改良するだけで思い通りのものが完成するとは思いますが 色々と絡み合いすぎてまだ理解するには遠いので...
tokutoku393

2016/06/24 06:04 編集

最初はとにかくわけがわからないですよね。 いつかもう少し仕組みが見えたら、フレームワークを使った方がずっといい!と思えるようになると思います。 他の方へのコメント拝見しましたが、まずGETパラメータなどで表示するページを受け取り、それをクエリに渡して5件ずつoffsetとlimitでデータを取得し、質問者さんの `$stmt` に渡してあげるというイメージで考えるとよいと思います。 それを理解して5件ずつデータを取得出来れば、ほぼ今の記述のままページ繰りが出来ると思います。 データの取得、とページネーションの表示、は一旦別物と考え、データ取得が出来たら持っている情報(トータルページ数とか現在のページ)からifなどでページネーションを生成する感じです。
guest

0

[PHP] ページング機能の仕組みとか作り方とか
質問中にも挙げられているサイトですが、
このサイトではかなり丁寧に順を追って説明されています。

このサイトでの説明だと、どこまでが分かってどこからはわからない感じでしょうか?

投稿2016/06/24 02:54

tanat

総合スコア18709

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

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

earnest_gay

2016/06/24 05:28

そうしましたら、DBには全部で10件登録されているとして、単純に10件のデータを2ページ(5件づつ)表示させるための実際の記述について知りたいです。 参考サイトのものはページング機能だけの記述なので、 まず知りたいことは、 <?php foreach ($stmt as $row) { echo 'EngineerNo.'.$row['id'].'<br />'; echo '<img src="" alt="">'; $birth = $row['birth_year'].sprintf('%02d', $row['birth_month']).sprintf('%02d', $row['birth_day']); echo '年齢:'.floor((date("Ymd")-$birth)/10000).'歳'; echo ' | '; echo '所在:'.$row['pref'].' '.$row['city']; echo ' | '; echo '専攻カテゴリー:'.$row['major_category']; echo ' | '; echo '専攻スキル:'.$row['major_skill']; echo ' | '; echo '契約可能時期:'.$row['cont_date'].'<br /><br />'; echo 'PR'.$row['introduction'].'<br /><br />'; echo '<hr>'; } ?> のようにして今回の例であれば10件の表示がされているわけですが、 この、取り出して表示させている記述とページング昨日をどう絡み合わせたら 単純に10件のデータを2ページ(5件づつ)表示させることができるのか その具体的の記述がみてみたいのです。 出来上がりの記述を見て、どこがどう絡み合ってるのかを見ていかないと理解できないです。 私の性格的なところもあると思いますが、全体像を知っておかないとその中の1部だけなんて理解しようがないんです。
tanat

2016/06/24 07:38

なるほど、全体のソースがまずないと辛いということですね。 であれば、webでの学習というのは非常に効率が悪いですね。。。 (自分で途中まで書いたアプリケーションについて全体ソースは世界中のどこにも存在しないので) 入門書を一冊クリアされるのを強くお勧めします。 書籍であれば、その書籍の中で完成させる全体のソースコード (しかも入門者が理解できる程度の規模/内容に調整されている) を示しながら段階を追って体系立てて説明されていますのでとても理解しやすいです。 全体のソースを示して一つづつ順に解説していくというのはteratailの禁止/推奨していない内容に該当してしまうと思うので(質問に対するマイナス評価がついているということは同様に考えている利用者が他にもいるということだと思います)、 申し訳ないんですが全体像の解説だけして回答を終わりますね。 コメント欄ではちょっと辛いので別の回答にしますね。
guest

0

PEAR::Pagerを参考にするとよいと思います
リンク内容

具体的にはこの辺のサンプルが参考になるかと
リンク内容
有名なライブラリなのでググればいろいろヒットします。

拡張方法にもよりますが、以下のようなものがあれば十分でしょう

  • カレントのページID
  • 次のページのID
  • 前のページのID
  • 1ページに表示するアイテム数
  • ページャーに表示するページ数
  • 全体のページ数
  • カレントが最初のページかどうか
  • カレントが最後のページかどうか
  • 「>」「<」などのリンクを置くかどうか
  • 大きな移動をするかどうか
  • 最後に飛ぶリンクを置くかどうか

投稿2016/06/24 03:09

yambejp

総合スコア114583

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

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

earnest_gay

2016/06/24 05:43

質問内の記述ではDBへ登録されている数だけ表示されますが、本質問は質問するには少し早すぎたかもしれません。 そこで1つ教えてください。 DBに10件のデータが入っているとして 単純に5件づつの表示をさせたい場合はどうしたらよいでしょうか? とりあえず触りを理解したいので動的でなくてかまいません。 <?php foreach ($stmt as $row) { echo 'EngineerNo.'.$row['id'].'<br />'; echo '<img src="" alt="">'; $birth = $row['birth_year'].sprintf('%02d', $row['birth_month']).sprintf('%02d', $row['birth_day']); echo '年齢:'.floor((date("Ymd")-$birth)/10000).'歳'; echo ' | '; echo '所在:'.$row['pref'].' '.$row['city']; echo ' | '; echo '専攻カテゴリー:'.$row['major_category']; echo ' | '; echo '専攻スキル:'.$row['major_skill']; echo ' | '; echo '契約可能時期:'.$row['cont_date'].'<br /><br />'; echo 'PR'.$row['introduction'].'<br /><br />'; echo '<hr>'; } ?> ↑この10件表示されているデータをどうやって2ページに分割するかということです。 if($_GET["page"] = 1){ ここをどうするかが分からない } if($_GET["page"] = 2){ ここをどうするかが分からない } <a href="/list?page=1">1</a> <a href="/list?page=2">2</a> foreachで10件のデータを取り出しているのにどうやってそれを5件5件にするのかの記述が分からないのです。
yambejp

2016/06/24 05:59

ご利用のRDBってなんでしたっけ? 分割するという認識が少し違うかもしれませんが 5件表示したければ5件だけSQL文で抜き出します。 次のページに飛んだ時にはまたそれに合わせてSQL文を発行します。 ページングとはそういうものです
earnest_gay

2016/06/24 06:06

PHPmyadminです。 >>次のページに飛んだ時にはまたそれに合わせてSQL文を発行します。 ページングの認識がずれておりました。 規模を小さくして考えてみたいです。 都道府県と市区町村だけを表示しているのですが、10件表示されます。 これを1ページ2件づつ計5ページに分けて表示するには、どうしたらよろしいでしょうか? 出来上がりから考えて応用して本質問のものにつなげていきたいので、どうかよろしくお願いします。 <?php $dsn = 'mysql:dbname=test;host=localhost;charset=utf8'; $user = 'root'; $password = ''; $option = array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION); $pdo = new PDO($dsn, $user, $password, $option); $stmt = $pdo->query("SELECT pref,city FROM user_data ORDER BY id DESC;"); foreach ($stmt as $row) { echo '所在:'.$row['pref']; echo '所在:'.$row['city']; } ?>
guest

0

ページングとかページネーションは、PearのPager とか各フレームワークにもライブラリにもあるはずなので、それを使うのが楽だとは思います。

ですが、あえて自分で実装するというのであれば、

・パラメータで$pageなり用意してページ番号を取得する
・データを取得するときのselectとwhere句を同じにしてレコード数を取得
・全体のレコード数を1ページに表示したいレコード数で割ってページ数を算出
・ページ番号と表示するレコード数をを元に limit を使用してその範囲のデータを取得

みたいなことをゴリゴリとやる必要があります。
あとは、ページ番号がいくつかとか現在のページがどことかで、希望している処理が書けると思います。

投稿2016/06/24 02:55

Mr_Roboto

総合スコア2208

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

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

0

ページング処理・・
ロジックを口頭で説明って案外難しいですね。(普段感覚で作っているので)

全テーブルデータの件数
1ページに表示させるデータ件数
最大ページ数 = ( 全テーブルデータの件数 / 1ページに表示させるデータ件数 )

まずは上記の算出ですかね。(すぐできると思います。)

投稿2016/06/24 02:43

YK1037

総合スコア236

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

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

earnest_gay

2016/06/24 02:45

回答ありがとうございます。 そこまではできています。 $maxcount = $pdo->query("SELECT count(*) as maxcount FROM user_data;"); $rec = $maxcount->fetch(PDO::FETCH_ASSOC); $maxcount=$rec["maxcount"]; ceil($maxcount/5); ここから先が分からないのです...
guest

0

*上記回答の続きです。

[サーバ側の流れ]

  • データの準備
  1. 表示されるべきページ番号がユーザから渡される

$_GET["page"]等、ページャーのリンク内に含まれる。
$_GET["page"]が存在しない場合は1ページ目とする。

  1. 表示されるべきページに所属するデータを必要なだけ用意する

ページ番号が1で表示したいデータ数が10なら、1~10個目のデータを用意する。
MySQLなら、

SQL

1SELECT * FROM `テーブル名` LIMIT 0,10;

で1~10個目のデータを用意することが出来るので、LIMIT 0,10 を$_GET["page"]と表示したい1ページあたりのデータ数から取得できるような計算式を考える。
2ページ目だとLIMIT 10,20;
3ページ目だとLIMIT 20,30;
4ページ目だとLIMIT 30,40;
になるように一つの計算式で求められるようにする。

  • データの表示
  1. データを表示用に整形する

データ部分は必要な形で表示すればOKです。これは既にできていると思うので割愛

  • ページャーのリンクに必要な情報の準備
  1. 表示されるべきページ番号を「現在ページ」として変数に準備する
  2. 「現在ページ」から「ひとつ前のページ」「一つ後ろのページ」を計算してそれぞれ変数に準備する
  3. データの全体数を取得して、それを1ページ当たりの表示数で割り、全体で何ページあるか計算し、「総ページ数」を変数に格納する
  • ページャーのリンク作成
  1. 総ページ数をforのループ回数条件にして、各ページのリンクを作成
  2. それとは別に「一つ前のページ」「一つあとのページ」のリンクを作って配置する

というのが全体の流れになります。

投稿2016/06/24 08:11

tanat

総合スコア18709

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

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

earnest_gay

2016/06/24 08:44

ありがとうございます。 >>データを表示用に整形する データ部分は必要な形で表示すればOKです。これは既にできていると思うので割愛 一番困っているのは恐らくこの部分です。 $page = $_GET["page"]; $stmt = $pdo->query("SELECT pref,city FROM user_data ORDER BY id DESC LIMIT 5, 5;"); $stmt->execute([$page * 5]); $maxcount = $pdo->query("SELECT count(*) as maxcount FROM user_data;"); $rec = $maxcount->fetch(PDO::FETCH_ASSOC); $maxcount=$rec["maxcount"]; $maxcont = ceil($maxcount/5); foreach ($stmt as $row) { echo '所在:'.$row['pref'].'<br />'; echo '所在:'.$row['city'].'<br /><br />'; } ここからまったくわからずです。 文にすると分かるのですが、、、 「現在のページが1ページなら、DBに新しく追加されたものの0~5件のデータを取り出して表示させる」 「現在のページが2ページなら、DBに新しく追加されたものの5~10件のデータを取り出して表示させる」 続く.....
tanat

2016/06/24 09:06

>>データを表示用に整形する >データ部分は必要な形で表示すればOKです。これは既にできていると思うので割愛 は foreach ($stmt as $row) { echo '所在:'.$row['pref'].'<br />'; echo '所在:'.$row['city'].'<br /><br />'; } の部分なので出来ているように思いますよ?
guest

0

ベストアンサー

最初へ、前へ、次へ、最後への表示切替はいきなりやるには複雑すぎるのでまずは「ページ数分だけリンクを並べて、各ページを正しく表示できる」ところを目指しましょう。
例えば例としてlist.phpでページング処理をするとして、5ページあったらリンク一覧はこんな感じになりますよね?

HTML

1<a href="/list?page=1">1</a> 2<a href="/list?page=2">2</a> 3<a href="/list?page=3">3</a> 4<a href="/list?page=4">4</a> 5<a href="/list?page=5">5</a>

するとlist.phpに$_GET["page"]の形で「何ページ目をクリックしたか」が渡されますよね?
そしたらSELECTのLIMITを使って「レコード全体の中から(ページ数*5)番目から5件引き出して表示」するだけです。例えば今は1ページに5件表示したいとのことですのでこんな感じになるでしょう。

PHP

1$page = $_GET["page"];//pageというパラメータに現在のページが入っているものとする 2$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;"); 3$stmt->execute([$page * 5]);

このように、prepareを使ってページ番号をSQLに渡してやることで、何ページ目であってもこのSQLで対応可能というわけです。試しにこう処理を変えた後に、URLに直接「?page=1」や「?page=2」と追加してジャンプしてみてください。動作が確認できると思います。

投稿2016/06/24 03:06

編集2016/06/24 06:41
masaya_ohashi

総合スコア9206

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

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

earnest_gay

2016/06/24 05:32

回答ありがとうございます。 最後のLIMIT page * 5, 5の分部が分からないです。 SQL文の中で$_GET["page"]のpageを使っているのかなと思いますが、 SQL文の中で$_GET["page"]って使えるのでしょうか? LIMITは上限ですよね? LIMIT page * 5, 5;についてもう少し詳しく教えて頂きたいです。
masaya_ohashi

2016/06/24 05:38

あくまでSQLの記述例です。PHPコードではありません。 prepareなどを使って?とpageを置き換えてやればよいです。 LIMIT x, yは、「x番目からy件」の意味です。 例えばuser_dataに100件登録されているとき、LIMIT 10,5 であれば、10件目から5件分になります。そしてWHEREやORDERで絞りこまれたり順番が決まっているのであれば、絞りこまれたリストの中から10件目から5件分が返ります。
earnest_gay

2016/06/24 05:53

>>user_dataに100件登録されているとき、LIMIT 10,5 であれば、10件目から5件分になります。 仰られていることは分かるのですが、 それが今回の質問のものとどう結びつくのでしょうか...
masaya_ohashi

2016/06/24 06:03

「下記の記述を1ページに5件ずつ表示するためにはどう組み合わせたらよろしいでしょうか?」と質問文にあるので、全レコードの中から該当のページにあたる部分をDBから抜き出すところから説明しているだけです。 1ページ目ならLIMIT 0,5、2ページ目はLIMIT 5,5、3ページ目はLIMIT 10,5...という具合に、クエリのpageを元にLIMITの値を切り替えればページ単位で表示する内容も切り替わるという話です。コードを見る限り、前へ次へリンク以前に、DBから該当データを引き出す時点からできていないようなので、最初の手順について説明しました。 もしかしてなんですが、ページ移動をせずに全件レコードを隠しておいてページ単位で表示する想定ですか?
earnest_gay

2016/06/24 06:16

すいません。 上のyambejpさんとのやり取りでハッキリしましたが、ページング処理の認識がずれておりました。 だんだんわかってきました。 ということは、 if($_GET['page']==1){ LIMIT 0,5 } if($_GET['page']==2){ LIMIT 5,5 } if($_GET['page']==3){ LIMIT 10,5 } という風に書いていくと果てしなく長いプログラム量になると思うのですが... いや、でもこういう感じにすればいいのですかね... for(i=0;現在のページ<最大ページ;i=+5){// $_GET['page']==1++//1づつ増える LIMIT i,5//5づつ増える } ちょっと違うところもあるかもですが、少しづつ分かってきた感じがします。
masaya_ohashi

2016/06/24 06:39

だんだん理解されているようでよかったです。 まずページング処理と呼ばれるもの、ページャと呼ばれる機能をバラバラにして考えましょう。ページング処理というのが今私が説明している、LIMITを用いて「該当のレコードだけを抽出して表示に使う」部分であり、ページャは「1 2 3 4 5」といった、「Webページ上で表示されるページ送り機能」のことです。とりあえずいっぺんに考えず、DBからページ内のデータを取り出す処理の部分だけを教えています。 PHPのコードも追記しました。
earnest_gay

2016/06/24 06:59 編集

executeってそういう使い方もできるんですね! $sql = "INSERT INTO user_data(email, password, name1, name2, name3, name4, name5, name6, middle_name, birth_year, birth_month, birth_day, gender, first_post, last_post, pref, city, town, building, tel1, tel2, tel3) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; INSERTの時しかつかったことなくて、 もう (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; のように()内で使うものだと思ってました。 ?はどこにでも活用できるんですね! 今後色々と応用できそうなので覚えておきます! いつもありがとうございます! 【追記】 最初そのページにアクセスしたときって http://localhost/xxx/test.php?page=1 じゃなくて http://localhost/xxx/test.php だと思うんですが $page = $_GET["page"]; $stmt = $pdo->query("SELECT pref,city FROM user_data ORDER BY id DESC LIMIT ?, 5;"); $stmt->execute([$page * 5]); にしていたら $page = $_GET["page"];の時点でなにも取得できていないから $stmt = $pdo->query("SELECT pref,city FROM user_data ORDER BY id DESC LIMIT ?, 5;"); $stmt->execute([$page * 5]); に影響が出てくると思うのですが...
masaya_ohashi

2016/06/24 07:05 編集

そういうときはissetやemptyを使って、「そもそもpageはパラメータにあるか」「パラメータにあったとして、空文字でないか」等を使ってチェックします。 $page = 0; if(isset($_GET["page"]) && !empty($_GET["page"])) { $page = $_GET["page"]; } まあ本来これ以外にも「整数であるか」とかのチェックもいると思いますが…
earnest_gay

2016/06/24 07:14

ありがとうございます。 limitとoffsetもポイントらしいのですが、 offsetとはどういったものでしょうか? 勿論こちらでも調べていますが、 ohashiさん解説が丁寧で分かりやすいので もしお時間あれば返答していただけるようなスタイルでかまいません。 基本こういうスタイルでterateil活用させていただいてますので スルーしていただいても大丈夫ですが お時間ありましたらお付き合い頂ければと思います。
masaya_ohashi

2016/06/24 08:39

offsetはプログラム用語的には「ずらす」といった意味を持っています。レコードの取得開始位置をずらす、ということです。普通にSQLを実行すると最初の1件目のレコードから全部返ってきますが、OFFSETをつけることで10件目から取得、ということもできるわけです。MySQLにはOFFSETという指定方法もあり、 LIMIT 0,5 LIMIT 5 OFFSET 0 は等価です。LIMITだけで書くのは省略記法ですね。
earnest_gay

2016/06/24 13:42

詳しくありがとうございます! だいぶ理解が深まります!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問