PHP SQL Server Search Data Paging/Pagination (sqlsrv) |
PHP SQL Server Search Data Paging/Pagination (sqlsrv) บทความนี้จะเป็นตัวอย่างของ sqlsrv และการค้นหา (Search) ข้อมูล และการแบ่งหน้า (Paging) การเขียน PHP เพื่อค้นหาข้อมูลจาก Database ของ SQL Server มาแสดงผลทางหน้าจอและการแบ่งหน้าแสดงผลออกเป็นหลาย ๆ หน้า ตามปริมาณข้อมูลที่ค้นพบด้วย function ต่าง ๆ ของ sqlsrv ทำงานร่วมกับการ fetch ข้อมูลในรูปแบบของ array
Syntax รูปแบบการใช้งาน
$stmt = " SELECT c.* FROM (
SELECT ROW_NUMBER() OVER(ORDER BY CustomerID) AS RowID,* FROM customer WHERE Name LIKE '%".$strKeyword."%'
) AS c
WHERE c.RowID > $row_start AND c.RowID <= $row_end
";
$query = sqlsrv_query( $conn, $stmt );
while($result = sqlsrv_fetch_array($query, SQLSRV_FETCH_ASSOC))
{
echo echo $result["CustomerID"];
}
ฐานข้อมูลและตารางของ SQL Server Database
Example ตัวอย่างการเขียน PHP กับ SQL Server เพื่อทำการค้นหา (Search) ข้อมูล และแบ่งหน้า (Paging) ข้อมูล
list.php
<html>
<head>
<title>ThaiCreate.Com PHP & SQL Server (sqlsrv)</title>
</head>
<body>
<?php
ini_set('display_errors', 1);
error_reporting(~0);
$strKeyword = null;
if(isset($_POST["txtKeyword"]))
{
$strKeyword = $_POST["txtKeyword"];
}
if(isset($_GET["txtKeyword"]))
{
$strKeyword = $_GET["txtKeyword"];
}
?>
<form name="frmSearch" method="post" action="<?php echo $_SERVER['SCRIPT_NAME'];?>">
<table width="599" border="1">
<tr>
<th>Keyword
<input name="txtKeyword" type="text" id="txtKeyword" value="<?php echo $strKeyword;?>">
<input type="submit" value="Search"></th>
</tr>
</table>
</form>
<?php
$serverName = "localhost";
$userName = "sa";
$userPassword = '';
$dbName = "mydatabase";
$connectionInfo = array("Database"=>$dbName, "UID"=>$userName, "PWD"=>$userPassword, "MultipleActiveResultSets"=>true);
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn === false ) {
die( print_r( sqlsrv_errors(), true));
}
$stmt = "SELECT * FROM customer WHERE Name LIKE '%".$strKeyword."%' ";
$params = array();
$options = array( "Scrollable" => SQLSRV_CURSOR_KEYSET );
$query = sqlsrv_query( $conn, $stmt , $params, $options );
$num_rows = sqlsrv_num_rows($query);
$per_page = 2; // Per Page
$page = 1;
if(isset($_GET["Page"]))
{
$page = $_GET["Page"];
}
$prev_page = $page-1;
$next_page = $page+1;
$row_start = (($per_page*$page)-$per_page);
if($num_rows<=$per_page)
{
$num_pages =1;
}
else if(($num_rows % $per_page)==0)
{
$num_pages =($num_rows/$per_page) ;
}
else
{
$num_pages =($num_rows/$per_page)+1;
$num_pages = (int)$num_pages;
}
$row_end = $per_page * $page;
if($row_end > $num_rows)
{
$row_end = $num_rows;
}
$stmt = " SELECT c.* FROM (
SELECT ROW_NUMBER() OVER(ORDER BY CustomerID) AS RowID,* FROM customer WHERE Name LIKE '%".$strKeyword."%'
) AS c
WHERE c.RowID > $row_start AND c.RowID <= $row_end
";
$query = sqlsrv_query( $conn, $stmt );
?>
<table width="600" border="1">
<tr>
<th width="91"> <div align="center">CustomerID </div></th>
<th width="98"> <div align="center">Name </div></th>
<th width="198"> <div align="center">Email </div></th>
<th width="97"> <div align="center">CountryCode </div></th>
<th width="59"> <div align="center">Budget </div></th>
<th width="71"> <div align="center">Used </div></th>
</tr>
<?php
while($result = sqlsrv_fetch_array($query, SQLSRV_FETCH_ASSOC))
{
?>
<tr>
<td><div align="center"><?php echo $result["CustomerID"];?></div></td>
<td><?php echo $result["Name"];?></td>
<td><?php echo $result["Email"];?></td>
<td><div align="center"><?php echo $result["CountryCode"];?></div></td>
<td align="right"><?php echo $result["Budget"];?></td>
<td align="right"><?php echo $result["Used"];?></td>
</tr>
<?php
}
?>
</table>
<br>
Total <?php echo $num_rows;?> Record : <?php echo $num_pages;?> Page :
<?php
if($prev_page)
{
echo " <a href='$_SERVER[SCRIPT_NAME]?Page=$prev_page&txtKeyword=$strKeyword'><< Back</a> ";
}
for($i=1; $i<=$num_pages; $i++){
if($i != $page)
{
echo "[ <a href='$_SERVER[SCRIPT_NAME]?Page=$i&txtKeyword=$strKeyword'>$i</a> ]";
}
else
{
echo "<b> $i </b>";
}
}
if($page!=$num_pages)
{
echo " <a href ='$_SERVER[SCRIPT_NAME]?Page=$next_page&txtKeyword=$strKeyword'>Next>></a> ";
}
sqlsrv_close($conn);
?>
</body>
</html>
Screenshot
แสดงข้อมูลจาก SQL Server ด้วย function ของ sqlsrv
กรณีที่มีการค้นหาข้อมูล และแบ่งหน้า
ในกรณีที่ไปหน้าอื่น ๆ ก็จะต้องแสดงเฉพาะรายการที่ค้นหาเท่านั้น
|
ช่วยกันสนับสนุนรักษาเว็บไซต์ความรู้แห่งนี้ไว้ด้วยการสนับสนุน Source Code 2.0 ของทีมงานไทยครีเอท
|
|
|
By : |
ThaiCreate.Com Team (บทความเป็นลิขสิทธิ์ของเว็บไทยครีเอทห้ามนำเผยแพร่ ณ เว็บไซต์อื่น ๆ) |
|
Score Rating : |
|
|
|
Create/Update Date : |
2014-09-05 12:53:14 /
2017-03-14 16:31:29 |
|
Download : |
No files |
|
Sponsored Links / Related |
|
|
|
|
|
|
|