CMS ?????????????? จะทำยังไง เมื่อภาษาไทยอ่านไม่ออก
** หมายเหตุ : เรื่องนี้เหมาะสำหรับมือใหม่เท่านั้น
ช่วงนี้ลอง cms ตัวอื่นๆ อยู่ครับ ก็เลยเจอปัญหาในเรื่องของภาษาไทย ไม่ว่าจะโหลดตัวที่เป็นภาษาไทยมาแล้ว แต่ก็ยังเป็น ?????? สังเกตดูแล้ว จะเป็นข้อความที่ถูก query ออกมาจาก Database เท่านั้น เป็นเพราะว่า ในขั้นตอนของการติดตั้ง CMS จะมีให้เลือกว่า ติดตั้งข้อมูลตัวอย่างลงไปด้วย ข้อมูลที่เป็นตัวอย่างนั่นแหละที่กลายเป็น ??????? แล้วจะทำยังไง
เวลาที่ผมทำการติดต่อกับ Database หลังจากที่ selectdb สำเร็จ จะมีโค้ดอยู่ 2 บรรทัด ที่ทำให้การอ่าน-เขียน เป็นภาษาไทย คือ
mysql_query(”SET NAMES TIS620″);
mysql_query(”SET character_set_results=tis620″);
เช่น ของ Maxsite จะเป็นแบบนี้
$this->db = mysql_select_db ( $this->database, $this->connect_db) or _error ( “database-select”, mysql_error() );
mysql_query(”SET NAMES TIS620″);
mysql_query(”SET character_set_results=tis620″);
cms อื่นๆ ก็เหมือนกันครับ แต่มันจะยากตรงที่การค้นหาที่วางโค้ดนั่นแหละ ถ้าเป็น cms ที่ไม่เคยใช้มาก่อน เราก็ไม่รู้ว่า selectdb มันอยู่ตรงไหน ก็ต้องหากันล่ะ เริ่มแรกก็หาดูก่อน ใน Folder ที่สำคัญๆ ของระบบ เช่น includes, function, หรืออะไรก็ได้ที่คิดว่ามีไฟล์เกี่ยวกับ mysql อยู่ในนั้น แล้วหาดูชื่อไฟล์ ประมาณว่าชื่อประกอบด้วยคำว่า mysql, db, database อะไรประมาณนี้ จะใช้วิธี search เอาก็ได้ พอเจอผู้ต้องสงสัยแล้ว (บางทีอาจจะเจอหลายไฟล์) ก็ให้ edit ไฟล์นั้น แล้ว search หาคำว่า “select_db” หาดูทั่วๆ ก่อนนะครับอาจจะมีหลายจุด ทั้งใช่ และไม่ใช่ ปกติแล้วมันจะต้อง select_db หลังจากที่ connect_db ถ้าคิดว่าเจอจุดที่ใช่แล้ว ก็ต้องดูโค้ดครับ ส่วนมากมันจะเป็นเงื่อนไขอยู่ คือ ในกรณีที่ select_db ได้สำเร็จ ก็จะทำอย่างนึง แต่ถ้าไม่สำเร็จก็จะไปทำอีกอย่างนึง เราก็ต้องวางโค้ดของเราในจุดที่มันจะทำหลังจากที่สามารถ select_db ได้สำเร็จ ที่สำคัญ อย่าลืม backup ไฟล์ต้นฉบับเอาไว้ก่อน เพราะที่เราคิดว่าถูก มันอาจจะไม่ถูกก็ได้
ตัวอย่าง
สำหรับ php-fusion ชื่อไฟล์มันก็ไม่ค่อยจะสื่อซักเท่าไหร่ การ connect_db และ select_db อยู่ในไฟล์ชื่อ maincore.phpและไม่ได้อยู่ใน sub folder ถ้าใครหา select_db ไม่เจอจริงๆ ก็ใช้ dreamweaver ก็ได้ครับ มันค้นหาได้ทุกไฟล์ ทั้งที่เปิดอยู่และไม่ได้เปิด ยังไงก็หาเจอ
พอหาดูใน maincore.php ก็เจอ function ที่ใช้สำหรับติดต่อ database
function dbconnect($db_host, $db_user, $db_pass, $db_name) {
$db_connect = @mysql_connect($db_host, $db_user, $db_pass);
$db_select = @mysql_select_db($db_name);
if (!$db_connect) {
die(”<div style=’font-family:Verdana;font-size:11px;text-align:center;’><b>Unable to establish connection to MySQL</b><br>”.mysql_errno().” : “.mysql_error().”</div>”);
} elseif (!$db_select) {
die(”<div style=’font-family:Verdana;font-size:11px;text-align:center;’><b>Unable to select MySQL database</b><br>”.mysql_errno().” : “.mysql_error().”</div>”);
}
}
หลังจากที่แก้ไขแล้วก็จะมีลักษณะแบบนี้ครับ
function dbconnect($db_host, $db_user, $db_pass, $db_name) {
$db_connect = @mysql_connect($db_host, $db_user, $db_pass);
$db_select = @mysql_select_db($db_name);
if (!$db_connect) {
die(”<div style=’font-family:Verdana;font-size:11px;text-align:center;’><b>Unable to establish connection to MySQL</b><br>”.mysql_errno().” : “.mysql_error().”</div>”);
} elseif (!$db_select) {
die(”<div style=’font-family:Verdana;font-size:11px;text-align:center;’><b>Unable to select MySQL database</b><br>”.mysql_errno().” : “.mysql_error().”</div>”);
}else {
mysql_query(”SET NAMES TIS620″);
mysql_query(”SET character_set_results=tis620″);
}
}
จบ…
No Comments
Make A CommentNo comments yet.
Comments RSS Feed TrackBack URL