Transfer ข้อมูล จาก phpBB 2.0.13 ไป 3.0 ทำไงครับ

ปัญหาการติดตั้ง phpbb3 คำแนะนำในการติดตั้ง phpbb3 หรับ windows Linux Unix Apache หรือ IIS การแก้ไขค่าต่างๆ ของ server เพื่อให้เหมาะกับการ ติดตั้ง การอัพเกรด phpbb3 ข้อผิดพลาดต่างๆ ของการติดตั้ง หรืออัพเกรด ปัญหา Mysql FTP

Moderator: phpbb, mindphp, ผู้ดูแลกระดาน

ภาพประจำตัวสมาชิก
phpbb
phpBBThailand VIP Members
phpBBThailand VIP Members
โพสต์: 3140
ลงทะเบียนเมื่อ: 19 มิ.ย. 2008, 00:26
ติดต่อ:

Re: Transfer ข้อมูล จาก phpBB 2.0.13 ไป 3.0 ทำไงครับ

โพสต์ โดย phpbb »

ThaiBB เขียน:ขอแนะนำว่าควรใช้ UTF-8 เป็นมาตรฐานการใช้งานจะดีกว่านะครับ
ข้อดีของ UTF-8 คือใช้จำนวนบิทในการจัดเก็บข้อมูลที่น้อยกว่า TIS-620 และ ISO ทำให้บอร์ดที่มีจำนวนข้อมูลมหาศาลมีขนาดของฐานข้อมูลที่เล็กกว่าบอร์ดที่จัดเก็บข้อมูลเป็น TIS-620 หรือ ISO แบบครึ่งต่อครึ่ง ไม่เฉพาะขนาดที่จัดเก็บที่เล็กลง แต่มันยังรวมถึงอัตราการถ่ายโอนข้อมูลระหว่างเครื่องเซิฟเวอร์ไปยังเครื่องลูกข่ายที่เข้ามาดูบอร์ด ทำให้หน้าบอร์ดที่มีข้อมูลมากๆ ใช้เวลาในการทำงานและส่งข้อมูลไปแสดงผลเร็วกว่าการเข้ารหัสภาษาชนิดอื่น

หวังว่าคงพอเข้าใจว่าทำไมถึงแนะนำให้ใช้ UTF-8 นะครับ

