การเขียน Pagination บน PHP แบบพื้นฐาน

x

จุดเริ่มต้นของ Code php

x

// กำหนดค่าตัวแปร ที่ต้องการให้แสดงข้อมูลต่อหนึ่งหน้า เช่น ต้องการให้แสดง 10 รายการต่อหน้า
$perpage = 10;

// ตรวจสอบการว่ามีการส่งข้อมูลแบบ GET มาหรือไม่ คือ ทุกครั้งที่เราคลิกหน้า ที่เราต้องการ จะมีการส่งเลขหน้ามาให้ เช่น หน้า 2 หน้า 3 เป็นต้น
if(isset($_GET[‘page’])){
$page = $_GET[‘page’];
}else{
$page = 1;
}

// กำหนดจุดเริ่มต้นของ Record ที่ต้องการแสดง เช่น มี 200 ราย จะให้เริ่มแสดงที่รายการใด เช่น แสดงที่รายการเริ่มต้น 0
// ภาษา php นับ รายการแรกเป็น ลำดับที่ 0 แทนที่จะเริ่มลำดับที่ 1 อันนี้สำคัญ
$start = ($page * $perpage)- $perpage;

//กำหนดจำนวนที่ต้องการให้แสดงต่อหน้า เช่น ให้แสดงหน้าละ 10 เป็นต้น
$end = ($perpage);

// ตรงนี้กำหนดให้แสดง จุดเริ่มต้นของรายการ และ จำนวนรายการที่นับต่อจากจุดเริ่มต้น
echo “Record begin : “.$start;
echo ” – “;
echo ” Plus record : “.$end;
echo “<br/>”;
echo “<hr/>”;

// เตรียมข้อมูล โดยจำลองการดึงข้อมูลแบบ Limit ใน Mysql ซึ่งใน array จะใช้ array_slice แทน
$data = array_slice($array_list,$start,$end);

// นับจำนวน record ทั้งหมดที่ได้ในฐานข้อมูล หรือในการคิวรี่ข้อมูลมาแต่ละครั้ง เพื่อเอามาหาจำนวนหน้าที่จะแสดงได้ จนครบทุกรายการ
$total_record = count($array_list);

// กำหนดหาจำนวนหน้า เช่น กำหนดให้แสดงหน้าละ 10 รายการ แล้วจำนวนทั้งหมดที่นับได้ด้านบน เท่ากับ 200 ดังนั้น จะได้จำนวนหน้าเท่ากับ 20 หน้า
// ใช้ฟังก์ชั่น ceil() เพื่อตัดเอาเศษคิดเป็นจำนวนเต็ม ปัดขึ้นอย่างเดียว
$total_page = ceil($total_record / $perpage);
$i = 1;

// วน Loop แสดงข้อมูลจากที่คิวรี่ได้มา ตัวอย่าง ได้จาก array_slice()
foreach($data as $key => $value){
echo “The value is : “.$value.”<br>”;

}

// วน Loop แสดงจำนวนหน้า พร้อมทำลิงค์ ไปมาให้ในแต่ละหน้าด้วย
echo ‘<center><hr/>’;
echo ‘<a href=”index.php?page=1″> First Page</a> ‘;
for($i=1;$i<= $total_page;$i++){
echo ‘ <a href=”index.php?page=’.$i.'”>’.$i.'</a> |’;
}
echo ‘<a href=”index.php?page=’.$total_page.'”> Last Page</a>’;
echo ‘</center><hr/>’;
?>

Leave a Reply

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *