autocomplete กับ MSSQL สำเร็จแล้ว แต่ ภาษาไทยไม่ออก อะครับ ออกแต่ภาษา Eng นะครับ
Code (PHP)
<meta http-equiv="Content-Type" content="text/html; charset=tis-620">
<?php
// เชื่อมต่อฐานข้อมูล
$link=mssql_connect("xxx","xxxx","xxxx") or die("Error Connect to DB");
mssql_select_db("inv");
mb_internal_encoding('UTF-8');
mb_http_output('UTF-8');
mb_http_input('UTF-8');
mb_language('uni');
mb_regex_encoding('UTF-8');
ob_start('mb_output_handler');
setlocale(LC_ALL, 'th_TH');
$q = urldecode($_GET["q"]);
//$q= iconv('utf-8', 'tis-620', $_GET['test']);
$sql = "select top 50 pd_nambill from pd_inv where pd_nambill like '$q%' ORDER BY pd_nambill desc";
$results = mssql_query($sql);
while ($row = mssql_fetch_array( $results )) {
$id = $row["pd_nambill"]; // ฟิลที่ต้องการส่งค่ากลับ
$name =$row["pd_nambill"]; // ฟิลที่ต้องการแสดงค่า
// ป้องกันเครื่องหมาย '
$name = str_replace("'", "'", $name);
// กำหนดตัวหนาให้กับคำที่มีการพิมพ์
$display_name = preg_replace("/(" . $q . ")/i", "<b>$1</b>", $name);
echo "<li onselect=\"this.setText('$name').setValue('$id');\">$display_name</li>";
}
mssql_close();
?>
มัน ออก อย่างนี้อะครับ Safety ()
ความจริงแล้ว มันต้องออกอย่างนี้ครับ หมวก Safety ปรับเลื่อน (สีฟ้า) มอก .Tag : PHP, Ms SQL Server 2008
ประวัติการแก้ไข 2012-02-02 14:54:31 2012-02-02 14:59:02
Date :
2012-02-02 14:53:56
By :
time.toon
View :
2235
Reply :
8
ตอนนี้ลอง เรียก file auto.php ดูแล้วมันก็แสดงเป็นภาษาไทยปกติ นะครับ
แต่หน้าที่ Input มันไม่แสดงภาษา ไทย นะครับหรือว่ามันเกี่ยวกับ JAVA อะครับ
Code (PHP)
<head>
<meta http-equiv="Content-Type" content="text/html; charset=tis-620">
<title></title>
<script type="text/javascript" src="autocomplete.js"></script>
<link rel="stylesheet" href="autocomplete.css" type="text/css"/>
</head>
<body>
<form id="form1" name="form1" method="post" action="">
<input name="show_arti_topic" type="text" id="show_arti_topic" size="50" />
<input name="h_arti_id" type="hidden" id="h_arti_id" value="" />
</form>
<script type="text/javascript">
function make_autocom(autoObj,showObj){
var mkAutoObj=autoObj;
var mkSerValObj=showObj;
new Autocomplete(mkAutoObj, function() {
this.setValue = function(id) {
document.getElementById(mkSerValObj).value = id;
}
if ( this.isModified )
this.setValue("");
if ( this.value.length < 1 && this.isNotClick )
return ;
return "auto.php?q=" +encodeURIComponent(this.value);
});
}
// การใช้งาน
// make_autocom(" id ของ input ตัวที่ต้องการกำหนด "," id ของ input ตัวที่ต้องการรับค่า");
make_autocom("show_arti_topic","h_arti_id");
</script>
</body>
</html>
Date :
2012-02-02 16:15:44
By :
time.toon
เกี่ยวรึเปล่าครับที่
<meta http-equiv="Content-Type" content="text/html; charset=tis-620">
เป็น tis-620
แต่ ตัว code ใช้ UTF-8
แล้วใน ฐานข้อมูลใช้ collation เป็นอะไรครับ
utf8_unicode_ci หรือ tis620_thai_ci
ลองใช้เป็น UTF-8 อย่างเดียวไปเลยได้เปล่าครับ
ตอนเชื่อม databse อย่าลืมquery SET CHARACTER SET UTF8 ด้วย
Date :
2012-02-02 16:24:01
By :
Likito
ตอบความคิดเห็นที่ : 3 เขียนโดย : webmaster เมื่อวันที่ 2012-02-02 17:08:00
รายละเอียดของการตอบ ::
ใส่แล้วมัน ERROR นะครับพี่วิน
Warning: Cannot modify header information - headers already sent by (output started at C:\AppServ\www\11\auto.php:2) in C:\AppServ\www\11\auto.php on line 3
Warning: Cannot modify header information - headers already sent by (output started at C:\AppServ\www\11\auto.php:2) in C:\AppServ\www\11\auto.php on line 4
Warning: Cannot modify header information - headers already sent by (output started at C:\AppServ\www\11\auto.php:2) in C:\AppServ\www\11\auto.php on line 5
Code (PHP)
<meta http-equiv="Content-Type" content="text/html; charset=tis-620">
<?php
header("Content-type:text/html; charset=UTF-8");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
$link=mssql_connect("xxx","xxx","xxx") or die("Error Connect to DB");
mssql_select_db("xxx");
$q = urldecode($_GET["q"]);
//$q= iconv('utf-8', 'tis-620', $_GET['test']);
$sql = "select top 50 pd_nambill from pd_inv where pd_nambill like '$q%' ORDER BY pd_nambill desc";
$results = mssql_query($sql);
while ($row = mssql_fetch_array( $results )) {
$id = $row["pd_nambill"]; // ฟิลที่ต้องการส่งค่ากลับ
$name =$row["pd_nambill"]; // ฟิลที่ต้องการแสดงค่า
// ป้องกันเครื่องหมาย '
$name = str_replace("'", "'", $name);
// กำหนดตัวหนาให้กับคำที่มีการพิมพ์
$display_name = preg_replace("/(" . $q . ")/i", "<b>$1</b>", $name);
echo "<li onselect=\"this.setText('$name').setValue('$id');\">$display_name</li>";
}
mssql_close();
?>
Date :
2012-02-03 09:49:12
By :
time.toon
ลอง เพิ่ม
Code (PHP)
mysql_query("SET NAMES UTF8");
เป็นแบบนี้รึยังครับ
Code (PHP)
$link=mssql_connect("xxx","xxxx","xxxx") or die("Error Connect to DB");
mssql_select_db("inv");
mysql_query("SET NAMES UTF8");
แล้วทำการปรับ
<meta http-equiv="Content-Type" content="text/html; charset=tis-620">
เป็น
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
แล้วก็ใน database เลือกใช้ collation เป็น utf8_unicode_ci แทน tis620_thai_ci หรือยังครับ
ถ้าจะใช้ utf 8 ก็ควรปรับเป็น utf-8 ให้หมดเลยดีกว่า
โค้ดตัวอย่างที่ให้ดูข้างบน มีทั้ง utf8 กับ tis-620 มันคงตีกันอะครับ
ส่วน header ที่ error นั้น
น่าจะตัด <meta http-equiv="Content-Type" content="text/html; charset=tis-620"> ทิ้งรึเปล่า
ให้ header อยู่บรรทัดบนสุดของ file.php นั้นๆ
เป็นแบบนี้
Code (PHP)
<?php
header("Content-type:text/html; charset=UTF-8");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
$link=mssql_connect("xxx","xxx","xxx") or die("Error Connect to DB");
mssql_select_db("xxx");
$q = urldecode($_GET["q"]);
//$q= iconv('utf-8', 'tis-620', $_GET['test']);
$sql = "select top 50 pd_nambill from pd_inv where pd_nambill like '$q%' ORDER BY pd_nambill desc";
$results = mssql_query($sql);
while ($row = mssql_fetch_array( $results )) {
$id = $row["pd_nambill"]; // ฟิลที่ต้องการส่งค่ากลับ
$name =$row["pd_nambill"]; // ฟิลที่ต้องการแสดงค่า
// ป้องกันเครื่องหมาย '
$name = str_replace("'", "'", $name);
// กำหนดตัวหนาให้กับคำที่มีการพิมพ์
$display_name = preg_replace("/(" . $q . ")/i", "<b>$1</b>", $name);
echo "<li onselect=\"this.setText('$name').setValue('$id');\">$display_name</li>";
}
mssql_close();
?>
Date :
2012-02-03 10:13:44
By :
Likito
Load balance : Server 00