23 พฤษภาคม 2555, 13:32:09
ยินดีต้อนรับผู้เยี่ยมชม
  • noavata
  • ยินดีต้อนรับคุณ, ผู้เยี่ยมชม กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน
    เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น
Page Rank

ทำเว็บไซต์ | แต่งบอร์ด | ออกแบบ | SMF | Joomla | Drupal | WordPress | JQuery | CMS | ECommerce | Tel. +668-08577477

ส่งหัวข้อนี้พิมพ์ หน้า: 1 
icon message ผู้เขียน หัวข้อ: การแทรก เพิ่มตาราง และฟิลด์ใน phpMyadmin ของ mod SMF  (อ่าน 1676 ครั้ง)
0 สมาชิก และ 1 ผู้เยี่ยมชม กำลังดูหัวข้อนี้
*
*


!Personal

Germany   ชาย ผู้เริ่มต้นกระทู้นี้ ออฟไลน์544566157 DexMore DexMore DexMore
เว็บไซต์
  • ชื่อ: Edit Database
  • ผู้เขียน: UnclEo
  • นำเสนอโดย: DexMoreGroup
  • ประเภท: Administrative
  • รองรับ: SMF 1.1.xx, 2.0.xx
  • ปรับปรุงล่าสุด: 16 มีนาคม 2554

รายละเอียด
      ปัญหาการติดตั้ง mod ที่ไม่สามารถจัดการติดผ่านศูนย์จัดการเพคเกจได้ ก็ต้องแก้ไขโค้ดด้วยตัวเอง ซึ่งได้ทำบทความแนะนำผู้ใช้ SMF ไปแล้วก็คงจะใช้แก้ปัญหาในส่วนของการแก้ไขโค้ดไปได้แล้ว แต่ยังมีบาง mod ที่จะต้องเพิ่มตาราง หรือฟิลด์ในฐานข้อมูล โดยมาก mod ของ SMF จะมีไฟล์สำหรับการแก้ไขหรือเพิ่มฐานข้อมูลมาให้แล้ว แต่มันก็ติดปัญหาอยู่ว่าบางครั้งไม่สามารถดำเนินการได้ด้วยปัจจัยสภาพแวดล้อมหลายกรณี
      การปรับแต่งนี้ค่อนข้างละเอียดอ่อนผู้ที่จะทำการแก้ไขจะต้องมีความรอบคอบเป็นอย่างมาก เพราะฐานข้อมูลคือส่วนที่บันทึกข้อมูลของบอร์ดทั้งหมดไว้ หากผิดพลาดเสียหายก็หมายถึงคุณต้องเสียข้อมูลทั้งหมด ต่างจากการแก้ไขโค้ดหากผิดพลาดเราก็สามารถย้อนคืนหรืออัพโหลดไฟล์ใหม่ไปทับได้ การป้องกันข้อมูลเสียหายก็คือก่อนทำการแก้ไขหากไม่มั่นใจให้สำรองข้อมูลไว้ทุกครั้ง อาจะเป็นสำรองเฉพาะตารางที่ต้องการแก้ไข หรือสำรองไว้ทั้งหมดก็ได้

แก้ไขฐานข้อมูล:
      อย่างที่กล่าวไว้แล้วครับว่า mod ของ SMF จะมีไฟล์สำหรับแก้ไขหรือเพิ่มฐานข้อมูลมาให้แล้ว ซึ่งไฟล์จะเป็นนามสกุล .php ขอยกตัวอย่าง 2 mod คือ mod visualwarning และ Hack's Park Shoutbox ซี่ง mod visualwarning จะมีไฟล์ชื่อว่า VisualWarningPdb.php และ mod Hack's Park Shoutbox ชื่อว่า smf-1.1.x_install.php สำหรับแก้ไขฐานข้อมูลของ SMF 1.1.xx และ smf-2.0.x_install.php สำหรับแก้ไขฐานข้อมูลของ SMF 2.0.xx ซึ่ง mod อื่นๆ ก็จะมีชื่อแตกต่างกันออกไป แล้วเราจะรู้ได้อย่างไรไฟล์ใหนที่ใช้ในการดำเนินการกับฐานข้อมูล? อันนี้ไม่ยากเลยครับ ทุก ๆ mod จะมีไฟล์ package-info บอกรายละเอียดการกระทำต่างๆ ของ mod นั้นอยู่ครับ ให้มองหาโค้ด <code>smf-1.1.x_install.php</code> อันนี้เป็นของ mod Hack's Park Shoutbox ครับ มันบอกว่าไฟล์นี้แหละเป็นไฟล์ที่ดำเนินกับฐานข้อมูล

      ก่อนที่เพิ่มหรือแก้ไขเราก็ต้องอ่านคำสั่งที่มีอยู่ในไฟล์ให้ออกก่อนครับ ขอยกตัวอย่างไฟล์จาก mod visualwarning ก่อนนะครับ

      อธิบายตามรูป หากท่านคิดจะทำก็ขอให้ไปดาวน์โหลด mod นี้มาแล้วลองเปิดไฟล์นี้ดูและทำตามไปเรื่อยๆ นะครับ ตามรูปนั้นผู้ที่โปรแกรม mod นี้ประกาศอาร์เรย์ เพื่อเก็บตัวแปล และค่าต่างๆ หลายๆ ตัวไว้เป็นชุด

