|
|
|
Ajax Search Record sql server แก้ไข ปัญหา LIMIT ของ SQL SERVER โดยใช้คำสั่ง select top |
|
|
|
|
|
|
|
สำหรับคนที่เจอปัญหา การค้นหาแบ่งpage โดยใช้ ajax กับ sqlserver แล้วมีปัญหาเรื่องLIMIT ครับ โดยอ้างอิงโค๊ดจาก https://www.thaicreate.com/tutorial/ajax-search-record-paging.html
เป็นการแก้ไข ปัญหา LIMIT ของ SQL SERVER โดยใช้คำสั่ง select top แทนครับ ผมลัพธ์ที่ออกมาเหมือนกันครับ
AjaxPHPSearchRecordPaging1.php
Code (PHP)
<?php
/*** By Weerachai Nukitram***/
/*** http://www.ThaiCreate.Com ***/
?>
<html>
<head>
<title>ThaiCreate.Com Ajax Tutorial</title>
</head>
<script language="JavaScript">
var HttPRequest = false;
function doCallAjax(Search,Page) {
HttPRequest = false;
if (window.XMLHttpRequest) { // Mozilla, Safari,...
HttPRequest = new XMLHttpRequest();
if (HttPRequest.overrideMimeType) {
HttPRequest.overrideMimeType('text/html');
}
} else if (window.ActiveXObject) { // IE
try {
HttPRequest = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
HttPRequest = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
if (!HttPRequest) {
alert('Cannot create XMLHTTP instance');
return false;
}
var url = 'AjaxPHPSearchRecordPaging2.php';
var pmeters = 'mySearch='+Search;
var pmeters = "mySearch=" + Search +
"&myPage=" + Page;
HttPRequest.open('POST',url,true);
HttPRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
HttPRequest.setRequestHeader("Content-length", pmeters.length);
HttPRequest.setRequestHeader("Connection", "close");
HttPRequest.send(pmeters);
HttPRequest.onreadystatechange = function()
{
if(HttPRequest.readyState == 3) // Loading Request
{
document.getElementById("mySpan").innerHTML = "Now is Loading...";
}
if(HttPRequest.readyState == 4) // Return Request
{
document.getElementById("mySpan").innerHTML = HttPRequest.responseText;
}
}
}
</script>
<body Onload="JavaScript:doCallAjax('','');">
<h1>My Customer</h1>
<form name="frmMain">
Search <input type="text" name="txtSearch" id="txtSearch">
<input type="button" name="btnSearch" id="btnSearch" value="Search" OnClick="JavaScript:doCallAjax(document.getElementById('txtSearch').value,'1');">
<br><br>
<span id="mySpan"></span>
</form>
</body>
</html>
AjaxPHPSearchRecordPaging2.php
Code (PHP)
<?php
/*** By Weerachai Nukitram ***/
/*** http://www.ThaiCreate.Com ***/
$strSearch = $_POST["mySearch"];
$strPage = $_POST["myPage"];
if($strSearch!=""){
include "connect.php";
$strSQL = "SELECT * FROM LOCATION WHERE LOCID LIKE '%".$strSearch."%' and RECSTATUS='1' ";
$objQuery = mssql_query($strSQL) or die ("Error Query [".$strSQL."]");
$Num_Rows = mssql_num_rows($objQuery);
$Per_Page = 5; // Per Page
$Page = $strPage;
if(!$strPage)
{
$Page=1;
}
$Prev_Page = $Page-1;
$Next_Page = $Page+1;
$Page_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;
}
$strSQL ="SELECT TOP $Per_Page * FROM LOCATION WHERE (LOCID LIKE '%".$strSearch."%' and RECSTATUS='1')and LOCID NOT IN(SELECT TOP $Page_Start LOCID FROM LOCATION where (LOCID LIKE '%".$strSearch."%' and RECSTATUS='1')ORDER BY LOCID asc)ORDER BY LOCID asc";
$objQuery = mssql_query($strSQL);
?>
<table width="600" border="1">
<tr>
<th width="91"> <div align="center">LOCID </div></th>
<th width="98"> <div align="center">LOCCODE </div></th>
<th width="198"> <div align="center">LOCNAME_E </div></th>
<th width="97"> <div align="center">LOCNAME_T </div></th>
<th width="59"> <div align="center">ADDRTB </div></th>
<th width="71"> <div align="center">ADDRAP </div></th>
</tr>
<?
while($objResult = mssql_fetch_array($objQuery))
{
?>
<tr>
<td><div align="center"><?=$objResult["LOCID"];?></div></td>
<td><?=$objResult["LOCCODE"];?></td>
<td><?=$objResult["LOCNAME_E"];?></td>
<td><div align="center"><?=$objResult["LOCNAME_T"];?></div></td>
<td align="right"><?=$objResult["ADDRTB"];?></td>
<td align="right"><?=$objResult["ADDRAP"];?></td>
</tr>
<?
}
?>
</table>
<br>
Total <?= $Num_Rows;?> Record : <?=$Num_Pages;?> Page :
<?
if($Prev_Page)
{
echo " <a href=\"JavaScript:doCallAjax(document.getElementById('txtSearch').value,'$Prev_Page')\"><< Back</a> ";
}
for($i=1; $i<=$Num_Pages; $i++){
if($i != $Page)
{
echo "[ <a href=\"JavaScript:doCallAjax(document.getElementById('txtSearch').value,'$i')\">$i</a> ]";
}
else
{
echo "<b> $i </b>";
}
}
if($Page!=$Num_Pages)
{
echo " <a href=\"JavaScript:doCallAjax(document.getElementById('txtSearch').value,'$Next_Page')\">Next >></a> ";
}
mssql_close($objConnect);
}
?>
เนื่องจาก เป็นกระทู้แรก หากมีอะไรผิดพลาด ผมต้อขออภัยไว้นะที่นี้ด้วยนะครับ
Tag : PHP, Ms SQL Server 2008, Ajax
|
|
|
|
|
|
Date :
2012-09-05 13:52:37 |
By :
arnon011130 |
View :
1041 |
Reply :
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
แจ่มครับ แต่ Query น่าจะยังช้าอยู่ครับ เห็นใช้ SUB SELECT ครับ
|
|
|
|
|
Date :
2012-09-05 16:19:07 |
By :
mr.win |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
แจ๋วววว
|
|
|
|
|
Date :
2012-09-05 22:04:53 |
By :
compiak |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 02
|