sqlsrv อยากจะปรับแก้ไขโค๊ดการค้นหาข้อมูล และแบ่งหน้า อยู่ใน FROM customer WHERE Name LIKE บรรทัดเดียวกัน
sqlsrv อยากจะปรับแก้ไขโค๊ดการค้นหาข้อมูล และแบ่งหน้า อยู่ใน FROM customer WHERE Name LIKE บรรทัดเดียวกัน
อยากให้บบรทัด 044 กับ 084 อยู่รวมกันได้ไหมค่ะ
เวลาเขียนเงื่อนไขค้นหา เราต้องไปเพิ่มทั้ง 2จุด อยากจะแก้ไขเพียงจุดเดียวเหมือนกับ Mysql
Code (PHP)
$stmt = "SELECT * FROM customer WHERE Name LIKE '%".$strKeyword."%' "; ///จุดที่ 1
$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 ); ///จุดที่ 2
Code (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."%' "; ///จุดที่ 1
$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 ); ///จุดที่ 2
?>
<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>
Tag : PHP, Ms SQL Server 2012, CakePHP
Date :
2019-06-19 10:05:06
By :
kittipongw
View :
1001
Reply :
1
จุดที่ 44 เค้าเอาไว้ count total rows ไว้คำนวณ paginate ใน code ที่เอามาลง ไม่ควรเอาออกครับ
ถ้าจะแก้ แนะนำให้ใช้ datatable server side นะครับ datatables
Date :
2019-06-24 15:22:00
By :
mongkon.k
Load balance : Server 03