วันอาทิตย์ที่ 20 พฤษภาคม พ.ศ. 2555

แสดงข้อมูลจากฐานข้อมูลโดยการ Join Table โดยใช้ Recordset ของโปรแกรม Dreamweaver


       บทความนี้จะสอนแสดงข้อมูลโดยใช้วิธี Join Table จากฐานข้อมูล MySQL กันบ้างครับ หลังจากที่เคยสอนแสดงข้อมูลมาแล้วหลายบทความ ดูได้จาก สอนใช้โปรแกรมDreamweaver บทความก่อนหน้านี้ ผมได้สอนแค่ดึงข้อมูลออกมาแสดง เพียงTableเดียวเท่านั้น บทความนี้จะสอนดึงข้อมูลจาก 2 Table ที่มีความสัมพันธ์กันมาแสดงครับ โดยข้อมูลที่สัมพันธ์กันก็คือ คีย์หลัก (Primary key) กับ คีย์นอก (Foreign key) นั่นเองครับ ลองศึกษาความสัมพันธุ์จากเว็บนี้ดูนะครับ ผมจะไม่ขออธิบายมาก http://school.obec.go.th/kubird/NewDBMS/db13.htm

มาดูวิธีทำกันเลยครับ
1. สร้างไฟล์ .php ขึ้นมา 1 ไฟล์ ตั้งชื่ออะไรก็ได้ ของผมชื่อว่า jointable.php ให้ดีไซน์หน้าตาประมาณนี้ครับ

 2.Table ในฐานข้อมูล ผมได้ออกแบบดังนี้ คือ product (เก็บรายการสินค้า) กับ category (เก็บหมวดสินค้า)

 จะเห็นได้ว่าทั้งสอง table นี้มีความสัมพันธ์กันแบบ 1:M (One to Many Relationships = ความสัมพันธุ์แบบหนึ่งต่อกลุ่ม)
1  หรือ One จะหมายถึง Field ชื่อ id_cg ของ เทเบิล category เราจะเรียกว่า คีย์หลัก ครับ
M หรือ Many จะหมายถึง Field ชื่อ id_cg ของ เทเบิล product เราเรียกว่า คีย์นอก ครับ
เราจะได้คำสั่ง Join Table ดังนี้
SELECT * FROM Category Inner Join product ON product.id_cg = category.id_cg 
เราจะเอาคำสังนี้ไปใช้อีกที ในขั้นตอนต่อไป แนะนำให้คุณศึกษาคำสั่ง SQL Join Table เพิ่มเติมได้ที่นี่เลย http://www.gotoknow.org/blogs/posts/97459

3.สร้างการเชื่อมต่อกับฐานข้อมูลก่อนนะครับ จากบทความนี้ สร้างการเชื่อมต่อฐานข้อมูล MySQL ด้วยDreamweaver (PHP+MySQL)

4.ไปที่ BINDINGS เลือก Recordset ดังรูป

5.หน้าต่าง Recordset แสดงขึ้นมา ให้กดปุ่ม Advanced. ดังรูปเลย

6.ทำตามขั้นตอนดังรูปเลย
    1.ตั้งชื่อให้ตัวRecordset ของเราซะ ผมตั้งชื่อว่า rs_pdshow
    2.เลือกการเชื่อมต่อกับฐานข้อมูลที่เราได้สร้างไว้
    3.Copy คำสั่ง Join Table จากข้างบนมาวางจุดนี้ได้เลย
    4.กดปุ่ม OK

7.ข้อมูลจะแสดงใน BINDINGS ดังรูป

8.จากนั้นให้ลากข้อมูลไปวางในFormที่เราได้สร้างเอาไว้ ดังรูป


9.เราจะวนลูปแสดงข้อมูลทั้งหมดมาแสดง ถ้าเราไม่ทำการวนลูป ข้อมูลจะแสดงแค่แถวเดียวเท่านั้น ทำตามขั้นตอนดังรูป

แล้วไปที่ SERVER BEHAVIORS กดที่เครื่องหมาย + แล้วเลือก Repeat Region

ปรากฎหน้าต่าง Repeat Region ขึ้นมา ให้เลือกที่ All records และกดุป่ม OK

จากนั้นให้ RUN โปรแกรมโดยกดปุ่ม F12 จะได้ผลลัพธุ์ดังรูป

9 ความคิดเห็น :

  1. ไม่ระบุชื่อ10 สิงหาคม 2555 เวลา 23:10

    แล้ววิธีดึงภาพมาจากฐานข้อมูลมาโชว์บนหน้าเว็บทำอย่างไรครับ

    ผมใช้Recordsetดึงมาที่เป็นตัวอักษรดึงมาได้ครับแต่รูปดึงมาแล้วเป็นภาษาต่างดาวไม่เป็นรูปครับ

    ตอบลบ
    คำตอบ
    1. คุณอัปโหลดไปไว้ในฐานข้อมูลใช่ไหมครับ (ที่กำหนด type เป็น Blob)
      ลองทำตามตัวอย่างในเว็บนี้ดูนะครับ -> http://www.goragod.com/knowledge/%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B9%81%E0%B8%AA%E0%B8%94%E0%B8%87%E0%B8%A3%E0%B8%B9%E0%B8%9B%E0%B8%97%E0%B8%B5%E0%B9%88%E0%B8%AD%E0%B8%B1%E0%B8%9B%E0%B9%82%E0%B8%AB%E0%B8%A5%E0%B8%94%E0%B9%84%E0%B8%A7%E0%B9%89%E0%B8%9A%E0%B8%99%E0%B8%90%E0%B8%B2%E0%B8%99%E0%B8%82%E0%B9%89%E0%B8%AD%E0%B8%A1%E0%B8%B9%E0%B8%A5.html

      ผมแนะนำให้เก็บรูปภาพแบบนี้ดีกว่าครับ ->http://www.thaicreate.com/community/php-upload-file-mysql-edit-form.html

      เพราะวิธีที่คุณทำมันค่อนข้างยุ่งยาก และไม่เป็นที่นิยมกันครับ เพราะจะทำให้ฐานข้อมูลบวมได้

      ลบ
    2. ไม่ระบุชื่อ12 สิงหาคม 2555 เวลา 04:35

      ขอบคุณครับ ไม่ค่อยถนัดเขียนโค้ดเองครับ ชอบDreamweaver รู้สึกมันง่ายดีครับ :D

      ลบ
    3. แต่ต้องหัดเขียนโค๊ดให้ได้ด้วยนะครับ โดยดูตัวอย่างโค๊ดที่DreamมันGenarateให้
      เผื่อเจอปัญหา จะทำให้สามารถแก้ไขเองได้ เพราะDreamมันช่วยเราในบางส่วนเท่านั้น แต่งานที่ซับซ้อนกว่านี้ มันทำให้เราไม่ได้หรอกครับ เราจะต้องเขียนโค๊ดเอาเอง
      ตอนแรกผมก็ทำแบบคุณนี้แหละครับ แต่ผมได้ศึกษาโค๊ดในDreamด้วย ทำให้สามารถดัดแปลงโค๊ดได้ตามที่เราต้องการครับ

      ลบ
  2. ไม่ระบุชื่อ20 พฤษภาคม 2556 เวลา 08:02

    ทำได้ใน ดรีม 3อย่างเดียวหรอคะ

    ตอบลบ
    คำตอบ
    1. ทำได้หมดทุกเวอร์ชั่นเลยครับ

      ลบ
  3. การ join สามารถทำได้มากกว่า 3ตารางไหมค่ะ

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

    ตอบลบ