|
|
|
มีปัญหาการใช้ภาษาไทยกับ sqlsrv ในการค้นหาโดยใช้ autocomplete แต่ถ้าไม่ใช้ผลการค้นหากลับมีภาษาไทยออกมาด้วย |
|
|
|
|
|
|
|
มีปัญหาการใช้ภาษาไทย ไม่มีการตอบรับในการค้นหา autocomplete แต่ภาษาอังกฤษกลับมี
ถ้าไม่ต้องใช้ autocomplete ในการค้นหา ภาษาไทยกลับมี
การค้นหา (index.php)
Code การค้นหา (index.php)
<html>
<head>
<title>ค้นหาสินค้า</title>
<script type="text/javascript" src="js/autocomplete.js"></script>
<script type="text/javascript" src="js/jquery.min.js"></script>
</head>
<body>
<form action="begin.php" method="post">
ชื่อสินค้า : <input type="text" name="product" id="product" value="" /><br />
<input type=:submit" value="ค้นหา" />
</form>
<script language="javascript">
/// JavaScript AutoComplete
</script>
</body>
</html>
JavaScript AutoComplete
Code JavaScript AutoComplete
function product(autoObj,showObj) {
var mkAutoObj=autoObj;
var mkSerValObj=showObj;
new Autocomplete(mkAutoObj, function() {
this.setValue = function(id) {
}
if ( this.isModified )
this.setValue("");
if ( this.value.length < 1 && this.isNotClick )
return;
return "product.php?q=" +encodeURIComponent(this.value);
});
}
product("product","");
product.php
Code product.php
echo "<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" />";
ini_set('display_errors', 1);
error_reporting(~0);
$dbname1 = array("Database"=>"mybaby", "UID"=>"sa", "PWD"=>"", "MultipleActiveResultSets"=>true);
$dbname = sqlsrv_connect("localhost\sa", $dbname1);
header("content-type: application/x-javascript; charset=UTF-8");
$q = iconv("windows-874", "utf-8", trim($_REQUEST['q']));
//$q = trim(urldecode($_REQUEST['q']));
$product_1 = sqlsrv_query($dbname, "select c.* from (select row_number() over(order by product asc) as rowid, product from product where (isnull(product, '') like '%".$q."%') ) as c where c.rowid > 0 and c.rowid <= 10");
while ($product_2 = sqlsrv_fetch_array($product_1, SQLSRV_FETCH_ASSOC)) {
$product_3 = iconv("windows-874", "utf-8", trim($product_2['product']));
echo "<li onSelect=\"this.setText('".$product_3."').setValue('".$product_3."')\">".$product_3."</li>";
}
Tag : PHP, Ajax, jQuery, VS 2008 (.NET 3.x)
|
|
|
|
|
|
Date :
2015-08-07 17:00:03 |
By :
suparuark |
View :
1615 |
Reply :
7 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ลองสลับ $q = iconv("windows-874", "utf-8", trim($_REQUEST['q'])); เป็น $q = iconv("utf-8", "windows-874", trim($_REQUEST['q'])); ดูครับ
|
|
|
|
|
Date :
2015-08-07 17:08:49 |
By :
Manussawin |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
สลับแล้วครับ ก้อยังไม่ออกเหมือนเดิมครับ
|
|
|
|
|
Date :
2015-08-07 17:33:45 |
By :
suparuark |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เป็นรูปแบบที่ดีมากครับ เพราะทำให้ประหยัดในการเขียนทุกๆ file แต่ผลลัพธ์ในการค้นหาก็เหมือนเดิมครับ
ขึ้นเฉพาะกรอกภาษาอังกฤษ แต่กรอกภาษาไทยกลับนิ่งเลยครับ
Code การค้นหา (index.php)
<html>
<head>
<title>ค้นหาสินค้า</title>
<script type="text/javascript" src="js/autocomplete.js"></script>
<script type="text/javascript" src="js/jquery.min.js"></script>
</head>
<body>
<form action="begin.php" method="post">
ชื่อสินค้า : <input type="text" name="product" id="product" value="" /><br />
<input type=:submit" value="ค้นหา" />
</form>
<script language="javascript">
function product(autoObj,showObj) {
var mkAutoObj=autoObj;
var mkSerValObj=showObj;
new Autocomplete(mkAutoObj, function() {
this.setValue = function(id) {
}
if ( this.isModified )
this.setValue("");
if ( this.value.length < 1 && this.isNotClick )
return;
return "product.php?q=" +encodeURIComponent(this.value);
});
}
product("product","");
</script>
</body>
</html>
Code product.php
echo "<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" />";
ini_set('display_errors', 1);
error_reporting(~0);
$dbname1 = array("Database"=>"mybaby", "UID"=>"sa", "PWD"=>"", "MultipleActiveResultSets"=>true, "CharacterSet" => "UTF-8");
$dbname = sqlsrv_connect("localhost\sa", $dbname1);
header("content-type: application/x-javascript; charset=UTF-8");
$q = trim($_REQUEST['q']);
//$q = iconv("windows-874", "utf-8", trim($_REQUEST['q']));
//$q = trim(urldecode($_REQUEST['q']));
$product_1 = sqlsrv_query($dbname, "select c.* from (select row_number() over(order by product asc) as rowid, product from product where (isnull(product, '') like '%".$q."%') ) as c where c.rowid > 0 and c.rowid <= 10");
while ($product_2 = sqlsrv_fetch_array($product_1, SQLSRV_FETCH_ASSOC)) {
$product_3 = trim($product_2['product']);
//$product_3 = iconv("windows-874", "utf-8", trim($product_2['product']));
echo "<li onSelect=\"this.setText('".$product_3."').setValue('".$product_3."')\">".$product_3."</li>";
}
|
|
|
|
|
Date :
2015-08-10 09:25:07 |
By :
suparuark |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ข้อมูลที่ค้นหา ต้องเป็นรูปแบบเดียวกับข้อมูลที่เอาเข้าไปครับ
เช่น ตอนเอาเข้าไปเป็น windows-874
ก็ต้องแปลงเป็น windows-874 ก่อนเอาไปใช้ใน where field like '%%'
/**/ อาจจะไม่ตรงกันใน SQL Server แต่ละ version
|
|
|
|
|
Date :
2015-08-10 09:47:24 |
By :
CasanovaKung |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ทำได้แล้วครับ ขอบคุณ คุณ SiamHTTP และ คุณ iamje ที่ให้ความรู้แทรกขึ้นมาด้วยครับ
เพียงแค่ปรับเปลี่ยน code ใหม่ ให้ดึงภาษาไทยให้ขึ้นมา
ใน file index.php เปลี่ยนตรงส่วนของ JavaScript
return "product.php?q=" +encodeURIComponent(this.value);
เปลี่ยนเป็น
return "product.php?q=" +decodeURIComponent(this.value);
เพิ่มเติมให้ตรงกับภาษาไทยและภาษาโปรแกรมในส่วนของ product.php
ini_set('display_errors', 1);
error_reporting(~0);
$dbname1 = array("Database"=>"mybaby", "UID"=>"sa", "PWD"=>"", "MultipleActiveResultSets"=>true);
$dbname = sqlsrv_connect("localhost\sa", $dbname1);
$q = trim($_REQUEST['q']);
$product_1 = sqlsrv_query($dbname, "select c.* from (select row_number() over(order by product asc) as rowid, product from product where (isnull(product, '') like '%".iconv("utf-8", "windows-874", trim($q))."%') ) as c where c.rowid > 0 and c.rowid <= 10");
while ($product_2 = sqlsrv_fetch_array($product_1, SQLSRV_FETCH_ASSOC)) {
$product_3 = iconv("windows-874", "utf-8", trim($product_2['product']));
echo "<li onSelect=\"this.setText('".$product_3."').setValue('".$product_3."')\">".$product_3."</li>";
}
|
|
|
|
|
Date :
2015-08-10 16:46:06 |
By :
suparuark |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Date :
2015-08-12 03:31:17 |
By :
Manussawin |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 03
|