2009-03-02 44 views
1

我正在使用php,我想做下一步按鈕,這是一步到下10條記錄(就像當你用stackoverflow瀏覽問題時) 我不知道該怎麼做,但我正在考慮這樣做與前n記錄?你認爲這是一個好主意嗎?任何建議?如何使用php mssql瀏覽結果?

+0

你的意思是MS SQL服務器或MySQL?你如何做到這一點在兩者之間是非常不同的。 – 2009-03-02 20:11:24

回答

3

至於在PHP這樣做,你可以很容易地使按鈕發送POST或GET請求的起始金額。例如,用戶將發出初始請求,這只是yoursite.com/search.php,並且下一個按鈕將它們發送到具有相同搜索條件的同一頁面,只發送附加字段「開始」(即yoursite.com/search.php?start=10)。而在代碼中,你可以簡單地檢查它:

if(isset($_POST['start'])) { 
    //code to add to the search string to start at $_POST['start'] 
} 

編輯1:This article是我能找到的關於如何複製MySQL的LIMIT功能最好的。此外,this one有一個更明確的查詢引用,但它是相同的想法。

0

我知道在MySQL中你可以使用LIMIT X,Y,其中X是返回的下界,Y是上界。所以如果你想返回10-20,你會使用LIMIT 10,20。不知道MS-SQL是什麼。

+0

錯誤,x =偏移和y =行數 – Karsten 2009-03-02 20:38:18

0

不是mssql在MySQL中有類似LIMIT的東西嗎?所以你可以這樣做:

select xxx from yyy LIMIT 0,10 

的前10個結果,那麼就LIMIT 10,20爲未來10個結果等

+0

不,它不。 TOP讓你做LIMIT 0,10,但它不會讓你做LIMIT 10,20。 – ceejayoz 2009-03-02 20:00:21

+0

?他在回答中使用限制,而不是頂部。 – 2009-03-02 20:02:35

0

您可以使用MySQL的限制

設置一個變量叫:

$limit = 10; 
$pl = $_GET["page"] * $limit; 
if(!isset($_GET["page"]) || $_GET["page"] == 1) 
{ 
    $pl = 0; 
} 

,並在您的查詢做

$sql = sprintf("SELECT * FROM table LIMIT %d,%d" 
mysql_real_escape_string($pl), 
mysql_real_escape_string($limit)); 

順便說一句,這是從內存,但我認爲它的工作原理。

0

這對你有幫助嗎?

$count=$_POST[page]*10; 
0

爲MySQL:

$rowsPerPage = 10; 
$offset = ((int)$_GET['page'] - 1) * $rowsPerPage; 

$result = mysql_query(
    sprintf('select xxx from yyy LIMIT %d,%d', $offset, $rowsPerPage) 
);