分頁測驗
//如何將結果分頁,就像MySQL 中的「限制」?
// ======================================== ======= ================
// Neil Craig (neilc@netactive.co.za) 的教學
// 日期:2001-06- 05
/ / 透過這個例子,我將解釋資料庫查詢的分頁,其中
// 結果超出了開發人員想要列印到頁面的範圍,但希望
// 將結果分割成單獨的
//本教學中存取的表格「SAMPLE_TABLE」有4 個欄位:
// PK_ID、FIELD1、FIELD2 和FIELD3。類型並不重要,但您應該
// 在 PK_ID 欄位上定義主鍵。
$display_rows = 5; // 一次應該顯示的行。您可以
// 若您願意,且您願意修改此內容。
// 連接到Oracle 資料庫
putenv("ORACLE_SID=purk");
putenv("ORACLE_HOME=/export/oracle8i ");
putenv("TNS_ADMIN/$ network/admin");
$OracleDBConn = OCILogon("purk","purk","lengana.world");
/ / 此查詢對記錄進行計數
$sql_count = " SELECT COUNT(*) FROM SAMPLE_TABLE";
// 解析SQL 字串並執行它
$row_count=OCIParse($OracleDBConn, $sql_count ); $ >
// 從解析和執行的查詢中,我們取得找到的記錄數量。
// 我不會將此結果儲存到會話變數中,因為它允許
//在列印結果時
//由其他使用者輸入新記錄。
if (OCIFetch($row_count)) {
$num_rows = OCIResult( $row_count,1);
} else {
$num_rows = 0;
// 釋放用於此查詢的資源
OCIFreeStatement($row_count);
// 我們需要準備查詢將結果列印為一頁。我將
//詳細向您解釋查詢。
//如果網址中未指定頁面(例如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;
// 主查詢。它由嵌套在每個
// other 中的 3 個「SELECT」語句組成。中心查詢是您通常用來傳回您想要的
// 記錄的查詢。在此語句中是否進行排序和「WHERE」子句。
//我們選擇行來限制我們的結果,但因為行號
//在完成任何排序之前分配給行,讓程式碼列印the
// 結果未排序。
// 第二個嵌套的 "SELECTED" 將新的行號分配給結果
// 供我們選擇。
$sql = "SELECT PK_ID、FIELD1、FIELD2、FIELD3、ROW_NO FROM (SELECT PK_ID, ";
$sql .= "FIELD1、FIELD2、FIELD3、🎜>$sql .= "FIELD1、FIELD2、FIELD3、D31D3, FROL) ( ";
$sql .= "FIELD2 , FIELD3 FROM SAMPLE_TABLE ORDER BY FIELD3)) WHERE ROW_NO BETWEEN ";
$sql .= $start_range." AND ".$end_range;
$sql .= $start_range." AND ".$end_range;
$sql .= $開始結果格式化
echo "
";
echo "";
echo "PK ID | ";
echo "字段1 | ";
echo "字段2 | ";
echo "字段3 | ";
echo "行號 | ";
echo "
";
if ($num_rows != 0) {
//解析SQL 字串&執行它
$rs ;
// 獲取列數以供稍後使用
$num_columns = OCINumCols($rs);
while (OCIFetch($rs)) {
echo "";
for ($i = 1; $i echo " $column_value | ";
}
echo "";
,指出沒有找到記錄
echo "抱歉!沒有找到記錄
";
}
//關閉表
echo "
";
//釋放資源並關閉連接
OCIFreeStatement($rs);
OCILogoff ($OracleDBConn);
?>
/這裡我們將列印到其他頁面的連結
// 計算頁數
if ($num_rows % $display_rows == 0) {
$total_pages = $num_rows / $ $display. else {
$total_pages = ($num_rows / $display_rows) 1;
settype($total_pages, 整數); // 對變數進行四四點
這不是第一次
一頁,則列印上一頁的連結
if ($page != 1) {
echo "Previous";
}
// 現在我們可以列印到其他頁面的連結
for ($i = 1; $i if ($page == $i){
// 不要將連結連結至目前頁面
//列印其他頁面的連結
echo " ".$i."";
}
}
}
}
}
}
}
// 如果這不是最後一頁,則列印下一頁的連結
if ($page echo " 下一個";
}
?>
// 我只是添加此部分來打印一些變量以獲取額外信息
// 和一些調試
echo "總頁數:" .$total_pages."
";
echo "記錄數:".$num_rows."< ;/p>";
echo "
SQL 查詢是: ".$sql."
";
?> ;
http://www.bkjia.com/PHPjc/315007.htmlwww.bkjia.comtruehttp: //www.bkjia.com/PHPjc/315007.htmlTechArticle!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 3.2 Final//EN HEAD TITLEPaging Test/名稱=生成器內容=TextPad 4.0 元名稱=作者內容=? META NAME=關鍵字內容=?...