ホームページ >バックエンド開発 >PHPチュートリアル >現在の ID が存在するページを見つけます。
フィールド ID: 値 1~27
ページング時: 1 ページあたり 8 つのデータが表示されます
ID を指定して、この ID が位置するページの数を見つけます
私のアイデア:
$arr=array();for(int i=0;i<maxpage;i++){$sql=(select id from table limit i*8,(i+1)*8); $arr[$i]+=$this->db->getAll($sql);}$arr={[0]=>(1~8)[1]=>(9~16)[2]=>(17~24)[3]=>(25~27)}让id 与数组$arr的value 比较 ,相同的话 获取出 key后+1就是它所在的页面
$pagenumber = ceil($id / 8);
idが連続していると仮定
$pagenumber = ceil($id / 8);
$pagenumber = ceil($id / 8);
不連続ですか?次に、ID の分布を知る必要があります
ID の分布は不連続です
そして指定された ID 番号を取得します、
$pagenumber = ceil( $number / 8);
ID が次の場合、
//已知id=5 id{1,2,5,9,10}, X=2 那么 已知id在第二页的第一个位置$id = 5;$a = array(1,2,5,9,10);$x = 2;$p = array_search($id, $a);echo ceil($p / $x) + 1; //2//已知id=9 id{1,2,3,7,9,10} X=2 那么 已知id在第三页的第一个位置$id = 9;$a = array(1,2,5,9,10);$x = 2;$p = array_search($id, $a);echo ceil($p / $x) + 1; //3を計算するのは簡単です。順不同ですが、
$id = 9;$a = array(1,5,9,2,10);$x = 2;$p = array_search($id, $a);echo ceil($p / $x) + 1; //2を計算することもできます
これは、すべての ID を取り出し、
順番に番号を付け、
指定された ID の番号を取得することによってのみ実行できます、
$pagenumber = ceil($数値/8);
これは、すべての ID を取得することによってのみ実行できます。
次に、指定された ID の番号を取得します。
$pagenumber = ceil( $数値 / 8);
データが多い場合、この方法は適していません
2.最大のページに移動します
最初のページの最初の ID が <既知の ID であるかどうかを判断します。はいの場合、2 番目のページの最初の ID が <既知の ID であるかどうかを確認します。方法は少ないようですが、データベースを使用する回数が多くなります
最初に1つの関数を使用して作成する方が良いです。良い方法があれば、教えて参考にさせてください
したいので。データベースにクエリを実行します。これを実行できます
select id, ceil(@s/每页行数) as page, @s:=@s+1 from 表, (select @s:=1) t HAVING id=$idクエリ結果のページ列は、ID に対応するページ番号です
select id, page from (select id, ceil(@s/每页行数) as page, @s:=@s+1 from 表, (select @s:=1) t ) t1 where id=$id
問題があります、これは正しい方法
select id, page from (select id, ceil(@s/每页行数) as page, @s:=@s+1 from 表, (select @s:=1) t ) t1 where id=$id
":= "主に外部パラメータを渡したり、ステートメント内の変数に値を割り当てるために使用されます
@s:=@s+1 @s: =1 変数の代入を 2 回行っていますか
set @s:=1;select id, ceil(@s/每页行数) as page, @s:=@s+1 from 表です