私はそれらを表示するためのhtmlテーブルを生成するための多くの結果を返すSQLクエリを持っています。問題は私が1ページにそれらをすべて表示したくないということです。私は一度に10をつかみ、結果のページをめくってみたいと思います。SQLクエリからhtmlレポートを生成する
クエリごとに100個の結果を返したいのですが、次のクエリでNEXT 100を取得する方法がわかりません。
私はそれらを表示するためのhtmlテーブルを生成するための多くの結果を返すSQLクエリを持っています。問題は私が1ページにそれらをすべて表示したくないということです。私は一度に10をつかみ、結果のページをめくってみたいと思います。SQLクエリからhtmlレポートを生成する
クエリごとに100個の結果を返したいのですが、次のクエリでNEXT 100を取得する方法がわかりません。
-- return the first 100 rows
SELECT * FROM table LIMIT 0, 100
-- return the next 100 rows
SELECT * FROM table LIMIT 100, 100
-- and the next
SELECT * FROM table LIMIT 200, 100
あなたがする必要があるのは、各ページに適切なSQL LIMITステートメントを作成する変数をスクリプトに渡すことです。
下に制限を定義します。
LIMIT 0,100
2ページ目に
LIMIT 100,100
ので:最初のページのために。
ページに「次へ」リンクを置く場合は、start = 100という$ _GETパラメータを作成します。次に、その開始パラメータをlimitの最初の値として使用し、100に2番目の値を追加します。あなたは、さらにその上に拡大したい場合は、numパラメータを追加することができます
if(empty($_GET['start']))
{
$start = 0;
}
else
{
$start = $_GET['start'];
}
$SQL = "SELECT * FROM TABLE WHERE 1=1 LIMIT ".$start.",100;";
query($sql);
$link = "<a href=\"?start=".$start+100."\">Next</a>";
:
だから、最後にそれは次のようになります。これにより、ユーザーは表示されるレコードの数を制御できます。したがって:
if(empty($_GET['start']))
{
$start = 0;
}
else
{
$start = $_GET['start'];
}
if(empty($_GET['num']))
{
$start = 100;
}
else
{
$start = $_GET['num'];
}
$SQL = "SELECT * FROM TABLE WHERE 1=1 LIMIT ".$start.",".$num.";";
query($sql);
$link = "<a href=\"?start=".$start+100."&num=".$num."\">Next</a>";
もちろん、すべての数値をサニタイズ/検証することもできます。
LIMITの第2パラメータは、返される行の数であり、上限はありません。 – sixthgear
固定。ありがとうございました。 –
LIMIT SQL文を使用する必要があります。 SELECT * FROMテーブルLIMIT $ varのようなクエリを使用すると、100が/page.ext?page=2というURLになります。 get(つまり、PHPでは$ _GET ['page'])を使用し、その数値に100を掛けて$ var値を取得します。明らかに、これを安全にする必要があります。
今後参考になるように、あなたが参照していることをページネーションといいます。 –
使用している特定のSQLデータベース/方言はありますか? server/sqlの方言は、通常、結果セットのページ付け方法を決定します。 – jrista