PHP ค้นหา และแบ่งหน้า MySQL MariaDB บทความนี้สอนเขียนโค้ดแสดงข้อมูลจากฐานข้อมูล พร้อมคุณสมบัติค้นหาด้วยคำสั่ง LIKE และแบ่งหน้าด้วยคำสั่ง LIMIT ฐานข้อมูล MySQL MariaDB สามารถเขียนโปรแกรมได้ดังนี้
ตัวอย่าง คำสั่ง SQL สร้างตารางชื่อ words พร้อมข้อมูล
CREATE TABLE `words` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` char(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=25 DEFAULT CHARSET=utf8mb4
INSERT INTO
words
VALUES
( NULL, 'Java' ),
( NULL, 'SQL' ),
( NULL, 'MySQL' ),
( NULL, 'PHP' ),
( NULL, 'HTML' ),
( NULL, 'MS SQL Server' )
ตัวอย่าง PHP ค้นหา และแบ่งหน้า MySQL MariaDB
<form action="<?=$_SERVER['PHP_SELF'];?>" method="POST">
ค้นหา <input type="text" name="search"> <input type="submit" value="ค้นหา">
</form>
<?php
$pre_page = 2;
isset( $_REQUEST['search'] ) ? $search = $_REQUEST['search'] : $search = "";
isset( $_GET['page'] ) ? $page = $_GET['page'] : $page = 1;
echo "<h4>ข้อมูลหน้าที่ ".$page."</h4>";
$c = mysqli_connect("localhost", "root", "", "example");
mysqli_query( $c, "SET NAMES UTF8" );
$sql = " SELECT * FROM words ";
if( !empty( $search ) ) {
$sql .= " WHERE ( name LIKE '%{$search}%' ) ";
}
$q = mysqli_query( $c, $sql );
$num = mysqli_num_rows( $q );
$page_break = ceil( $num/$pre_page );
$start_page = ( $page * $pre_page ) - $pre_page;
$sql .= " LIMIT {$start_page}, {$pre_page} ";
$q = mysqli_query( $c, $sql );
while( $f = mysqli_fetch_assoc( $q ) ) {
echo $f['name']."<br/>";
}
if( $page_break > 1 ) {
echo "<div style='margin-top:1rem;'>หน้าที่ ";
for( $i=1; $i<=$page_break; $i++ ) {
echo "<a href='".$_SERVER['PHP_SELF']."?page={$i}&search={$search}'>".$i."</a> ";
}
echo "</div>";
}
mysqli_close( $c );
?>
PHP ค้นหา และแบ่งหน้า MySQL MariaDB มีรายละเอียดคำสั่งที่สำคัญดังนี้
1. สร้างฟอร์มสำหรับค้นหาข้อมูล ตัวแปรชื่อ search ด้วยภาษา HTML
2. กรณีมีการค้นหา เพิ่มคำสั่ง WHERE ร่วมกับ LIKE ใน SQL เพื่อค้นหาข้อมูลในตาราง words
3. นับจำนวนข้อมูลด้วย mysqli_num_rows และใช้คำสั่ง LIMIT เพื่อกำหนดการแสดงข้อมูลต่อ 1 หน้า
4. กรณีตัวแปร page_break มีค่ามากกว่า 1 แปลว่าต้องสร้างลิงก์เปลี่ยนหน้าให้ผู้ใช้งานที่หน้าเว็บไซต์