การแทรก
      
      ต่อมาก็ใช้คำสั่งนี้

      นี่แหละครับเป็นการเรียกใช้อาร์เรย์ ที่ประกาศไว้มาใช้งานด้วยคำสั่ง INSERT IGNORE INTO {$db_prefix}settings
INSERT INTO = แทรกเข้าไป (ความหมายมันก็ชัดเจนอยู่แล้วนะครับ)
IGNORE = ไม่ต้องสนใจ หากตัวแปรหรือค่าเหล่านั้นมีอยู่แล้ว
{$db_prefix} = คำนำหน้าตารางในปัจจุบัน คำนำหน้าตารางนี้เราได้กำหนดไว้แล้วในไฟล์ Settings.php
settings = ตาราง settings ซึ่งเมื่อรวมกับคำนำหน้าตารางแล้วจะได้เป็น smf_settings (ค่าเดิมของ SMF)

      พอจะเข้าใจโดยคร่าวๆ แล้วใช่ไหมครับว่า คำสั่งนั้นมันให้แทรกตัวแปร (variable) และค่า (value) ในตาราง settings คราวนี้ก็มาดูภาคปฏิบัติครับ เปิด phpMyadmin ของท่านขึ้นมาเลย

      จัดการแทรกตามในรูปแล้วครับ


      สมมุติว่าเราแก้ไขตาม mod นี้นะครับ ก็จัดการนับเลยว่าจะต้องเพิ่มกี่แถว ใน mod นี้มันต้องเพิ่ม 18 แถวตามจำนวนตัวแปลใน array ในรูปที่ 1 ในที่นี้เราสามารถเลือกเป็น 20 แถว และไม่สนใจซะ 2 แถว แล้วก็ทำการเพิ่มค่าโดยคัดลอกไปจากไฟล์เลยดีกว่าครับไม่ต้องมานั่งพิมพ์อยู่ เดียวพิมพ์ผิดพิมพ์ถูกใช้งานไม่ได้ไล่แก้กันยาวอีก

จากรูปนี้ผมเอาตัวแปรและค่าจากอาร์เรย์ ตัวแรกเลยครับคือตัวแปร visualw_pmod_edit และมีค่าเป็น 0 มันมีทั้งหมด 18 แถวก็จัดการไล่ใส่มาให้หมดเลยเสร็จก็กด ลงมือ

จบขั้นตอนการแทรกแต่พอคร่าวๆ

การสร้างตาราง
      ยังอยู่ที่ mod visualwarning นะครับ ถัดลงมาจากรูปที่ 2

      จากโค้ดนี้เราจะเห็นคำสั่ง CREATE TABLE IF NOT EXISTS {$db_prefix}postmoderation
CREATE TABLE = สร้างตาราง (ความหมายตรงตัวเลยครับ)
IF NOT EXISTS = หากตารางนี้หากยังไม่มี
{$db_prefix} = คำนำหน้าตารางปัจจุบัน
postmoderation = ชื่อตาราง (สำเร็จเป็น smf_postmoderation)

      มาถึงภาคปฏิบัติอีกครั้งครับ เข้าไปใน phpMyAdmin ของคุณเช่นเคย

      จัดการเพิ่มตารางครับ โดยในที่นี้ mod นี้มันให้สร้างตารางชื่อ postmoderation เราหลีกเลี่ยงไม่ได้ครับต้องตามนั้น แต่คำนำ้หน้าตารางในตัวอย่างนี้ผมใช้เป็น s13_ ซึ่งท่านไม่ต้องตามผมหรอกคำนำหน้าตารางของท่านเป็นอย่างไรก็ใส่ไปอย่างนั้น เมื่อสร้างตารางแล้วภายในตารางต้องมีฟิลด์ครับ เราก็นับจำนวนฟิลด์อีกครับ จากในโค้ดตัวอย่างตั้งแต่ ID จนถึง ID_POLL ทั้งหมดก็ 13 ฟิลด์ครับ ให้สังเกตุเลข 13 ในรูป เมื่อเรียบร้อยแล้วก็คลิก ลงมือ

      เห็นภาพแล้วเทียบกับโค้ดพอจะนึกอะไรออกไหมครับ เปรียบเทียบระหว่างโค้ดกับรูปเอานะครับแล้วจะเข้าใจอะไรๆ ขึ้นมาอีกมากมาย
