ใน
php มีวิธีการสร้าง ตารางวแสดงข้อมูลในรูปแบบแบ่งหน้าได้ ซึ่งเราสามารถกำหนดได้ว่าจะแบ่งกี่แถวเพื่อให้แสดงแต่ละหน้าครับ
การแสดงข้อมูลแบบแบ่งนี้เรียกว่า Pagination นอกจากนั้นยังสามารถแสดงหมายเลขเพื่อให้ผู้ใช้เลือกกดเพื่อเปิดลำดับหน้าที่ต้องการได้
ในการสร้างตารางในรูปแบบนี้ เราจำเป็นต้องมีไฟล์ "Pagination.class.php"
สำหรับวิธีการทำนั้น เราต้องนำเข้าไฟล์"Pagination.class.php" ก่อน สามารถดูตัวอย่างโค้ดได้ดังนี้
โค้ด: เลือกทั้งหมด
<?php
include 'Pagination.class.php';
$page = 1;
if (isset($_GET['page'])) {
$page = $_GET['page'];
}
$row = 10;
$totaldata_query="SELECT * FROM your_table";
$resultdata=mysqli_query($conn,$totaldata_query)or die("Query failed");
$total_data= mysqli_num_rows($resultdata);
$total_page = ceil($total_data/$row);
if ($page>=$total_page) {
$page=$total_page;
}
if($page<=0){
$page=1;
}
$start = ($page - 1) * $row;
$Pagination = new Pagination($page, $total_data);
$Pagination->parse();
?>
โด้ดด้านบนนี้จะเป็นการสร้างตัวแปรต่างๆที่สำคัญโดยใช้ข้อมูลจากฐานข้อมูลมาดำเนินการ เช่น
- $page = หน้าปัจจุบัน
- $total_data = จำนวนข้อมูลทั้งหมด
- $total_page = จำนวนหน้าทั้งหมดเมื่อเอาข้อมูลทั้งหมดมาหารแล้ว
- $start = จุดเริ่มต้นข้อมูล
สำหรับการสร้างตารางนั้น สามารถใช้โค้ดตัวอย่างดังนี้
โค้ด: เลือกทั้งหมด
<table class="table" style="width:100%">
<thead>
<!-- ส่วนของ thead -->
</thead>
<tbody>
<?php
$sql = "SELECT * FROM your_table ORDER BY id DESC LIMIT $start,$row";
$result=mysqli_query($conn,$sql)or die("Query failed");
if(mysqli_num_rows($result)>0){
while($datarow=mysqli_fetch_assoc($result)){
echo '<tr>';
//echo table data
echo '</tr>';
}
}
?>
</tbody>
</table>
และในส่วนของการแสดงลำดับหมายเลขหน้า ดังนี้
โค้ด: เลือกทั้งหมด
<div class="row">
<div class="col-md-12">
<div class="text-center">
<nav aria-label="Page navigation">
<?php
echo $Pagination->parse();
?>
</nav>
</div>
</div>
</div>
<p class="text-center">ทั้งหมด <?php echo $total_data;?> รายการ</p>
ผลลัพธ์จะได้ดังอย่างนี้ครับ
- pagination.png (111.76 KiB) Viewed 3296 times
การแสดงข้อมูลแบบนี้มีข้อดี เช่น โหลดข้อมูลบางส่วนเฉพาะที่จะแสดงเท่านั้น ซึ่งคล้ายกับ
Datatableของ
javascript แต่นั้นจะโหลดข้อมูลทั้งหมดมาแล้วๆ นอกจากนั้นยังสามารถช่วยให้แสดงข้อมูลเป็นสัดส่วนไม่เยอะจนเกินไป เพื่อลดความสับสนของผู้ใช้เป็นต้น
ช่องทางการศึกษาเพิ่มเติมข่าวที่น่าสนใจเกี่ยวกับ : PHP Programming
-
ศึกษาความรู้เกี่ยวกับ PHP
-
ถามตอบเกี่ยวกับ PHP
-
บทเรียน php พื้นฐาน
-
บทเรียน PHP OOP
-
บทเรียน HTML
ใน [url=https://www.mindphp.com/%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD/73-%E0%B8%84%E0%B8%B7%E0%B8%AD%E0%B8%AD%E0%B8%B0%E0%B9%84%E0%B8%A3/2127-php-%E0%B8%84%E0%B8%B7%E0%B8%AD%E0%B8%AD%E0%B8%B0%E0%B9%84%E0%B8%A3.html]php[/url] มีวิธีการสร้าง ตารางวแสดงข้อมูลในรูปแบบแบ่งหน้าได้ ซึ่งเราสามารถกำหนดได้ว่าจะแบ่งกี่แถวเพื่อให้แสดงแต่ละหน้าครับ
การแสดงข้อมูลแบบแบ่งนี้เรียกว่า Pagination นอกจากนั้นยังสามารถแสดงหมายเลขเพื่อให้ผู้ใช้เลือกกดเพื่อเปิดลำดับหน้าที่ต้องการได้
ในการสร้างตารางในรูปแบบนี้ เราจำเป็นต้องมีไฟล์ "Pagination.class.php"
สำหรับวิธีการทำนั้น เราต้องนำเข้าไฟล์"Pagination.class.php" ก่อน สามารถดูตัวอย่างโค้ดได้ดังนี้
[code]<?php
include 'Pagination.class.php';
$page = 1;
if (isset($_GET['page'])) {
$page = $_GET['page'];
}
$row = 10;
$totaldata_query="SELECT * FROM your_table";
$resultdata=mysqli_query($conn,$totaldata_query)or die("Query failed");
$total_data= mysqli_num_rows($resultdata);
$total_page = ceil($total_data/$row);
if ($page>=$total_page) {
$page=$total_page;
}
if($page<=0){
$page=1;
}
$start = ($page - 1) * $row;
$Pagination = new Pagination($page, $total_data);
$Pagination->parse();
?>[/code]
โด้ดด้านบนนี้จะเป็นการสร้างตัวแปรต่างๆที่สำคัญโดยใช้ข้อมูลจากฐานข้อมูลมาดำเนินการ เช่น
[list][*]$page = หน้าปัจจุบัน
[*]$total_data = จำนวนข้อมูลทั้งหมด
[*]$total_page = จำนวนหน้าทั้งหมดเมื่อเอาข้อมูลทั้งหมดมาหารแล้ว
[*]$start = จุดเริ่มต้นข้อมูล[/list]
สำหรับการสร้างตารางนั้น สามารถใช้โค้ดตัวอย่างดังนี้
[code]<table class="table" style="width:100%">
<thead>
<!-- ส่วนของ thead -->
</thead>
<tbody>
<?php
$sql = "SELECT * FROM your_table ORDER BY id DESC LIMIT $start,$row";
$result=mysqli_query($conn,$sql)or die("Query failed");
if(mysqli_num_rows($result)>0){
while($datarow=mysqli_fetch_assoc($result)){
echo '<tr>';
//echo table data
echo '</tr>';
}
}
?>
</tbody>
</table>[/code]
และในส่วนของการแสดงลำดับหมายเลขหน้า ดังนี้
[code]
<div class="row">
<div class="col-md-12">
<div class="text-center">
<nav aria-label="Page navigation">
<?php
echo $Pagination->parse();
?>
</nav>
</div>
</div>
</div>
<p class="text-center">ทั้งหมด <?php echo $total_data;?> รายการ</p>
[/code]
ผลลัพธ์จะได้ดังอย่างนี้ครับ
[attachment=0]pagination.png[/attachment]
การแสดงข้อมูลแบบนี้มีข้อดี เช่น โหลดข้อมูลบางส่วนเฉพาะที่จะแสดงเท่านั้น ซึ่งคล้ายกับ[url=https://www.mindphp.com/forums/viewtopic.php?f=76&t=44684&p=111808]Datatable[/url]ของ [url=https://www.mindphp.com/%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD/73-%E0%B8%84%E0%B8%B7%E0%B8%AD%E0%B8%AD%E0%B8%B0%E0%B9%84%E0%B8%A3/2187-java-javascript-%E0%B8%84%E0%B8%B7%E0%B8%AD%E0%B8%AD%E0%B8%B0%E0%B9%84%E0%B8%A3.html]javascript[/url] แต่นั้นจะโหลดข้อมูลทั้งหมดมาแล้วๆ นอกจากนั้นยังสามารถช่วยให้แสดงข้อมูลเป็นสัดส่วนไม่เยอะจนเกินไป เพื่อลดความสับสนของผู้ใช้เป็นต้น
[b]ช่องทางการศึกษาเพิ่มเติมข่าวที่น่าสนใจเกี่ยวกับ : PHP Programming[/b]
-[url=https://www.mindphp.com/forums/viewforum.php?f=72]ศึกษาความรู้เกี่ยวกับ PHP[/url]
-[url=https://www.mindphp.com/forums/viewforum.php?f=6]ถามตอบเกี่ยวกับ PHP[/url]
-[url=https://www.mindphp.com/%E0%B8%9A%E0%B8%97%E0%B9%80%E0%B8%A3%E0%B8%B5%E0%B8%A2%E0%B8%99%E0%B8%AD%E0%B8%AD%E0%B8%99%E0%B9%84%E0%B8%A5%E0%B8%99%E0%B9%8C/%E0%B8%9A%E0%B8%97%E0%B9%80%E0%B8%A3%E0%B8%B5%E0%B8%A2%E0%B8%99-php.html]บทเรียน php พื้นฐาน[/url]
-[url=https://mindphp.com/%E0%B8%9A%E0%B8%97%E0%B9%80%E0%B8%A3%E0%B8%B5%E0%B8%A2%E0%B8%99%E0%B8%AD%E0%B8%AD%E0%B8%99%E0%B9%84%E0%B8%A5%E0%B8%99%E0%B9%8C/%E0%B8%AA%E0%B8%AD%E0%B8%99-php-oop.html]บทเรียน PHP OOP[/url]
-[url=https://www.mindphp.com/%E0%B8%9A%E0%B8%97%E0%B9%80%E0%B8%A3%E0%B8%B5%E0%B8%A2%E0%B8%99%E0%B8%AD%E0%B8%AD%E0%B8%99%E0%B9%84%E0%B8%A5%E0%B8%99%E0%B9%8C/%E0%B8%9A%E0%B8%97%E0%B9%80%E0%B8%A3%E0%B8%B5%E0%B8%A2%E0%B8%99-html.html]บทเรียน HTML[/url]