ปัญหา Ajax Autocomplete กับภาษาไทย

ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา ปัญหา Ajax Autocomplete กับภาษาไทย

ปัญหา Ajax Autocomplete กับภาษาไทย

จากบทความนี้ครับ เวลาเราพิมพ์ลงไปมันก็แสดงผลได้ถูกต้องน่ะครับ แต่ถ้าเราไม่ได้พิมพ์

แล้วกดปุ่มลูกศรค้นหาเลยกลับแสดงผลเป็นภาษาต่างด้าวครับ งงเลย

ไม่ทราบว่าต้องแก้ยังไง ฐานข้อมูลลองเซตแบบ utf8 tis620 แล้วก็ยังไม่ได้อยู่ดี



Amdev 202.28.179.xxx 07-10-2009 09:13:07

คำแนะนำ และการใช้งาน

สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก


  • ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
  • เปลี่ยน


    ( หรือ เข้าใช้งานผ่าน Social Login )

 ความคิดเห็นที่ 1

ในไฟล์ php จากตัวอย่าง https://www.ninenik.com/สร้างฟังก์ชัน_autocomplete_ให้ใช้งานแบบง่าย_ด้วย_ajax-209.html ใช้ชื่อ gdata.php
ให้ลองใส่ header ไว้ด้านบน ตามตัวอย่างข้างล่างดู อาจจะแก้ปัญหาได้

<?php
header("Content-type:text/html; charset=tis-620");  
// php code  //
?>

ใช้เป็น tis-620 ถ้าไม่ได้ลองเปลี่ยนเป็น UTF-8

<?php
header("Content-type:text/html; charset=UTF-8");  
// php code  //
?>


ninenik 124.121.247.xxx 07-10-2009
 ความคิดเห็นที่ 2

ขอบคุณครับ ได้แล้วครับ ต้องใช้คำสั่ง iconv ครับ

ผมแทรก

<?

header("Content-type:text/html; charset=UTF-8");

$link=mysql_connect("localhost","root","root") or die("error".mysql_error());
mysql_query("set character set tis620");// ผมต้องเซตเป็น tis620 จากเดิมเซตเป็น UTF8 งง

mysql_select_db("db_expert",$link);

ตอนเอ้าท์พุท ต้องแปลงกลับจาก tis620->utf8

$name_th = iconv('TIS-620', 'UTF-8', $name_th);
$id = iconv('TIS-620', 'UTF-8', $id);



amdev 202.28.179.xxx 08-10-2009 08:48
 ความคิดเห็นที่ 3

แต่ตอนนี้ติดปัญพิมพ์คำแล้วไม่แสดงคำค้นหาเลย

จากเดิมมันแสดงแล้ว เหอะๆ



amdev 202.28.179.xxx 08-10-2009 09:03
 ความคิดเห็นที่ 4

ถามอีกนิดครับ ถ้าผมไม่ใช้ คำสั่ง locate ในการค้นหา แต่ใช้ like แทน จะทำให้เกิดผลเสียหรือเปล่าครับ

หรือจะทำให้ระบบช้าลงหรือเปล่าครับ



amdev 202.28.179.xxx 08-10-2009 11:17
 ความคิดเห็นที่ 5

ได้แล้วครับ น่าจะเกิดจาก คำสั่ง locate ครับ ผมเลยใช้ like แทนเลยครับ

<?php
        // เชื่อมต่อฐานข้อมูล
        $link=mysql_connect("localhost","root","root") or die("error".mysql_error());
        mysql_query("set character set tis620");
        mysql_select_db("db_expert",$link);
        $q=(isset($_POST["q"])) ? $_POST["q"] : $_GET["q"];
        $q = iconv('UTF-8','TIS-620',$q); //แปลงจาก UTF8 เป็น TIS620
        $pagesize = 10; // จำนวนรายการที่ต้องการแสดง
        $table_db="db_name"; // ตารางที่ต้องการค้นหา
        $find_field="name_th"; // ฟิลที่ต้องการค้นหา
        $sql = "select * from $table_db where name_th like'%$q%' LIMIT 10";
        $results = mysql_query($sql) or die("<H3>ขออภัย  ไม่สามารถติดต่อฐานข้อมูลได้ในขณะนี้</H3>");
        while ($row = mysql_fetch_array( $results )) {
            $id = $row["PersNo"]; // ฟิลที่ต้องการส่งค่ากลับ
            $name_th=$row["name_th"]; // ฟิลที่ต้องการส่งค่ากลับ
            $depart=$row["depart_th"];
            $name = ucwords( strtolower( $row["name_th"] ) ); // ฟิลที่ต้องการแสดงค่า
            //$name2 = ucwords( strtolower( $row["PersNo"] ) ); // ฟิลที่ต้องการแสดงค่า
            $name = str_replace("'", "'", $name); // ป้องกันเครื่องหมาย '
            //$name2 = str_replace("'", "'", $name2); // ป้องกันเครื่องหมาย '
            $display_name = preg_replace("/(" . $q . ")/i", "<b>$1</b>", $name);
            $display_name2 = preg_replace("/(" . $q . ")/i", "<b>$1</b>", $depart);
           
            $display_name = iconv('TIS-620', 'UTF-8', $display_name);
            //$display_name2 = iconv('TIS-620', 'UTF-8', $display_name2);
            $name_th = iconv('TIS-620', 'UTF-8', $name_th);
            $id = iconv('TIS-620', 'UTF-8', $id);
            $depart = iconv('TIS-620', 'UTF-8', $depart);
            echo "<li onselect="this.setText('$name_th').setValue('$id');">$display_name | $depart</li>";
        }
        mysql_close();
        ?>



amdev 202.28.179.xxx 08-10-2009 13:50
1






เว็บไซต์ของเราให้บริการเนื้อหาบทความสำหรับนักพัฒนา โดยพึ่งพารายได้เล็กน้อยจากการแสดงโฆษณา โปรดสนับสนุนเว็บไซต์ของเราด้วยการปิดการใช้งานตัวปิดกั้นโฆษณา (Disable Ads Blocker) ขอบคุณครับ