ชื่อของฟิลด์ = ID
ชนิดของข้อมูล = INT
ความยาวของข้อมูล = 11 (INT คือตัวเลขจำนวนเต็ม 11 = จำนวนตัวเลข ของ ID ในที่นี้คือ ID มีความยาว 11 ตัวเลขจำนวนเต็ม)
ค่าปริยาย = ในฟิล์ด์นี้ไม่มีค่าปริยาย
การเรียงลำดับ = ในฟิลด์นี้ไม่มีการเรียงลำดับเพราะไม่ใช้ตัวอักษร
แอตทริบิวต์ = ในฟิลด์นี้ไม่มีแอตทริบิวต์
ว่างเปล่า = NOT NULL
A_I = AUTO_INCREMENT
      ความหมายของค่าเหล่านี้ท่านจำเป็นต้องค้นคว้าเรียนรู้ด้วยตัวเองนะครับ จะให้ผมอธิบายในนี้ทั้งหมดคงเป็นไปได้ยาก แนะนำไว้แค่พอเป็นพืื้นฐานเท่านั้นเอง เมื่อเสร็จแล้วก็คลิก บันทึก จะได้หน้าตาแบบนี้ครับ

      ยังมีอีกหนึ่งคำสั่งคือ PRIMARY KEY (ID) คือกำหนดให้ฟิลด์เป็น PRIMARY KEY โดยการคลิกที่รูปกุญแจ (ตามรูป) ในฟิลด์ของ ID เพื่อกำหนดให้ฟิลด์ ID เป็น PRIMARY KEY
      
      นี่คือการแทรก เพิ่มตาราง และฟิลด์ใน phpMyadmin ของ mod SMF ครับโดยที่ผ่านมานั้นแกะเอาจาก mod visualwarning ซึ่งโดยทั่วๆ ไปก็เห็นได้ใน mod ต่างๆ ที่มีการเพิ่มฐานข้อมูล

      ต่อไปก็จะแกะจาก mod Hack's Park Shoutbox เพื่อที่จะให้ท่านได้เห็นโค้ดอีกรูปแบบหนึ่งซึ่งมีความแตกต่างกันนิดหน่ิอย แต่หากท่านทำความเข้าใจกับมันสักนิด และเรียนรู้เพิ่มเดิมเกี่ยวกับ SQL อีกสักหน่อยก็เข้าใจได้ไม่ยากครับ

      โค้ดจาก mod Hack's Park Shoutbox

      ขึ้นต้นก็เป็นแบบนี้เลยครับ
