hy,我有一个问题,使用PHP和oracle数据库设置分页,页面只显示第一页的值。当我点击下一个按钮,页面从页面1改变到页面2,页面3等,但价值仍然与页面1相同。我不知道,我也没有任何想法来解决这个错误..分页始终显示页面第一
here是我设置的记录集代码..
<?php
// Set up recordset
define("ewSqlSelectCount", "SELECT count(*) count FROM sid_mst_dealer", true);
$sSql_count = BuildSqlang(ewSqlSelectCount, ewSqlWhere, ewSqlGroupBy, ewSqlHaving, ewSqlOrderBy, $sDbWhere, $sOrderBy);
//echo "$sSql_count" . "<br/ >";
$rs_count = moi_query($sSql_count , $conn) or die("Failed to execute query at line " . __LINE__ . ": " . moi_error($conn) . '<br>SQL: ' . $sSql);
//echo $rs_count;
oci_execute($rs_count);
$nTotalRecs = oci_fetch_array($rs_count);
$nTotalRecs = $nTotalRecs['COUNT'];
$rs = moi_query($sSql, $conn) or die("Failed to execute query at line " . __LINE__ . ": " . moi_error($conn) . '<br>SQL: ' . $sSql);
//echo $rs;
oci_execute($rs);
if ($nDisplayRecs <= 0) { // Display all records
$nDisplayRecs = $nTotalRecs;
}
$nStartRec = 1;
SetUpStartRec(); // Set up start record position
?>
这是功能..
function SetUpStartRec()
{
// Check for a START parameter
global $nStartRec;
global $nDisplayRecs;
global $nTotalRecs;
if (strlen($_GET[ewTblStartRec]) > 0)
{
$nStartRec = $_GET[ewTblStartRec];
$_SESSION[ewSessionTblStartRec] = $nStartRec;
} elseif (strlen($_GET["pageno"]) > 0)
{
$nPageNo = $_GET["pageno"];
if (is_numeric($nPageNo))
{
$nStartRec = ($nPageNo-1)*$nDisplayRecs+1;
if ($nStartRec <= 0)
{
// echo 'jangan ke sini';
$nStartRec = 1;
}
elseif ($nStartRec >= (($nTotalRecs-1)/$nDisplayRecs)*$nDisplayRecs+1)
{
$nStartRec = (($nTotalRecs-1)/$nDisplayRecs)*$nDisplayRecs+1;
}
$_SESSION[ewSessionTblStartRec] = $nStartRec;
}
else
{
$nStartRec = $_SESSION[ewSessionTblStartRec];
if (!(is_numeric($nStartRec)) || ($nStartRec == ""))
{
$nStartRec = 1; // Reset start record counter
$_SESSION[ewSessionTblStartRec] = $nStartRec;
}
}
}
else
{
$nStartRec = @$_SESSION[ewSessionTblStartRec];
if (!(is_numeric($nStartRec)) || ($nStartRec == "")) {
$nStartRec = 1; // Reset start record counter
$_SESSION[ewSessionTblStartRec] = $nStartRec;
}
}
}
,这里是查询
<?php
define("ewTblVar", "sid_mst_dealer", true);
define("ewTblRecPerPage", "RecPerPage", true);
define("ewSessionTblRecPerPage", "sid_mst_dealer_RecPerPage", true);
define("ewTblStartRec", "start", true);
define("ewSessionTblStartRec", "sid_mst_dealer_start", true);
define("ewTblShowMaster", "showmaster", true);
define("ewSessionTblMasterKey", "sid_mst_dealer_MasterKey", true);
define("ewSessionTblMasterWhere", "sid_mst_dealer_MasterWhere", true);
define("ewSessionTblDetailWhere", "sid_mst_dealer_DetailWhere", true);
define("ewSessionTblAdvSrch", "sid_mst_dealer_AdvSrch", true);
define("ewTblBasicSrch", "psearch", true);
define("ewSessionTblBasicSrch", "sid_mst_dealer_psearch", true);
define("ewTblBasicSrchType", "psearchtype", true);
define("ewSessionTblBasicSrchType", "sid_mst_dealer_psearchtype", true);
define("ewSessionTblSearchWhere", "sid_mst_dealer_SearchWhere", true);
define("ewSessionTblSort", "sid_mst_dealer_Sort", true);
define("ewSessionTblOrderBy", "sid_mst_dealer_OrderBy", true);
define("ewSessionTblKey", "sid_mst_dealer_Key", true);
// Table level SQL
define("ewSqlSelect", "SELECT * FROM sid_mst_dealer", true);
if($_REQUEST[dealer_id]==""){
if($_REQUEST[x_status]!=""){
define("ewSqlWhere", " active_flag ='".$_REQUEST[x_status]."'", true);
}else{
define("ewSqlWhere", "active_flag='0'", true);
}
}else{
define("ewSqlWhere", "", true);
}
define("ewSqlGroupBy", "", true);
define("ewSqlHaving", "", true);
define("ewSqlOrderBy", "", true);
define("ewSqlOrderBySessions", "", true);
define("ewSqlKeyWhere", "dealer_id = '@dealer_id'", true);
define("ewSqlUserIDFilter", "", true);
?>
我真的需要帮助来解决这个问题..谢谢你:D
该代码是非常难以阅读 - 有一个'limit'条款潜伏在那里? – RamRaider
@RamRaider我也有同样的问题与你,这不是我的代码,我只做这个增强。所以我没有任何想法..真的很困惑..我试图理解这一点,但它很难。 – user3661054
@ user3661054如果您需要实现分页查询,然后查看[**分页查询是如何工作的**](http://stackoverflow.com/questions/30321483/how-rownum-works-in-pagination-query/30321788 #30321788) –