2013-02-22 49 views
0

我想實現一個「頁面」系統,以便在第一頁中顯示10個結果(1-10),在第二頁中顯示其他10(11-20)個結果。等如何將查詢結果分成頁面?

結果應該以不同的方式進行排序,例如ORDER BY count DESC; 是否有純粹的MySQL的解決方案,這一點,像

$results_per_page = 10; 
$page_number = $_GET['page']; 

mysql_query("SELECT * FROM mytable ORDER BY count DESC 
LIMIT $results_per_page*$page , $results_per_page*($page+1) // Of course, I made up this line 
;"); 
+1

你想的是什麼做叫做分頁。你需要停止使用'mysql_'函數。 – Kermit 2013-02-22 19:40:54

+0

謝謝。爲什麼不是mysql_函數?我應該用什麼來代替? – marvin 2013-02-22 19:42:00

+0

看到[**紅框**](http://j.mp/Te9zIL)?學習[*準備的語句*](http://j.mp/T9hLWi),並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [這篇文章](http://j.mp/QEx8IB)將幫助你決定哪個。 – Kermit 2013-02-22 19:42:21

回答

0

我找到了答案,我的問題,我應該選擇他們像

SELECT * FROM mytable ORDER BY whatever DESC LIMIT 10 OFFSET 10; 

第二頁。

所以與變量變得

SELECT * FROM mytable ORDER BY whatever DESC LIMIT $results_per_page OFFSET $page_number-1; 
0

清潔$ page變量之後,因爲你永遠不應該直接從用戶出於安全考慮接受輸入,你應該這樣做:

<?php 
$first = $results_per_page * ($page-1); // on page 1 you want to start at row 0 
$querystring = "SELECT * FROM mytable ORDER BY count DESC 
LIMIT $first, $results_per_page"; 
?> 
+0

謝謝。你究竟通過「清理」變量意味着什麼? – marvin 2013-02-22 19:52:10

+0

如果您使用mysql_函數(您不應該這樣做),請運行mysql_real_escape_string($ page)以確保它是查詢安全的。無論您決定使用哪種數據庫訪問方式,都要確保使用它來準備使用$頁面。 – DiMono 2013-02-22 19:55:53

0
make a function passing four parameters 
function getresult($index,$order,$start,$no_rows) 
{ 

    $sql="SELECT * FROM mytable order by $index $orders limit $start,$no_rows"; 
} 

其中,

$ index =你想要做的排序

$爲了=遞增/遞減

$開始從佑=將開始得到記錄

$ NO_ $行=你想獲得無行