ส่วนวิธีการตรวจสอบกรณีภาษาที่มันแสดงออกมาเป็นเขมร แต่ตอนโพสใหม่กลับเป็นภาษาไทยโดยถูกต้อง อาจเป็นปัญหาที่เกิดขึ้นจากตอน convert ระบบฐานข้อมูลนะครับ ลองเข้าไปดูตารางต่างๆหลัง convert ผ่าน phpmyadmin ดูก่อนว่าภาษาที่ convert ไปถูกต้องหรือเปล่า
น่าจะเข้าใจผิดเรื่อง พื้นที่ในการเก็บข้อมูล นะครับ
UTF-8 ((8-bit UCS/Unicode Transformation Format)
TIS-620 (Thai Industrial Standard)
ใช้ utf-8 จะเก็บข้อมูล 1 ตัวอักษร มากกว่า ASCII ตัวอักษรนะครับ

ลองง่ายๆแบบนี้ก็ได้ โดยใช้ Notepad เขียนข้อความ ลงไป แล้วเลือก Save ชนิดเป็น UTF-8 กับ เลือกเป็น ASCII จะเห็นความแตกต่าง (พื้นที่ในการเก็บข้อมูลในฐานข้อมูลก็เหมือนกัน)
ผมไม่พูดเรื่องข้อดีข้อเสียนะครับเคยเขียนไว้ในกระทู้เก่าๆ แล้ว

ที่นี้มาดูปัญหา ของท่าน Phyrail`
สำหรับ โพสท์คลิปเบื้องหลัง รายการย้อนหลัง และ คลิปต่างๆ

คือข้อความ
สำหรับ โพสท์คลิปเบื้องหลัง รายการย้อนหลัง และ คลิปต่างๆ
ซึ่งรหัสที่เค้าแปลงมาข้างบนนั้นมันผิดตั้งแต่ต้นแล้ว คือเค้าแปลง ให้ภาษาไทยแสดงผลได้ใน charset ที่เป็น iso-8859-1 (Encoding ของพวก Western European)
ซึ่งตอนนี้ข้อมูล ส กลายเป็นข้อความธรรมดา ในการเข้ารหัส แบบ UTF-8 ไปแล้ว (ของเก่ามันเป็น ASCII)
ทีนี้ถามว่า แล้วจะแปลงกลับอย่างไรก็ต้องเขียนโปรแกรมเพื่อแปลงโค้ด เช่น ส----> ส ,... และตัวอื่นๆ ทั้งหมด
ทางแก้ง่ายๆ คือท่าน Phyrail` ต้องหาตัว Convert กลับของ ตัวแรกที่เคย ใช้ มาใช้กับ phpBB3 ที่ Convert มาแล้ว
โหลด phpBB3 ภาษาไทย ทั้งหน้าเว็บ และ admin
รวมพลคนใช้ phpBB3 แนะนำคนอื่นบ้างนะครับ ทุกคำถามจะได้มีคำตอบ แนะนำคนอื่นๆบ้างนะ ช่วยๆกันไป

สมาชิกใหม่ ก่อนถามแนะนำตัว
http://www.phpbbthailand.com/viewforum.php?f=41" onclick="window.open(this.href);return false;
กฏการใช้งานบอร์ด
http://www.phpbbthailand.com/viewtopic.php?f=37&t=5940" onclick="window.open(this.href);return false;
Phyrail`
phpBBThailand Newbie
phpBBThailand Newbie
โพสต์: 9
ลงทะเบียนเมื่อ: 31 ต.ค. 2008, 19:15

Re: Transfer ข้อมูล จาก phpBB 2.0.13 ไป 3.0 ทำไงครับ

โพสต์ โดย Phyrail` »

ผมหาตัวที่เคย convert เจอแล้ว
แต่ผมไม่แน่ใจว่า การให้ convert กลับไปต้องทำอย่างไร

ต้องรบกวนให้ชี้แนะอีกครั้ง
นี่คือ script ที่ใช้ครับ

โค้ด: เลือกทั้งหมด

<?php

define('IN_PHPBB', true); 
$phpbb_root_path = './'; 
include($phpbb_root_path . 'config.php'); 

if (!isset($lang['ENCODING'])) $lang['ENCODING'] = 'UTF-8';

header("Content-type: text/html; charset=".$lang['ENCODING']); // Document type

print "<HTML><HEAD><TITLE>Extend text fields in database</TITLE><meta http-equiv='Content-Type' content='text/html; charset=".$lang['ENCODING']."'></HEAD><BODY>\r\n";
print "<H3>Extend text fields in database to be used with UTF-8 encoding</H3>\r\n";
print "<SMALL><SMALL>By: <A href='mailto: SuperToy <[email protected]>'>[email protected]</A><BR>\r\n";
print "Thanks to: <b>'espicom (Jeff)'</b> from this thread <A href='http://www.phpbb.com/phpBB/viewtopic.php?p=2403768' target=_blank>http://www.phpbb.com/phpBB/viewtopic.php?p=2403768</A></SMALL></SMALL><BR><BR>\r\n";

print "Checking phpBB configurations ... "; ob_flush(); flush();

if (!defined('PHPBB_INSTALLED')) {
	die("<FONT color='red'><B>ERROR:</B> phpBB was not installed, or file 'config.php' was not found.</FONT></BODY></HTML>");
}

print "<FONT color='green'><B>OK</B></FONT><BR><BR>\r\n";

if (strpos($dbms,'ysql')==0)
	die("<FONT color='red'><B>ERROR:</B> phpBB does not use MySQL as its database.</FONT></BODY></HTML>");

print "<big>[MySQL queries]</big><br>\r\n"; ob_flush(); flush();
/* Connecting, selecting database */
$link = mysql_connect($dbhost,$dbuser,$dbpasswd)
	or die("<FONT color='red'><B>ERROR:</B> Cannot connect to host '".$dbhost."'<BR><CODE>".mysql_error()."</CODE></FONT></BODY></HTML>");
mysql_select_db($dbname,$link) or die("<FONT color='red'><B>ERROR:</B> Cannot select database '".$dbname."'<BR><CODE>".mysql_error()."</CODE></FONT></BODY></HTML>");

$query = "ALTER TABLE `".$table_prefix."topics` CHANGE `topic_title` `topic_title` CHAR( 240 ) NOT NULL;";
print $query."<br>\r\n"; ob_flush(); flush();
if (!mysql_query($query)) {
	print("<FONT color='red'><B>ERROR:</B> ".mysql_error()."</FONT></BODY></HTML>");
	mysql_close($link);
	exit();
}
$query = "ALTER TABLE `".$table_prefix."posts_text` CHANGE `post_subject` `post_subject` CHAR( 240 ) ;";
print $query."<br>\r\n"; ob_flush(); flush();
if (!mysql_query($query)) {
	print("<FONT color='red'><B>ERROR:</B> ".mysql_error()."</FONT></BODY></HTML>");
	mysql_close($link);
	exit();
}
$query = "ALTER TABLE `".$table_prefix."groups` CHANGE `group_name` `group_name` VARCHAR( 160 ) NOT NULL;";
print $query."<br>\r\n"; ob_flush(); flush();
if (!mysql_query($query)) {
	print("<FONT color='red'><B>ERROR:</B> ".mysql_error()."</FONT></BODY></HTML>");
	mysql_close($link);
	exit();
}
$query = "ALTER TABLE `".$table_prefix."categories` CHANGE `cat_title` `cat_title` VARCHAR( 255 ) ;";
print $query."<br>\r\n"; ob_flush(); flush();
if (!mysql_query($query)) {
	print("<FONT color='red'><B>ERROR:</B> ".mysql_error()."</FONT></BODY></HTML>");
	mysql_close($link);
	exit();
}
$query = "ALTER TABLE `".$table_prefix."disallow` CHANGE `disallow_username` `disallow_username` VARCHAR( 100 ) DEFAULT '' NOT NULL;";
print $query."<br>\r\n"; ob_flush(); flush();
if (!mysql_query($query)) {
	print("<FONT color='red'><B>ERROR:</B> ".mysql_error()."</FONT></BODY></HTML>");
	mysql_close($link);
	exit();
}
$query = "ALTER TABLE `".$table_prefix."forums` CHANGE `forum_name` `forum_name` VARCHAR( 255 ) ;";
print $query."<br>\r\n"; ob_flush(); flush();
if (!mysql_query($query)) {
	print("<FONT color='red'><B>ERROR:</B> ".mysql_error()."</FONT></BODY></HTML>");
	mysql_close($link);
	exit();
}
$query = "ALTER TABLE `".$table_prefix."posts` CHANGE `post_username` `post_username` VARCHAR( 100 ) ;";
print $query."<br>\r\n"; ob_flush(); flush();
if (!mysql_query($query)) {
	print("<FONT color='red'><B>ERROR:</B> ".mysql_error()."</FONT></BODY></HTML>");
	mysql_close($link);
	exit();
}
$query = "ALTER TABLE `".$table_prefix."ranks` CHANGE `rank_title` `rank_title` VARCHAR( 200 ) NOT NULL ;";
print $query."<br>\r\n"; ob_flush(); flush();
if (!mysql_query($query)) {
	print("<FONT color='red'><B>ERROR:</B> ".mysql_error()."</FONT></BODY></HTML>");
	mysql_close($link);
	exit();
}
$query = "ALTER TABLE `".$table_prefix."search_wordlist` CHANGE `word_text` `word_text` VARCHAR( 200 ) binary NOT NULL default '' ;";
print $query."<br>\r\n"; ob_flush(); flush();
if (!mysql_query($query)) {
	print("<FONT color='red'><B>ERROR:</B> ".mysql_error()."</FONT></BODY></HTML>");
	mysql_close($link);
	exit();
}
$query = "ALTER TABLE `".$table_prefix."users` CHANGE `username` `username` VARCHAR( 100 ) NOT NULL ;";
print $query."<br>\r\n"; ob_flush(); flush();
if (!mysql_query($query)) {
	print("<FONT color='red'><B>ERROR:</B> ".mysql_error()."</FONT></BODY></HTML>");
	mysql_close($link);
	exit();
}
$query = "ALTER TABLE `".$table_prefix."words` CHANGE `word` `word` CHAR( 255 ) NOT NULL ;";
print $query."<br>\r\n"; ob_flush(); flush();
if (!mysql_query($query)) {
	print("<FONT color='red'><B>ERROR:</B> ".mysql_error()."</FONT></BODY></HTML>");
	mysql_close($link);
	exit();
}
$query = "ALTER TABLE `".$table_prefix."words` CHANGE `replacement` `replacement` CHAR( 255 ) NOT NULL ;";
print $query."<br>\r\n"; ob_flush(); flush();
if (!mysql_query($query)) {
	print("<FONT color='red'><B>ERROR:</B> ".mysql_error()."</FONT></BODY></HTML>");
	mysql_close($link);
	exit();
}


# Closing database connection
mysql_close($link);

print "<br>\r\n<FONT color='green'><B>Completed!</B></FONT><br>\r\n";

?>
ไม่แน่ใจว่า ถ้าจะแก้ไข ให้กลับไปเป็นของเดิมนี่ แก้แค่ บรรทัดที่7

โค้ด: เลือกทั้งหมด

if (!isset($lang['ENCODING'])) $lang['ENCODING'] = 'UTF-8';
เปลี่ยนกลับให้เป็น TIS-620 ใช่ไหมครับ
ภาพประจำตัวสมาชิก
phpbb
phpBBThailand VIP Members
phpBBThailand VIP Members
โพสต์: 3140
ลงทะเบียนเมื่อ: 19 มิ.ย. 2008, 00:26
ติดต่อ:

Re: Transfer ข้อมูล จาก phpBB 2.0.13 ไป 3.0 ทำไงครับ

โพสต์ โดย phpbb »

ดูเหมือน ท่าน Phyrail` ไม่ได้อ่านที่ผมเขียนไว้นะครับ หรืออ่านแล้วไม่เข้าใจ
ตอนนี้ข้อความใน ฐานข้อมูลที่อยู่ใน บอร์ดที่ใช้ phpBB3 มันเป็น UTF-8 อยู่แล้ว (phpBB3 บังคับใช้ UTF-8)
แต่ข้อความ ซึ่ง encode เป็น UTF-8 นั้น มันไม่เป็นข้อความแต่มันเป็นโค้ด อย่างที่ผม ยกตัวอย่างตัว
'ส' ----> &#3626;
ต้องหาทาง แปลง
&#3626; เป็น ส
แต่ตัวอื่นๆทั้งหมด

ปัญหาไม่ใช่ encode ในฐานข้อมูล OK?
ถ้าไม่เข้าใจหรือไม่แน่ใจก็ถามได้ครับ บางทีการมั่วจะทำให้ปัญหาธรรมดาเป็นปัญหาที่แก้ไข ได้ยากขึ้น หรือไม่ได้เลย
เหมือนอย่างปัญหา แรกที่บอกว่า phpbb2 ปัญหาเรื่องหัวข้อกระทู้ตั้งได้ไม่กี่ตัวอักษร จริงๆทางแก้ก็แค่เพิ่มขนาด varchar ใน field นั้นๆ และ เอา max ข้อความใน field รับข้อมูลออกก็เสร็จ แล้ว ไม่ต้องไปทำให้ยุ่งยากเหมือนที่ทำมา
โหลด phpBB3 ภาษาไทย ทั้งหน้าเว็บ และ admin
รวมพลคนใช้ phpBB3 แนะนำคนอื่นบ้างนะครับ ทุกคำถามจะได้มีคำตอบ แนะนำคนอื่นๆบ้างนะ ช่วยๆกันไป

สมาชิกใหม่ ก่อนถามแนะนำตัว
http://www.phpbbthailand.com/viewforum.php?f=41" onclick="window.open(this.href);return false;
กฏการใช้งานบอร์ด
http://www.phpbbthailand.com/viewtopic.php?f=37&t=5940" onclick="window.open(this.href);return false;
Phyrail`
phpBBThailand Newbie
phpBBThailand Newbie
โพสต์: 9
ลงทะเบียนเมื่อ: 31 ต.ค. 2008, 19:15

Re: Transfer ข้อมูล จาก phpBB 2.0.13 ไป 3.0 ทำไงครับ

โพสต์ โดย Phyrail` »

ในส่วนที่แสดงออกเป็น ASCII ผมพอเข้าใจแล้วว่าเพราะอะไร

แต่ในส่วนที่ยังไม่เข้าใจก็คือ การแสดงผลเป็น

โค้ด: เลือกทั้งหมด

"รŠรจยงยคร‡ร’รรฃยนรฃยจร‹รƒร—รยฝร’ยกยคร“ยถร’รยถร–ยงรŠร’ร‡รฆยทร˜ยกยคยนรคยดรฉร "
ซึ่งที่ผมเข้าใจคือ ในเมื่อมัน Convert จาก TIS-620 เป็น UTF-8 แล้ว ถ้าดูจากขั้นตอนต่างๆแล้ว มันไม่น่าจะมีข้อผิดพลาดอะไร
แต่ผมสงสัยว่า ทำไมมันถึงแสดงออกมาเป็น ภาษาต่างดาวแบบนี้
ซึ่งเท่าที่ผมดูมันน่าจะเป็นที่ ขั้นตอนของการ convert หรืออาจจะเป็นเพราะรูปแบบ ของ database เก่า

ส่วนเรื่องข้อแนะนำเรื่อง phpbb2 คือจริงๆตอนแรกมันมี 2 ปัญหาครับ
มันเป็น ภาษาต่างดาวเหมือนกันตอนใช้ utf-8 ผมเลยแก้ให้เป็น Tis-620
และจึงพบว่ามีปัญหาด้านการตั้งกระทู้ยาวๆไม่ได้ จึงค่อยมาขยายอีกทีครับ

ขอบคุณ คุณ phpbb สำหรับคำแนะนำนะครับ เพราะปกติแล้วผมจะหาข้อมูลแล้วก็ลองมั่วๆดูก่อนที่จะถาม เพราะผมเองก็ไม่ได้มีความรู้ด้านนี้มาก
พอได้อ่านคำแนะนำว่า อาจจะเกิดปัญหาหนักขึ้นแล้ว ก็ลังเลขึ้นมาเลยทีเดียว
ThaiBB
phpBBThailand Sr. Member
phpBBThailand Sr. Member
โพสต์: 87
ลงทะเบียนเมื่อ: 03 ต.ค. 2008, 12:50
ที่อยู่: BKK
ติดต่อ:

Re: Transfer ข้อมูล จาก phpBB 2.0.13 ไป 3.0 ทำไงครับ

โพสต์ โดย ThaiBB »

ต้องขออภัยด้วยครับ ผมจำสลับไปเองเรื่องเข้ารหัสภาษา
ยังไงต้องขอโทษคุณ Phyrail` ด้วยนะครับ
เรื่อง convert เดี๋ยวรอให้คุณ phpBB มาช่วยต่อนะครับ
mindphp
phpBBThailand VIP Members
phpBBThailand VIP Members
โพสต์: 2269
ลงทะเบียนเมื่อ: 01 ม.ค. 1970, 07:00
ติดต่อ:

Re: Transfer ข้อมูล จาก phpBB 2.0.13 ไป 3.0 ทำไงครับ

โพสต์ โดย mindphp »

ข้อความ
รŠรจยงยคร‡ร’รรฃยนรฃยจร‹รƒร—รยฝร’ยกยคร“ยถร’รยถร–ยงรŠร’ร‡รฆยทร˜ยกยคยนรคยดรฉร
คิดว่ามันเป็นปัญหาจากการ การไปปรับแต่ง phpbb2 นะครับ ทำให้บางส่วนมีปัญหา เท่าที่สังเกตุตอนที่ convert phpbb2 มา phpbb3 อีกครั้ง เลยเป็นอย่างที่เห็น เนื่องจาก filed ที่เป็น VARCHAR ของเก่าไป Convert มันก่อน
และที่ดู ส่วนที่เก็บข้อความ ใน phpBB3 เป็น blob มันไม่มีปัญหา

ลองเปลี่ยน
charset ที่หน้าเว็บ ดูครับ
หรือไม่ก็ ลองเอา phpbb2 ตั้งแต่ ยังไม่ได้ปรับแต่อะไร convert เข้า phpBB3 โดยตรงไปเลย

คงตอบแก้ยากหน่อยนะครับ งานนี้ :onfire:
สร้างไฟล์ pdf online
ท่องเที่ยว http://www.thailandhotelforums.com/" onclick="window.open(this.href);return false;
สอน php http://www.mindphp.com/" onclick="window.open(this.href);return false;
Phyrail`
phpBBThailand Newbie
phpBBThailand Newbie
โพสต์: 9
ลงทะเบียนเมื่อ: 31 ต.ค. 2008, 19:15

Re: Transfer ข้อมูล จาก phpBB 2.0.13 ไป 3.0 ทำไงครับ

โพสต์ โดย Phyrail` »

ขอบคุณ คุณmindphp และ คุณThaiBB มากนะครับ

ผมคิดว่า สาเหตุน่าจะเป็นอย่างที่คุณ mindphp ว่าไว้
เคยลองเปลี่ยน charset หน้าเวปดูแล้ว ไม่ได้ผลครับ
ส่วนข้อมูลของ phpbb2 ก่อนที่จะทำการเปลี่ยนแปลงลบไปนานแล้วครับ เพราะทำไว้นานพอดูแล้วเหมือนกัน

คิดว่าถ้าไม่ได้จริงๆ จะลองหาวิธีให้ phpbb3 convert ข้อมูลทั้งหมดมาเป็น Tis-620 พอจะทำได้ไหมครับ
ภาพประจำตัวสมาชิก
phpbb
phpBBThailand VIP Members
phpBBThailand VIP Members
โพสต์: 3140
ลงทะเบียนเมื่อ: 19 มิ.ย. 2008, 00:26
ติดต่อ:

Re: Transfer ข้อมูล จาก phpBB 2.0.13 ไป 3.0 ทำไงครับ

โพสต์ โดย phpbb »

ไม่ได้ครับ อย่างที่ผมบอก ปัญหา ของมูล มีลองอย่างตามที่ผม บอก และ ท่าน mindphp บอกครับ
ส่วนที่ผม แนะนำไป ไม่ได้เป็นปัญหามาจากการ convert ระหว่าเวอชั่นของ phpBB มันเป็นเพราะการ convert ครั้งก่อน
ถ้าจะกลับให้เหมือนเดิม ต้องหาทางแปลง
พวก &#3626; เป็น ส ให้ได้
และส่วนอีกส่วนของท่าน mindphp บอก
โหลด phpBB3 ภาษาไทย ทั้งหน้าเว็บ และ admin
รวมพลคนใช้ phpBB3 แนะนำคนอื่นบ้างนะครับ ทุกคำถามจะได้มีคำตอบ แนะนำคนอื่นๆบ้างนะ ช่วยๆกันไป

สมาชิกใหม่ ก่อนถามแนะนำตัว
http://www.phpbbthailand.com/viewforum.php?f=41" onclick="window.open(this.href);return false;
กฏการใช้งานบอร์ด
http://www.phpbbthailand.com/viewtopic.php?f=37&t=5940" onclick="window.open(this.href);return false;
nasz
phpBBThailand Jr. Member
phpBBThailand Jr. Member
โพสต์: 11
ลงทะเบียนเมื่อ: 03 ก.พ. 2009, 15:16
ที่อยู่: TH-CM-SKP
ติดต่อ:

Re: Transfer ข้อมูล จาก phpBB 2.0.13 ไป 3.0 ทำไงครับ

โพสต์ โดย nasz »

ใครทำ Convert แล้วข้อมูลบอร์ด, โพส, แล้วก็สมาชิกหายมั่งอะครับ หายไปใหนอะครับ งงจัง
จาก 2.0.4 เป็น 3.0.4 ทำไง ใครรู้ช่วยชี้แจงแถลงใขหน่อย
Aomz
phpBBThailand Newbie
phpBBThailand Newbie
โพสต์: 9
ลงทะเบียนเมื่อ: 29 มิ.ย. 2010, 09:51

Re: Transfer ข้อมูล จาก phpBB 2.0.13 ไป 3.0 ทำไงครับ

โพสต์ โดย Aomz »

ผมลองลงติดตั้งตามวิธีอ่ะคับ มันขึ้นว่า No language found!
ผมควรทำไงดีครับ
ตอบกลับโพส

ย้อนกลับไปยัง

ผู้ใช้งานขณะนี้

กำลังดูบอร์ดนี้: 22 และ บุคคลทั่วไป 0 ท่าน