DROP TABLE = ลบตาราง
IF EXISTS = หากมีอยู่แล้ว
{$db_prefix} = คำนำหน้าตารางปัจจุบัน
hp_settings = ชื่อตาราง
      ความหมายโดยรวมก็คือ หากตารางชื่อนี้และคำหน้าตารางเป็นคำหน้าปัจจุบันมีอยู่แล้วให้ลบทิ้งไปเลย

      ลบทิ้งแล้วคราวนี้ก็มาถึงการสร้างตาราง

      สังเกตุดูให้ดีนะครับ คำสั่งสร้างตารางยังเหมือนเดิม แต่คราวนี้ตัวแปรและค่าไม่ได้เป็นอาร์เรย์ แล้ว ส่วนวิธีที่เราจะทำมือก็ยังเหมือนเดิมครับโค้ดด้านหน้าที่เน้นด้วยสีเขียวคือตัวแปร และที่เน้นด้วยสีเหลืองเป็นค่า(ของตัวแปร) เราก็จัดการแทรกเข้าไปเหมือนกับวิธีที่ทำกับ mod visualwarning เลย

      ข้อควรระวัง! หากท่านคัดลอกตัวแปร และค่าจากไฟล์ไประวังอย่าให้ติดเครื่องหมาย single quotes (') ไปนะครับ

      คงจบแค่นี้แหละครับ กว่าจะถ่ายทอดพอให้ท่านได้เข้าใจได้เล่นเอาแทบขาดใจ หากมีปัญหาตรงใหนก็สอบถามเพิ่มเติมได้ครับ ยินดีให้คำแนะอย่างเต็มที่เท่าที่ความรู้ที่พอมีอยู่ในรอยหยักของสมองนะครับ โชคดี..

ลิงค์หัวข้อ: http://dexmore.com/topic/5434
Windows XP    Firefox 3.5.17   see ip บันทึกการเข้า
ดูรายการสิ่งของสำหรับบอกรักใครสักคน ก็ส่งไปให้เขาเลย!  สำหรับติดหมุดกระทู้ของคุณ!  เพิ่มเวลาที่อยู่ในระบบอีก 12 ชั่วโมง  น้องหมี..เอาไว้กอดนอนแทนกิ๊ก  สำหรับบอกรักใครสักคน ก็ส่งไปให้เขาเลย!  
*



Thailand   ชาย ออฟไลน์
icon message
general ความคิดเห็นที่ 1 เมื่อ: 17 ธันวาคม 2554, 11:20:02
สืบเนื่องมากจาก http://dexmore.com/topic/2215 ที่นี้  ไฟล์ package-info ผมต้องไปเอาที่ต้นฉบับใช้ไหมครับ
หลังจากนั้นผมเปิด ไฟล์ ไฟล์ package-info
แล้วผมเจอ ตรงนี้

อ้างถึง
<code>add_settings.php</code>

ก็ต้องเข้าไปดูที่ไฟล์นี้ใช้ไหมครับ  add_settings.php
แล้วหลังจากนั้น ผมจะนับตารางยังไงอะครับ งงตรงนี้ ช่วยทีครับ


ลิงค์หัวข้อ: http://dexmore.com/topic/5434
Windows XP    Firefox 3.5.7   see ip บันทึกการเข้า
โฮสต์ดีๆ บริการด้วยใจ
*
*


!Personal

Germany   ชาย ผู้เริ่มต้นกระทู้นี้ ออฟไลน์544566157 DexMore DexMore DexMore
เว็บไซต์
icon message
general ความคิดเห็นที่ 2 เมื่อ: 17 ธันวาคม 2554, 12:16:01
ใน mod ทุก mod ที่นำเสนอถ้ามีการสร้างตารางจะมีโค้ดโพสต์อยู่แล้วครับ แค่เอาไปทำเป็นไฟล์แล้วรัน ถ้ารันไม่ได้ก็ต้องทำเองตามกระทู้นี้ ก็แกะอ่านจากโค้ดที่โพสต์ได้เลย

วิธีอ่านกระทู้นี้ก็แนะนำไว้แล้วนี่ครับ

ลิงค์หัวข้อ: http://dexmore.com/topic/5434
Windows XP    Firefox 8.0   see ip บันทึกการเข้า
ดูรายการสิ่งของสำหรับบอกรักใครสักคน ก็ส่งไปให้เขาเลย!  สำหรับติดหมุดกระทู้ของคุณ!  เพิ่มเวลาที่อยู่ในระบบอีก 12 ชั่วโมง  น้องหมี..เอาไว้กอดนอนแทนกิ๊ก  สำหรับบอกรักใครสักคน ก็ส่งไปให้เขาเลย!  
*
*


!Personal

Germany   ชาย ผู้เริ่มต้นกระทู้นี้ ออฟไลน์544566157 DexMore DexMore DexMore
เว็บไซต์
icon message
general ความคิดเห็นที่ 3 เมื่อ: 6 มีนาคม 2555, 11:10:34
อ่านซิครับ ใช้ทำอะไร มีประโยชน์อย่าง ทำอย่างไร รู้สึกว่าเวลา 8 ชั่วโมงที่ผมทำบทความนี้ได้อธิบายไว้คลอบคลุมแล้วนะครับ

ลิงค์หัวข้อ: http://dexmore.com/topic/5434
Windows NT 6.1    Firefox 10.0.2   see ip บันทึกการเข้า
ดูรายการสิ่งของสำหรับบอกรักใครสักคน ก็ส่งไปให้เขาเลย!  สำหรับติดหมุดกระทู้ของคุณ!  เพิ่มเวลาที่อยู่ในระบบอีก 12 ชั่วโมง  น้องหมี..เอาไว้กอดนอนแทนกิ๊ก  สำหรับบอกรักใครสักคน ก็ส่งไปให้เขาเลย!  
ส่งหัวข้อนี้พิมพ์ หน้า: 1 
กระโดดไป:  

Creative Commons License

SMF Thai Translation Powered by SMF © 2006–2012, Simple Machines LLC

WordPress Google เข้าเยี่ยมชมหน้านี้ล่าสุดเมื่อ : 22 พฤษภาคม 2555, 07:47:41

jQuery Plugin Copyright © 2551-2555 Themes Design & Hosting by DexMoreGroup

Sitemap | Thai Simple Machines Forum support SMF Thai

Web Begining | SMF Modifications | SMF Thai Translation Web Begining

Drupal | WordPress | CMS Joomla | jQuery Plugin | Web Graphics CMS Joomla