私はいくつかの古いコードを見ていて、いくつかの援助をしたいと思います。ページング方程式の基本的な問題
私の質問のすべてはページネーションに関連しています。
まず、次のクエリでは、合計ページ数を計算しています。 $itemsperpage=40 here
。
$rs0=mysqli_fetch_array(mysqli_query($dbh,"select floor(count(1)/$itemsperpage)+1 as pages from scx_media where scx_media.mediaid in (select mediaid from animated_gifs where status>0)"));
なぜこれを床に置き、1を追加するのですか?第二に
、我々はスタートの変数を作成し、コードのこの部分で
(SQLクエリで使用されます)。
$page=(int)$_GET['page'];
$pages=$rs0[pages];
if($page>$pages)$page=$pages;
$start=($page-1)*$itemsperpage;
なぜ私たちはページから1を引いたのですか? 0から始めるので、マイナス1にする必要がありますか?
そして最後に、
は、我々は40 items
とperpage item count is 40 as well
を持っているとしましょう。この構成ではwe'd have a second page with no data
が最初のページに40項目を表示し、ページごとの要件を満たしているためページ計算に応じて2ページ目が表示されますが、レコードはありません。 どうすればその問題を解決できますか?
などのアプリケーション層(PHP)で
$pagesNumber
を計算することができます_ _あなたの推測では、合理的なようだが、のどれも「私たちマイナスページから1をなぜ?」私たちはあなたのレガシーコードがどのように動作するかを知っています。 –一般的に私は他の伝統的なコードで見たことがあります... "なぜ私たちはページから1を引いたのですか?" SQLのLIMITが最初の一致の場合は0から始まる必要があるためです。 - 編集 - ...実際それは間違って聞こえる。確かにLOLを知るためには、SQLとコードをもっと必要とします。 – IncredibleHat
_ "どうすればその問題を解決できますか?" _ MySQLを使用している場合は、 'SQL_CALC_FOUND_ROWS'を参照してください。 –