これは複数の方法で実行できます。
私が見る一般的な方法は、ページがデータベース全体をクエリし、結果を配列に格納することです。変数は、ページごとの結果の数を決定するために使用され、変数はアクティブなページを保持するために使用されます。GETまたはPOSTを使用して、現在のページを管理できます。
例:
100個のアイテムがあり、1ページに10個のアイテムを表示したい場合は、10ページになります。(91個のアイテムがある場合は、10ページも表示されるはずです!)
$sql = mysql_query("SELECT * FROM LESSONS WHERE L_STATE='0' ORDER BY ID DESC") or die($sql_error);
//DETERMINE PAGE SIZE/NUMBERS
$currentPage = $_GET["page"];
$itemPerPage = 10;
$itemTotal = mysql_num_rows($sql);
$lastPage = $itemTotal / $itemPerPage + 1; //+1, because you round up to whole pages
$startItem = $currentPage * $itemsPerPage;
if($itemTotal > 0){
//PUT DATA IN ARRAYS
while($rs = mysql_fetch_assoc($sql)){
$id[] = $rs['ID'];
$l_title[] = $rs['L_TITLE'];
$l_comments[] = $rs['L_COMMENTS'];
$l_views[] = $rs['L_VIEWS'];
}
//DETERMINE WHAT PAGE AND ITEMS TO SHOW
if(0 < $currentPage && $currentPage <= $lastPage){
for($i=$startItem;$i<=$startItem+$itemsPerPage;$i++){
//EXIT LOOP IF END OF ITEMS
if($i > $itemTotal){
break;
}
//DISPLAY DATA
echo "<table><tr><th>id</th><th>title</th><th>comments</th><th>views</th></tr><tr>";
echo "<tr><td>" . $id[$i] . "</td><td>" . $l_title[$i] . "</td><td>" . $l_comments[$i] . "</td><td>" . $l_views[$i] . "</td></tr>";
echo "</table>";
}
//DISPLAY PAGE NUMBERS
echo "<br />";
echo "<a href='/?page=0'>|<</a>";
echo "<a href='/?page=" . $currentPage - 1 . "'><</a>";
for($i=0;$i<$lastPage;$i++){
echo "<a href='/?page=" . $i . "'>" . $i . "</a>";
}
echo "<a href='/?page=" . $currentPage + 1 . "'>></a>";
echo "<a href='/?page=" . $lastPage . "'>>|</a>";
echo "<br />";
} else {
//If invalid page number, send to page 0
header("Location: /?page=0");
}
}else{
$l_id = $no_data;
$l_title = $no_data;
$l_comments = $no_data;
$l_views = $no_data;
}