ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น

ThaiSEOBoard.comพัฒนาเว็บไซต์Programmingจะแก้ code นี้ให้ดึงข้อมูลจาก MYSQL เป็น utf-8 ได้อย่างไรครับ
หน้า: [1]   ลงล่าง
พิมพ์
ผู้เขียน หัวข้อ: จะแก้ code นี้ให้ดึงข้อมูลจาก MYSQL เป็น utf-8 ได้อย่างไรครับ  (อ่าน 3335 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
zonethai
คนรักเสียว
*

พลังน้ำใจ: 3
ออฟไลน์ ออฟไลน์

กระทู้: 130



ดูรายละเอียด เว็บไซต์
« เมื่อ: 15 พฤศจิกายน 2011, 11:28:08 »

จะแก้ code นี้ให้ดึงข้อมูลจาก MYSQL ให้มีการดึงข้อมูลแบบ utf-8 ได้อย่างไรครับ

Download สคิปต์

ผมลองแก้มาหลายวิธีเพื่อให้ สคิปต์ไม่มีปัญหาภาษาไทย คือ สคิปต์นี้คือทดสอบภาษาไทย  มันจะเป็นตัว Huh? จากการดึงข้อมูลจาก MYSQL

โค๊ด:
<p id="searchresults">
<?php
$db mysql(&#39;localhost&#39;, &#39;root&#39;, &#39;password&#39;, &#39;dbname&#39;);

if(!$db) {
// Show error if we cannot connect.
echo &#39;ERROR: Could not connect to the database.&#39;;
} else {
// Is there a posted query string?
if(isset($_POST[&#39;queryString&#39;])) {
$queryString $db->real_escape_string($_POST[&#39;queryString&#39;]);

// Is the string length greater than 0?
if(strlen($queryString) >0) {
$query $db->query("SELECT * FROM search s INNER JOIN categories c ON s.cat_id = c.cid WHERE name LIKE &#39;%" $queryString "%&#39; ORDER BY cat_id LIMIT 8");



if($query) {
// While there are results loop through them - fetching an Object.

// Store the category id
$catid 0;
while ($result $query ->fetch_object()) {
if($result->cat_id != $catid) { // check if the category changed
echo &#39;<span class="category">&#39;.$result->cat_name.&#39;</span>&#39;;
$catid $result->cat_id;
}
          echo &#39;<a href="&#39;.$result->url.&#39;">&#39;;
          echo &#39;<img src="search_images/&#39;.$result->img.&#39;" alt="" />&#39;;
         
          $name $result->name;
          if(strlen($name) > 35) { 
          $name substr($name035) . "...";
          }          
          echo &#39;<span class="searchheading">&#39;.$name.&#39;</span>&#39;;
         
          $description $result->desc;
          if(strlen($description) > 80) { 
          $description substr($description080) . "...";
          }
         
          echo &#39;<span>&#39;.$description.&#39;</span></a>&#39;;
          }
          echo &#39;<span class="seperator"><a href="http://www.marcofolio.net/sitemap.html" title="Sitemap">Nothing interesting here? Try the sitemap.</a></span><br class="break" />&#39;;
} else {
echo &#39;ERROR: There was a problem with the query.&#39;;
}
} else {
// Dont do anything.
// There is a queryString.
} else {
echo &#39;There should be no direct access to this script!&#39;;
}
}
?>

</p>
« แก้ไขครั้งสุดท้าย: 15 พฤศจิกายน 2011, 12:12:43 โดย zonethai » บันทึกการเข้า

เก๋าลัดคุง
Verified Seller
เจ้าพ่อบอร์ดเสียว
*

พลังน้ำใจ: 196
ออฟไลน์ ออฟไลน์

กระทู้: 3,906



ดูรายละเอียด เว็บไซต์
« ตอบ #1 เมื่อ: 15 พฤศจิกายน 2011, 11:35:55 »

โค๊ด:
mysql_connect($mysql["host"],$mysql["username"],$mysql["password"]) or die ("Connect");
mysql_select_db($mysql["databasename"]) or die ("Database");
mysql_query("SET NAMES UTF8");
บันทึกการเข้า

zonethai
คนรักเสียว
*

พลังน้ำใจ: 3
ออฟไลน์ ออฟไลน์

กระทู้: 130



ดูรายละเอียด เว็บไซต์
« ตอบ #2 เมื่อ: 15 พฤศจิกายน 2011, 11:41:45 »

โค๊ด:
mysql_connect($mysql["host"],$mysql["username"],$mysql["password"]) or die ("Connect");
mysql_select_db($mysql["databasename"]) or die ("Database");
mysql_query("SET NAMES UTF8");

แล้วมันกันได้เข้ากับ สคิปต์ข้างบนหรือเปล่าครับ
บันทึกการเข้า

เก๋าลัดคุง
Verified Seller
เจ้าพ่อบอร์ดเสียว
*

พลังน้ำใจ: 196
ออฟไลน์ ออฟไลน์

กระทู้: 3,906



ดูรายละเอียด เว็บไซต์
« ตอบ #3 เมื่อ: 15 พฤศจิกายน 2011, 11:46:53 »

ลอง

<p id="searchresults">
<?php
   $db = mysql('localhost', 'root', 'password', 'dbname');
$mysql["databasename"] = "";
mysql_select_db($mysql["databasename"]);

mysql_query("SET NAMES UTF8");
บันทึกการเข้า

zonethai
คนรักเสียว
*

พลังน้ำใจ: 3
ออฟไลน์ ออฟไลน์

กระทู้: 130



ดูรายละเอียด เว็บไซต์
« ตอบ #4 เมื่อ: 15 พฤศจิกายน 2011, 12:08:35 »

ยังมีปัญหาอยู่ครับ

งั้นลอง สคิปต์ต้นฉบับไปแก้ดูนะครับ

Download

ผมลองแก้มาหลายวิธีเพื่อให้ สคิปต์ไม่มีปัญหาภาษาไทย คือ สคิปต์นี้คือทดสอบภาษาไทย  มันจะเป็นตัว Huh?

ช่วยแก้ด้วยนะครับ
บันทึกการเข้า

zonethai
คนรักเสียว
*

พลังน้ำใจ: 3
ออฟไลน์ ออฟไลน์

กระทู้: 130



ดูรายละเอียด เว็บไซต์
« ตอบ #5 เมื่อ: 15 พฤศจิกายน 2011, 12:58:20 »

ดัน
บันทึกการเข้า

rawat2543
บุคคลทั่วไป
« ตอบ #6 เมื่อ: 15 พฤศจิกายน 2011, 13:01:16 »

ใส่ code ตามด้านบน

แล้วใส่นี้ไปด้วย
โค๊ด:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
บันทึกการเข้า
เก๋าลัดคุง
Verified Seller
เจ้าพ่อบอร์ดเสียว
*

พลังน้ำใจ: 196
ออฟไลน์ ออฟไลน์

กระทู้: 3,906



ดูรายละเอียด เว็บไซต์
« ตอบ #7 เมื่อ: 15 พฤศจิกายน 2011, 13:01:24 »

ฐานข้อมูลเก็บ UTF8 เปล่า
ไฟล์ .php เซฟ UTF8 เปล่า
บันทึกการเข้า

JackSandee
Newbie
*

พลังน้ำใจ: 4
ออฟไลน์ ออฟไลน์

กระทู้: 34



ดูรายละเอียด
« ตอบ #8 เมื่อ: 15 พฤศจิกายน 2011, 13:26:08 »

ถ้าฐานข้อมูลเก็บเป็น utf-8 แน่นอน
 
หลังจากติดต่อฐานข้อมูลให้แทรก

$db->query("set names utf8");

เข้าไปก่อนบรรทัดที่จะคิวรี่ select ในกรณีนี้ให้แทรกไว้ก่อน

$query = $db->query("SELECT * FROM search s INNER JOIN categories c ON s.cat_id = c.cid WHERE name LIKE '%" . $queryString . "%' ORDER BY cat_id LIMIT 8");

ครับ

และใส่

echo '<meta http-equiv="Content-Type" content="text/html; charset=utf-8">';

ไว้ด้วยก็ดีครับ
บันทึกการเข้า
zonethai
คนรักเสียว
*

พลังน้ำใจ: 3
ออฟไลน์ ออฟไลน์

กระทู้: 130



ดูรายละเอียด เว็บไซต์
« ตอบ #9 เมื่อ: 15 พฤศจิกายน 2011, 13:28:41 »

ฐานข้อมูลเก็บ UTF8 เปล่า
ไฟล์ .php เซฟ UTF8 เปล่า

ผมแก้ตรงส่วนนั้นแล้วครับ แต่ทำไมผมลองรัน code แล้ว ภาษาไทยเป็น ตัว Huh? อยู่ครับ
บันทึกการเข้า

peter_well
Verified Seller
ก๊วนเสียว
*

พลังน้ำใจ: 24
ออฟไลน์ ออฟไลน์

กระทู้: 335



ดูรายละเอียด เว็บไซต์
« ตอบ #10 เมื่อ: 16 พฤศจิกายน 2011, 02:18:28 »

ผมลองแล้วได้แบบนี้

บันทึกการเข้า

บริษัท DOTENTERPRISE จำกัด | เลขประจําตัวผู้เสียภาษี: 0-1055-56071-160
Cloud Hosting | จดโดเมน  | Cloud Server | Email Server | Co-Location
บริการ Cloud Server ประสิทธิภาพสูง SSD Storage + Free Plesk Control Panel Bangkok, Singapore, USA และ UK [ Daily Backup ] เริ่มต้นเพียง 600 บาท (Exc VAT)
Tel. 02-026-6375 | Email: sales[at]de.co.th
chaichoo
คนรักเสียว
*

พลังน้ำใจ: 24
ออฟไลน์ ออฟไลน์

กระทู้: 129



ดูรายละเอียด
« ตอบ #11 เมื่อ: 16 พฤศจิกายน 2011, 03:10:12 »

มาขอเก็บความรู้กับเหล่าทวยเทพครับ wanwan017
บันทึกการเข้า
jazza
Newbie
*

พลังน้ำใจ: 0
ออฟไลน์ ออฟไลน์

กระทู้: 3



ดูรายละเอียด
« ตอบ #12 เมื่อ: 17 พฤศจิกายน 2011, 10:51:00 »

จาก

$db = mysql('localhost', 'root', 'password', 'dbname');

แสดงว่ามี function mysql เอาไว้สร้าง object สำหรับทำงานกับฐานข้อมูล ถ้าไม่อยากแทรก $db->query('SET NAMES UTF8'); ทุกๆ ครั้งก่อนทำการ query ก็ให้ไปเพิ่มส่วน query สำหรับ set utf8 ไว้ใน function mysql เลยครับ

ผมเดาว่าใน function mysql น่าจะมี mysql_select_db ก็ให้เพิ่ม mysql_query('SET NAMES UTF8', $link); ใต้บรรทัด select db เลย ตัวแปร $link คือ handle ที่เราได้จากการ connect นะครับคุณใช้ตัวแปรไหนก็ใช้ตัวนั้นผมยกตัวอย่างเฉยๆ ว่าเป็น $link

ส่วนต่อไปก็คือ ไฟล์ต้องเซฟเป็น urf-8 ด้วยไม่งั้นไม่ได้
อีกส่วนคือต้องให้หน้า html มี content type เป็น utf-8 ด้วยครับ
บันทึกการเข้า
หน้า: [1]   ขึ้นบน
พิมพ์