ThaiSEOBoard.com

พัฒนาเว็บไซต์ => Programming => ข้อความที่เริ่มโดย: zonethai ที่ 15 พฤศจิกายน 2011, 11:28:08



หัวข้อ: จะแก้ code นี้ให้ดึงข้อมูลจาก MYSQL เป็น utf-8 ได้อย่างไรครับ
เริ่มหัวข้อโดย: zonethai ที่ 15 พฤศจิกายน 2011, 11:28:08
จะแก้ code นี้ให้ดึงข้อมูลจาก MYSQL ให้มีการดึงข้อมูลแบบ utf-8 ได้อย่างไรครับ

Download สคิปต์ (http://"http://downloads.marcofolio.net/programming/webdesign/apple.com-style_suggestion_search.zip")

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


หัวข้อ: Re: จะแก้ code นี้ให้ดึงข้อมูลจาก MYSQL เป็น utf-8 ได้อย่างไรครับ
เริ่มหัวข้อโดย: เก๋าลัดคุง ที่ 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");


หัวข้อ: Re: จะแก้ code นี้ให้ดึงข้อมูลจาก MYSQL เป็น utf-8 ได้อย่างไรครับ
เริ่มหัวข้อโดย: zonethai ที่ 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");

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


หัวข้อ: Re: จะแก้ code นี้ให้ดึงข้อมูลจาก MYSQL เป็น utf-8 ได้อย่างไรครับ
เริ่มหัวข้อโดย: เก๋าลัดคุง ที่ 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");


หัวข้อ: Re: จะแก้ code นี้ให้ดึงข้อมูลจาก MYSQL เป็น utf-8 ได้อย่างไรครับ
เริ่มหัวข้อโดย: zonethai ที่ 15 พฤศจิกายน 2011, 12:08:35
ยังมีปัญหาอยู่ครับ

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

Download (http://"http://downloads.marcofolio.net/programming/webdesign/apple.com-style_suggestion_search.zip")

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

ช่วยแก้ด้วยนะครับ


หัวข้อ: Re: จะแก้ code นี้ให้ดึงข้อมูลจาก MYSQL เป็น utf-8 ได้อย่างไรครับ
เริ่มหัวข้อโดย: zonethai ที่ 15 พฤศจิกายน 2011, 12:58:20
ดัน


หัวข้อ: Re: จะแก้ code นี้ให้ดึงข้อมูลจาก MYSQL เป็น utf-8 ได้อย่างไรครับ
เริ่มหัวข้อโดย: rawat2543 ที่ 15 พฤศจิกายน 2011, 13:01:16
ใส่ code ตามด้านบน

แล้วใส่นี้ไปด้วย
โค๊ด:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">


หัวข้อ: Re: จะแก้ code นี้ให้ดึงข้อมูลจาก MYSQL เป็น utf-8 ได้อย่างไรครับ
เริ่มหัวข้อโดย: เก๋าลัดคุง ที่ 15 พฤศจิกายน 2011, 13:01:24
ฐานข้อมูลเก็บ UTF8 เปล่า
ไฟล์ .php เซฟ UTF8 เปล่า


หัวข้อ: Re: จะแก้ code นี้ให้ดึงข้อมูลจาก MYSQL เป็น utf-8 ได้อย่างไรครับ
เริ่มหัวข้อโดย: JackSandee ที่ 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">';

ไว้ด้วยก็ดีครับ


หัวข้อ: Re: จะแก้ code นี้ให้ดึงข้อมูลจาก MYSQL เป็น utf-8 ได้อย่างไรครับ
เริ่มหัวข้อโดย: zonethai ที่ 15 พฤศจิกายน 2011, 13:28:41
ฐานข้อมูลเก็บ UTF8 เปล่า
ไฟล์ .php เซฟ UTF8 เปล่า

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


หัวข้อ: Re: จะแก้ code นี้ให้ดึงข้อมูลจาก MYSQL เป็น utf-8 ได้อย่างไรครับ
เริ่มหัวข้อโดย: peter_well ที่ 16 พฤศจิกายน 2011, 02:18:28
ผมลองแล้วได้แบบนี้

(http://i.comswu.com/images/wDvYg.png)


หัวข้อ: Re: จะแก้ code นี้ให้ดึงข้อมูลจาก MYSQL เป็น utf-8 ได้อย่างไรครับ
เริ่มหัวข้อโดย: chaichoo ที่ 16 พฤศจิกายน 2011, 03:10:12
มาขอเก็บความรู้กับเหล่าทวยเทพครับ :wanwan017:


หัวข้อ: Re: จะแก้ code นี้ให้ดึงข้อมูลจาก MYSQL เป็น utf-8 ได้อย่างไรครับ
เริ่มหัวข้อโดย: jazza ที่ 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 ด้วยครับ