2013-06-02 47 views
1

基本上,我想通過使用@rownum顯示來自表的行數和第一頁的數據,但是當我們轉到下一頁時,我們開始再次排第一。如何通過連接獲得Mysql rownum

查詢代碼:

$sql = "SELECT @rownum:[email protected]+1 as rownum, t.*FROM (SELECT @rownum:=0) r, (select * from tbl) t 
     LIMIT $Page_Start , $Per_Page"; 

pagenation代碼:

$objConnect = mysql_connect("localhost","user","pass") or die("Error Connect to Database"); 
`enter code here`$objDB = mysql_select_db("WEB"); 
$strSQL = "SELECT * FROM line "; 
$objQuery = mysql_query($strSQL) or die ("Error Query [".$strSQL."]"); 
$Num_Rows = mysql_num_rows($objQuery); 

$Per_Page = 2; // Per Page 

$Page = mysql_real_escape_string($_GET["Page"]); 
if(!$_GET["Page"]) 
{ 
$Page=1; 
} 

$Prev_Page = $Page-1; 
$Next_Page = $Page+1; 

$Page_Start = (($Per_Page*$Page)-$Per_Page); 
    if($Num_Rows<=$Per_Page) 
{ 
$Num_Pages =1; 
} 
else if(($Num_Rows % $Per_Page)==0) 
{ 
$Num_Pages =($Num_Rows/$Per_Page) ; 
} 
else 
{ 
    $Num_Pages =($Num_Rows/$Per_Page)+1; 
    $Num_Pages = (int)$Num_Pages; 
    } 

pagenation用法:

if($Prev_Page) 
{ 
echo "<a href='$_SERVER[SCRIPT_NAME]?Page=$Prev_Page'> Back</a> &nbsp&nbsp;&nbsp; "; 
} 

if($Page!=$Num_Pages) 
{ 
echo " <a href ='$_SERVER[SCRIPT_NAME]?Page=$Next_Page'>Next</a> "; 
} 

所以我想行號後頁面 例如,第1不斷增加頁第1-5行和第2頁應該是6-10這樣的東西

非常感謝

+0

你能在你的SQL查詢添加一個參數來初始化ROWNUM到pagestart而不是0?這樣,它應該隨着頁面增加而增加,我認爲。 – sgeddes

回答

1

你需要用計算來獲得行號子查詢中,並限制其在外部SELECT語句,以便將ROW_NUMBER不會打破,EX,

列名錶名可能與上面的示例不同,但查詢的想法是相同的。

SELECT RowNumber, Student_ID, Student_Name 
FROM 
     (
      SELECT @rownum := @rownum + 1 RowNumber, 
        t.* 
      FROM student t, (SELECT @rownum := 0) s 
      ORDER BY t.Student_ID 
     ) subQ 
// LIMIT 0, 3 
+0

謝謝JW它幾乎工作,但我不知道如何把兩個SQL查詢在同一頁,因爲如果我把它們放在一起第一個不會工作 – amprie286

+0

你是什麼意思由兩個SQL查詢?你只需要一個。你只需要操作'LIMIT'。 –

+1

對不起JW它現在就像一個魅力只是忽略上面的評論我很困惑自己非常感謝。 – amprie286