非常に実用的な ORACLE ページング プログラム。_PHP チュートリアル

WBOY
リリース: 2016-07-21 16:07:52
オリジナル
1026 人が閲覧しました




ページングテスト








// MySQL の「制限」のように、結果をページに分割するにはどうすればよいですか?
// ================ ===========================================
// Neil Craig によるチュートリアル(neilc@netactive.co.za)
// Date: 2001-06-05
// この例では、
// 結果が開発者がページに出力したい内容を超えるデータベース クエリのページングについて説明します。ですが、
// 結果を別のページに分割したいと考えています。
// このチュートリアルでアクセスするテーブル "SAMPLE_TABLE" には、
// PK_ID、FIELD1、FIELD2、FIELD3 の 4 つのフィールドがあります。タイプは重要ではありませんが、
// PK_ID フィールドに主キーを定義する必要があります。

$display_rows = 5;     // 一度に表示する行数。
// 必要に応じてこれを変更できます

// Oracle データベースに接続します
putenv("ORACLE_SID=purk");
putenv("ORACLE_HOME=/export/oracle8i");
putenv("TNS_ADMIN=$) ORACLE_HOME/network/admin");
$OracleDBConn = OCILogon("purk","purk","lengana.world");

// このクエリはレコードをカウントします
$sql_count = "SELECT COUNT(*) FROM SAMPLE_TABLE ";

// SQL 文字列を解析して実行
$row_count=OCIParse($OracleDBConn, $sql_count);       
OCIExecute($row_count);

// 解析され実行されたクエリから、見つかったレコードの量を取得します。
// 新しいレコードが許可されているため、この結果をセッション変数に保存しません
//結果
//が出力される間、別のユーザーが入力したとおりに表示されます。
if (OCIFetch($row_count)) {
$num_rows = OCIResult($row_count,1);
} else {
$num_rows = 0;        // レコードが見つからなかった場合
}

// このクエリに使用されたリソースを解放します
OCIFreeStatement($row_count);

// 結果をページとして出力するクエリを準備する必要があります。
// クエリについて詳しく説明します。

// URL にページが指定されていない場合 (例: http://mysite.com/result.php?page=2)、
// それを設定します1 ページ目へ。
if (empty($page) || $page == 0) {
$page = 1;
}

// 結果を印刷する開始範囲
$start_range = (($page - 1) * $display_rows) + 1;

// 結果を印刷する終了範囲
$end_range = $page * $display_rows;

// メインクエリ。これは、それぞれ
// にネストされた 3 つの「SELECT」ステートメントで構成されます。中央のクエリは、必要な
// レコードを返すために通常使用するクエリです。このステートメントで順序と "WHERE" 句を指定しますか?
// 結果を制限するために行を選択しますが、順序付けが完了する前に行番号が
// 行に割り当てられるため、コードで
// を出力させます。 result unsorted.
// 2 番目にネストされた "SELECTED" は、新しい行番号を result に割り当てます
// 選択できるようにします。

$sql = "SELECT PK_ID, FIELD1, FIELD2, FIELD3, ROW_NO FROM (SELECT PK_ID, ";
$sql .= "FIELD1, FIELD2, FIELD3, ROWNUM ROW_NO FROM (SELECT PK_ID, FIELD1, ";
$sql .= "FIELD2, FIELD3 FROM SAMPLE_TABLE ORDER BY FIELD3)) WHERE ROW_NO BETWEEN ";
$sql . = $start_range." AND ".$end_range;

// 結果の書式設定を開始します
echo "

";
echo "";
echo "";
echo "";
echo "";
echo "";
echo "";
echo "";

if ($num_rows != 0) {

// SQL文字列を解析して実行します
$rs=OCIParse($OracleDBConn, $sql);       
OCIExecute($rs);

// 後で使用するために列の数を取得します
$num_columns = OCINumCols($rs);

while (OCIFetch($rs)){
echo "";
のために($i = 1; $i < ($num_columns + 1); $i++) {
$column_value = OCIResult($rs,$i);
echo "";
}
echo "";
}

} else {

// レコードが見つからなかったことを示すメッセージを出力します
echo "";
}

// テーブルを閉じる
echo "
PK IDフィールド 1フィールド 2フィールド 3< /b>行番号
$column_value
申し訳ありません! レコードはありませんでしたfound
";

// リソースを解放し、接続を閉じる
OCIFreeStatement($rs);
OCILogoff( $OracleDBConn);

?>


// ここで他のページへのリンクを印刷します

// ページ数の計算
if ($num_rows % $display_rows == 0) {
$total_pages = $num_rows / $display_rows;
} else {
$total_pages = ($num_rows / $display_rows) + 1;
settype($total_pages, integer); // 変数を四捨五入します
}

// これが最初のページでない場合は、前のページへのリンクを出力します
if ($page != 1) {
echo "";
}

// これで、他のページへのリンクを印刷できます
for ($i = 1; $i < ;= $total_pages; $i++) {
if ($page == $i){
// 現在のページへのリンクを印刷しません
echo " ".$i;
} else {
//他のページへのリンク
echo " ".$i."";
}
}

// これが最後のページでない場合は、次のページへのリンクを印刷します
if ($page < $total_pages) {
echo " Next";
}

?>


// の一部を印刷するためにこのセクションを追加しています。追加情報用の変数
// およびいくつかのデバッグ

echo "

総ページ数: ".$total_pages."

";
echo "

;レコード数: ".$num_rows."

";
echo "

SQL クエリ: $sql."

";

?>


www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/315007.html技術記事 !DOCTYPE HTML PUBLIC -//W3C//DTD HTML 3.2 Final//EN HTML HEAD TITLEPaging Test/TITLE META NAME=Generator CONTENT=TextPad 4.0 META NAME=Author CONTENT=?メタ名=キーワード内容=?...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート