GORAGOD.com

โค้ดแบ่งหน้าอีกแบบ

ตัวอย่างการทำการแบ่งหน้าเพจ แบบทั่วๆไป
<?
$page=$_GET[page];
$list_per_page = 10; //กำหนดจำนวนแสดงต่อหน้า
if (empty($page)) $page=1; //แสดงหน้าแรก
$group=floor($page/$list_per_page )+1; //กลุ่มหน้า

$count=30; //จำนวนข้อมูลทั้งหมด อ่านออกมาจากฐานข้อมูล
$pages=$count/$list_per_page ;
if ($pages*$list_per_page <$count) $pages++; //มีเศษให้ + อีก 1
$start=$group*$list_per_page -9;

echo "แสดงหน้าที่ $page<br />group=$group<br />start=$start<br /><br /><br />"; //เอาต่าเหล่านี้ไปกำหนดในฐานข้อมูล

for ($i=1; $i<=$pages;$i++) {
  if ($i!=$group) echo "[<a href=?page=".(($i-1)*10+1).">$i</a>] "; //แสดงกลุ่มหน้า
  else {
    $end=$start+10;
    for ($n=$start; $n<$end;$n++) {
      if ($n!=$page) echo "<a href=?page=$n>$n</a>, ";
      else echo "<font color=red>$n</font>, ";
    }
  }
}
?>

การใช้งาน ต้องมีการ query อย่างน้อย 2 ครั้ง โดยครั้งแรกต้อง query เอาจำนวนข้อมูลทั้งหมดออกมาก่อน เพื่อกำหนดให้กับ $count

$sql1 = "SELECT COUNT(id)  FROM webboard WHERE 1;"; 
$count = my_sql_num_rows( $query );

ครั้งที่ 2 เอาค่าที่คำนวณได้ คือ $start ไปกำหนดให้กับ query ที่ 2 เพื่อเอาข้อมูลที่จะแสดงออกมา

$sql2 = "SELECT * FROM webbard WHERE 1 LIMIT $start $list_per_page;";

ตัวอย่างการ query ของเว็บบอร์ด เพื่อเอาข้อมูลมาแสดง