ขอบคุณทั้ง 2 ท่านที่ชมครับ ผมมาบอร์ดนี้ยังไม่เคยมีอะไรมาแบ่งปันเพื่อนๆในนี้เลย ได้แต่เก็บอย่างเดียว หุหุหุ และอีกอย่างผมเข้าใจสถานการณ์สำหรับเพื่อนๆที่มีปัญหา เป็นมือใหม่ และอยากจะหาความรู้เพิ่มเติม ผมก้อเลยคิดว่าอะไรที่เราพอรู้แล้วเราช่วยได้ก้อช่วยดีกว่า ผมนึกถึงหลักของ Matrix นะครับ ช่วยเค้า เค้าก้อไปช่วยคนอื่น ต่อๆๆๆ ไปได้ เป็นการกระจายกำลังให้กับบอร์ดนี้ ก้อเท่ากับว่าผมได้เข้ามาแบ่งปันให้บอร์ดนี้บ้างแล้ว ขอบคุณสำหรับกำลังใจครับ
ต่อมาครับ ตอบคำถามที่มิตรรัก PHP OSC ถามไว้ อิอิอิ
ที่แรกที่ผมดูโค๊ด 'n' ผมดูตัวที่ Back up ไว้ในเครื่องก็มี \ ปกติดี แต่พอ เอาไฟล์ที่อยู่ในเวบมาดูกลับไม่มี \
เลย งง มากครับ แต่ตอนนี้ได้แก้ตามที่บอกล่ะครับขอบคุณมาก
แต่ทำไมมันถึงเกิดขึ้นได้ล่ะครับ สาเหตุเกิดเพราะอะไรครับ
คุณบอกว่าเอาเว็ปให้ทาง Host เค้าจัดการด้วยใช่มะครับ ผมคาดว่าเค้าคงจะทำการ Optimize Code (ทำให้ไฟล์มีขนาดเล็กลง โดยการตัด Text บางตัวออกไป แบบ Auto) หรือ ใช้การ Replace แล้วเผลอไปลบ \ เข้า สังเกตุมัยครับ มีแค่ \ หายไป โชคดีที่เป็นแค่ 2 ไฟล์ เพราะฉะนั้นอย่าไว้ใจให้เค้าแก้แล้วนะครับ หุหุหุ
Warning: mysql_query(): Unable to save result set in c:\appserv\www\catalog\includes\functions\database.php on line 44
1030 - Got error 127 from table handler
ถ้าขึ้นข้อความนี้จำวิธีแก้ไข้ไว้ได้เลยครับ มีวิธีเดียว นั่นคือ ซ่อมแซมฐานข้อมูลอย่างเดียวครับ แก้ไขที่ ตารางที่มีปัญหา หรือ จะแก้ไขตารางทั้งหมดเลยก้อได้ครับ วิธีทำก้อ
- เข้าไปในส่วนของดาต้าเบสของเว็ปที่มีปัญหาครับ
- ติ้กถูกหน้าช่อง Check Box ของทุกตาราง โดยกดที่ Check All ด้านล่างก้อได้ครับ(คลำๆเอานะครับ)
- พอ Check All หมดทุกตารางแล้ว ก้อไปที่ List menu ครับ มันจะมี Repair หรือ ซ่อมแซม ให้เลือกเลยครับ(ต้องกด OK ด้วยหรือไงเนี่ย) ถ้ามี Optimize ด้วยก้อทำด้วยนะครับ
ผมแก้ไขในไฟล์
include/footer ครับคือปกติ มันจะเป็น ภาษาอังกฤษครับ ผมใส่ตัวอักษรไทยไปมันกลายเป็นตัวยึกยือ แต่พอผมเปลี่ยนตรงธงชาติเปลี่ยนเป็นภาษาไทยมันก็แสดงผลได้ตามปกติครับ
ผมจะสามารถให้มันแสดงผลตามแต่ละภาษาได้ไหมครับ แบบว่าผมกดธงชาติไทยมันก็แสดงเป็นไทย สดธงชาติอังกฤษมันก็แสดงเป็นภาษาอังกฤษ ในส่วน footer หน่ะครับ
การจะใส่ข้อความภาษาไทยใน OSC หรือ Source อื่นๆที่ผู้จัดทำเป็นคนต่างชาติ เราต้องคำนึงถึง Encode Text ด้วยครับ ให้ลองดู View source ดูครับ ในบรรทัดที่มี <meta http-equiv="Content-Type" content="text/html;
charset=utf-8" /> ถ้าในส่วนนี้ charset=windows-874 หรือ tis-620 ภาษาที่พิมเป็นไทยก้อจะแสดงผลออกมาเป็นภาษาไทยครับ ทั้งนี้ทั้งนั้นขึ้นอยู่กับ Font Type ด้วยครับ Font Type ที่ดีที่สุดผมคิดว่าเป็น Tomato size=9 ดังนั้นพอคุณเลือกแสดงภาษาเป็น en ตัวอักษรภาษาไทยเกิดเป็นภาษาต่างดาวขึ้นมาก้อเพราะว่า charset=utf-8 นั่นเอง เพราะฉะนั้นการที่เราจะใส่ข้อความภาษาไทยลงไปใน OSC เราควรกำหนด ตัวแปรคงที่(define) ขึ้นมา ให้กับประโยคนั้นๆหรือส่วนนั้นๆเลย ของแต่ละไฟล์ภาษา (เริ่มแล้วใช่มะครับ)
อย่าเพิ่งงครับ ผมจะขยายความและบอกวิธีเพิ่ม ผมจะบอกว่าภาษาหรือข้อความที่เราใส่เข้าไปใหม่สามารถเปลี่ยนไปตามการแสดงผลของภาษานั้นๆได้ โดยที่ข้อความสามารถอ่านรู้เรื่อง ใน OSC จะมีไฟล์ที่กำหนดข้อความของแต่ละหน้าอยู่ครับ ไฟล์เหล่านั้นจะอยู่ในส่วนของ includes>>languages ในโฟลเดอร์ language จะมีไฟล์และโฟลเดอร์ของแต่ละภาษาอยู่ 1 ภาษาก้อจะมีตัวอย่างดังนี้ เช่น ภาษา en ก้อจะมีโฟลเดอร์ชื่อ english และไฟล์ english.php ในโฟลเดอร์ english ก้อจะมีไฟล์อีกเพียบเลย(ลองเข้าไปดูนะครับ คุณสามารถเปลี่ยนรูปปุ่มและรูปธงได้ที่นี่) และภาษาอื่นก้อจะแยกออกมาอีก 1โฟลเดอร์กับอีก 1ไฟล์ ในไฟล์ต่างๆของโฟลเดอร์ Languages นี่แหละครับที่เป็นตัวเก็บข้อความต่างๆไว้ จำได้มัยครับที่คุณบอกว่าอยากให้ส่วนข้อความที่อยู่ด้านบน head ตรงคำว่า Top เป็นคำว่า Home คุณไปแก้ที่ไฟล์ในส่วนไหน คุณมาแก้ในส่วนของ languages ใช่มะครับ ตอนนี้ก้อให้จำให้ขึ้นใจเลยครับว่า
ไฟล์เก็บข้อความต่างๆของ OSC อยู่ในโฟลเดอร์ languages คราวนี้คุณก้อลองเปิดไฟล์ english.php และ Thai.php เทียบกัน เห็นความแตกต่างกันตรงไหนบ้าง
มาดูตัวอย่างตรงนี้ก้อได้ครับ ผมยกตัวอย่างมาให้ดู ประมาณบรรทัดที่เท่าไหร่ไม่รู้ เพราะของแต่ละ Source ไม่ค่อยเหมือนกัน ดูตามแล้วกันนะครับ
English.php
define('CHARSET', 'iso-8859-1');
// page title
define('TITLE', STORE_NAME);
// header text in includes/header.php
define('HEADER_TITLE_CREATE_ACCOUNT', 'Create an Account');
define('HEADER_TITLE_MY_ACCOUNT', 'My Account');
define('HEADER_TITLE_CART_CONTENTS', 'Cart Contents');
define('HEADER_TITLE_CHECKOUT', 'Checkout');
Thai.php
define('CHARSET', 'tis-620');
// page title
define('TITLE', STORE_NAME);
// header text in includes/header.php
define('HEADER_TITLE_CREATE_ACCOUNT', 'เปิดบัญชี');
define('HEADER_TITLE_MY_ACCOUNT', 'บัญชีของฉัน');
define('HEADER_TITLE_CART_CONTENTS', 'เนื้อหาตะกร้า');
define('HEADER_TITLE_CHECKOUT', 'เตรียมตัวจ่ายตังค์');
Tip ถ้าเราจะเพิ่มภาษาขึ้นมา เราควร Copy ไฟล์และโฟลเดอร์ภาษาเก่าที่เราใช้อยู่มาใส่ในโฟลเดอร์ languages โดยทำการเปลี่ยนชื่อไฟล์และโฟลเดอร์เป็นภาษานั้นๆ เพื่อให้ตัวแปรมีเท่ากันเหมือนเดิม
เหตุผล เพราะว่าหากเราไปโหลดของเจ้าอื่นมา version OSC ที่เราใช้อยู่อาจจะไม่ตรงกับที่เราโหลดมา ตัวแปรของเรากับตัวที่โหลดมาอาจมีไม่เท่ากัน ทำให้การแสดงผลผิดพลาดได้
ผมขออธิบายส่วนที่เป็นสีน้ำเงินก่อน ส่วนนี้สังเกตุให้ดีนะครับว่าไม่มีเครื่องหมาย
' ทั้งเปิดและปิดข้อความ อันนี้คือ ตัวแปร ที่มาจากฐานข้อมูล เจอแบบนี้เราไม่ควรเปลี่ยนข้อความประโยคนี้ครับ ควรไปเปลี่ยนในส่วนการจัดการของ Admin ส่วน define('CHARSET', '
tis-620'); เห็นมัยครับว่า OSC มีการเปลี่ยน charset ได้ ในส่วนอื่นๆคุณก้อแปลข้อความแล้วแก้ไขเป็นภาษาไทยเลย
ต่อมาอธิบายการใช้รูปแบบตัวแปรค่าคงที่(define) จะมีรูปแบบการใช้ดังนี้
define(' ตัวแปรที่เรากำหนด ' , ' ข้อความที่เรากำหนด ');
จำรูปแบบไว้นะครับ ผมจะสร้างให้ดู 1 ชุด โดยสร้างเพิ่มที่ภาษาไทย 1ชุด และ en 1ชุด แบบนี้คือการ เพิ่ม(Add) ไม่ใช่การแก้ไข(edit) นะครับ
Thai.php
define(' LANG_FOOTER ' , ' คุณสามารถติดต่อเราได้ที่เบอร์ 191 ');
english.php
define(' LANG_FOOTER ' , ' You can call me is number 191 ');
เวลานำไปใช้ก้อแค่นำตัวแปร LANG_FOOTER(อักษร ตัวใหญ่ ตัวเล็กต้องเหมือนกัน) ไปใช้แค่ตัวเดียว เช่น คุณอยากจะให้มีข้อความนี้ในส่วน footer.php คุณก้อแค่นำไฟล์ไปทำการ echo ในส่วนนั้นๆ เช่น
<?
echo LANG_FOOTER;
?>
ดังนั้นคุณสามารถจะเพิ่มชุด define กี่ชุดก้อได้ แต่มีข้อแม้นิดนึงสำหรับ OSC ยกตัวอย่างไฟล์ที่อยู่ข้างนอกโฟลเดอร์ english ก่อนนะครับ คือ ไฟล์ english.php ข้อความที่เก็บในไฟล์นี้ส่วนใหญ่จะเป็นข้อความทั่วๆไปบนหน้า index และข้อความธรรมดาที่ใช้บ่อยๆทั่วไป คุณสมารถเพิ่มชุด define ทั่วๆไปได้ที่นี้ แต่คราวนี้ลองมาดูไฟล์ที่อยู่ในโฟลเดอร์บ้าง ตัวอย่างไฟล์ คือ login.php คุณจะเห็นว่าข้อความในนี้คุ้นๆตาว่าเคยเห็นอยู่หน้าไหนมาก่อน นั่นก้อคือหน้า log in นั่นเอง ดังนั้นเวลาคุณจะเพิ่มข้อความอะไร ไปอยู่หน้าไหน ควรคำนึงถึงไฟล์ที่เราจะเพิ่มเข้าไปด้วยครับ ว่าเราควรไปเพิ่มที่ไฟล์ไหนดี
ที่ไฟล์
require(DIR_WS_BOXES . 'information.php'); ในส่วนของ colum left ผมลองเขียน code ใส่ไปในส่วนนี้มันก็ไม่ยอมแสดงผลออกมาหน่ะครับ คือผมอยากให้มีข้อความแนะนำเวปไซด์ทางด้านซ้าย ตามอ่านกระทู้แล้วคุณ kenn แนะนำให้ลง code ในส่วนนี้ปรากฏมันไม่แสดงผลครับ
อันนี้คุณลองนำโค้ดมาให้ผมดูหน่อยนะครับว่าคุณใส่โค้ดยังไง ผมคาดว่าคุณอาจจะใส่โค้ดผิด
สำหรับโพสนี้ ผมว่ามันยาวจนผมกลัวว่าจะตกหล่นอะไรไปบ้าง อาจจะทำให้อ่านไม่ค่อยเข้าใจ ยังไงไม่เข้าใจตรงไหนก้อถามเพิ่มแล้วกันนะครับ