PHP Pagination การแบ่งเพจแบบง่ายๆ


การแบ่ง page นั้น สามารถทำได้หลายวิธีครับ เช่นการแสดงหมายเลข แสดงปุ่ม next,previous และการแสดง page ปัจจุบัน อย่ามัวรีรอเลยครับ เรามาดูการแบ่ง page แบบง่ายๆกันดีกว่าครับ

เพื่อให้เข้าใจง่ายเราจะมีการแบ่งเป็นสองส่วนคือ
1. การแบ่งหนัา page เช่น 1,2,3,4,...,100
2. การทำปุ่ม Next,Previous
มาเริ่มกันเลยครับผมมม...
/////////////////////////////////////////////// ส่วนนี้คือการคำนวน เพื่อเปลี่ยน record เมืือกดเปลี่ยน page ครับ//////////////
<?
$pagesize = 3;   //จำนวน record ที่ต้องการแสดงในหนึ่งหน้า

$start = 0; // ค่าของ record โดย page1 $startต้อง=0, page2 $startต้อง=3,page3 $startต้อง=6
if (isset($page)){
$start = $pagesize*($page - 1); //นี้เป็นสูตรการคำนวนครับ
}
else{
$page = 0;
$start = 0;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


$sql = "SELECT *                                              //เลือกข้อมูลที่ต้องการนำมาแสดงครับ
FROM newspaper
WHERE status LIKE '%online%'
";

$result = mysql_query($sql);                      //เก็บข้อมูลไว้ใน $result
$num_rowsx = mysql_num_rows($result);  //ใช้คำสั่ง mysql_num_rows เพื่อหาจำนวน record ทั้งหมด
$totalpage =  ceil($num_rowsx/$pagesize);
//หาค่า page ทั้งหมดว่ามีกี่ page โดยการนำ record ทั้งหมดมาหารกับจำนวน record ที่แสดงต่อหนึ่งหน้า //แต่อาจได้ค่าทศนิยม เราจึงใช้คำสั่ง ceil เพื่อปัดค่าขึ้นเป็นจำนวนเต็มครับ
///////////////////////////////////////select sql ครั้งที่สอง เพื่อกำหนด ว่าจะแสดงกี่ record ต่อ 1 page////////////////////////

$sql = "SELECT *
FROM newspaper
WHERE status LIKE '%online%'
ORDER BY news_date DESC
LIMIT $start,$pagesize";//คำสั่งแสดง record ต่อหนึ่งหน้า $pagesize = ต้องการกี่ record ต่อ
//หนึ่งหน้า  $start= เริ่มจาก record ที่เท่าไหร่


$result = mysql_query($sql);
$num_rows = mysql_num_rows($result);



?>
<? while($row = mysql_fetch_array($result)){
//วนลูป record มาเก็บค่าไว้เพื่่อเรียกใช้งานครับ


$news_header=$row[news_header];

?>
//เช่นผมอยากแสดง news_header ก็ใช้
<?php echo $row['news_header']; ?> //ก็จะแสดง news_header ของทุก record จนหมด
<?
              } //end while
?>
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
1. การแบ่งหนัา page เช่น 1,2,3,4,...,100

<?
$page = 0; //กำหนดค่าตัวแปรเท่ากับ 0
for($i=1;$i<=$totalpage;$i++){
//ใช้ for loop แสดงค่า page โดยมีสูตรคำนวน $totalpage บรรทัดบน

$page++;
?>
<a href="news.php?page=<?php echo "$page";?>"><? echo "$page"; ?></a>
//สร้างลิ้งค์เพื่อส่งค่า pageที่ถูกวนลูบ ออกมาแสดงครับ เพื่อให้เรากดเลือก page ได้ ตรงนี้จะได้ส่วนของการแบ่งหนัา page เช่น 1,2,3,4,...,100 เสร็จแล้วครับ
<?

}


?>
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
2. การทำปุ่ม Next,Previous
<?

$page = $_GET['page'];   //ตรวจสอบค่า page
echo "Page : $page<br />";    // แสดงหน้าปัจจุบัน

?>

<?
if($page > 1) //ถ้า ค่า page มากกว่า 1 แสดงปุ่ม ย้อนกลับ Previuos
{
$pg = $page -1;
echo "<a href='news.php?page=$pg'>Previuos</a>"; //ส่งค่า page ที่ลดลง 1 เมื่อกดปุ่ม next
}
?>
<bb><bb>
<?
//next
if ($page < $totalpage) //ถ้า ค่า page น้อยกว่า page ทั้งหมด(page ท้ายสุด) แสดงปุ่ม  Next
{
$pg = $page+1;
echo "<a href='news.php?page=$pg'>Next</a>";//ส่งค่า page ที่เพิ่มขึ้น 1 เมื่อกดปุ่ม next
}
?> // ค่า page อยุ๋กลางๆ ก็จะแสดงทั้งสองปุ่ม Next และ previous



Post a Comment

0 Comments