วันพฤหัสบดีที่ 16 กุมภาพันธ์ พ.ศ. 2555

นำข้อมูลจาก MySQL Database มาแสดงใน Select(List/Menu) ด้วยโปรแกรมDreamweaver (PHP+MySQL)


        หลังจากที่เคยได้สอนแสดงข้อมูลและแบ่งหน้าข้อมูลจากฐานข้อมูล MySQLในตาราง (Table) มาแล้ว คราวนี้จะสอนท่านดึงข้อมูลมาแสดงใน  Select(List/Menu) หรือ combo box บ้างครับ ส่วนมากแล้วข้อมูลที่ถูกนำมาแสดงใน Select(List/Menu) มีลักษณะเป็นตัวเลือกที่กำหนดไว้ให้แล้ว ซึ่งจะบังคับไม่ให้เราระบุข้อมูลที่นอกเหนือจากนี้ และข้อมูลที่ผมจะนำมาแสดงใน Select(List/Menu) ที่ผมสอนคือ หมวดสินค้า ครับ ซึ่งเราจะเห็นภาพวิธีการใช้งานได้ชัดเจนยิ่งขึ้นในบทความหน้าครับ ในเรื่องของการเพิ่มข้อมูลสินค้า โดยเราจะนำ Select(List/Menu) แสดงหมวดหมู่สินค้า นี้ไปใช้ครับ

+++ สร้างการเชื่อมต่อกับฐานข้อมูลก่อนครับ ทำตามในบทความนี้เลย --> สร้างการเชื่อมต่อฐานข้อมูล MySQL ด้วยDreamweaver
 จากนั้นให้ สร้าง Recordset เพื่อร้องขอข้อมูลในเทเบิลหมวดหมู่สินค้า (tb_category) ก่อนครับ ดังรูป
1 คลิกที่แท็บ BINDINGS 
2 เลือกตัวเลือกแรก คือ Recordset (Query)
+++ เมื่อหน้าต่าง Recordset แสดงขึ้นมาดังรูป

1 ตั้งชื่อให้กับ recordset ของเรา ผมตั้งชื่อว่า showcate เพราะต้องการข้อมูลจากเทเบิลหมวดสินค้าครับ
2 เลือกคำสั่งการเชื่อมต่อกับฐานข้อมูล ศึกษาข้อมูลได้จากที่นี่ --> สร้างการเชื่อมต่อฐานข้อมูล MySQL ด้วยDreamweaver
3 เลือกเทเบิล ซึ่งผมเลือก tb_category ซึ่งเป็นเทเบิลที่ใช้เก็บข้อมูลของหมวดสินค้าครับ
4 เลือกฟิลด์ทั้งหมด (ในที่นี้มีเพียง 2 ฟิลด์เท่านั้นคือ cg_idและcg_name)
5 เรียงข้อมูลจากฟิลด์ชื่อ cg_name โดยเรียกตามตัวอักษรน้อยไปหามาก Ascending

+++ ในแท็บ BINDINGS จะมีข้อมูล Recordset มาแสดงดังรูปข้างล่าง
+++ จากนั้นให้สร้างไฟล์ขึ้นมา 1 ไฟล์ ตั้งชื่อว่า listmenu.php ให้ทำตามรูปข้างล่างเลยครับ

+++ และให้ทำตามขั้นตอนด้านล่างนี้เลยครับ
1 คลิกที่ Select(List/Menu)
2 ตั้งชื่อให้ Select(List/Menu) ของคุณซะ
3 คลิกที่ Dynamic
4 คลิกที่ Label แรก แล้วพิมพ์ "–เลือกหมวด-" ส่วนค่าใน Value ให้ปล่อยว่างไว้
5 เลือก Recordset ของเราครับ ซึ่งผมเลือก showcate ที่ได้สร้างไปเมื่อกี้ครับ
6 เลือกข้อมูลไปแสดงใน Select(List/Menu) ซึ่งจะมีอยู่ 2 ส่วน คือ Values และ Labels
7 คลิก OK

+++ ไปที่ไฟล์ listmenu.php คลิกที่ Code แล้วเพิ่มคำสั่ง mysql_query(‘SET NAMES UTF8’) เพื่อรองรับการแสดงผลภาษาไทย ในบรรทัดต่อจากคำสั่ง mysql_select_db ดังรูป
+++ จากนั้นให้RUNไฟล์ โดยกดที่ปุ่ม F12 แล้วจะได้ผลลัพธุ์ดังรูป

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

  1. ขอบคุณครับมาแบ่งปันความรู้อีกแล้วววววว

    อยากให้สอนแบบว่าเลือกตามหมวดแล้วก็แสดงสินค้าตามหมวดหมู่ครับ:)

    ตอบลบ
    คำตอบ
    1. @deksp จะเก็บเอาไว้พิจารณาครับ :) แต่ผมว่า มันทำไม่ยากเลยนะครับ
      แค่แสดงหมวดสินค้าก่อน เมื่อเราเลือกหมวดสินค้าใดๆ ก็ให้ส่ง id ของหมวดสินค้านั้นเป็นเงื่อนไขไปคิวรี่ข้อมูลจากในเทเบิลสินค้ามาแสดงครับ โดยใช้คำสั่ง sql เช่น SELECT * FROM products WHERE id_หมวดสินค้า=idหมวดสินค้าที่เลือก

      ลบ
  2. ไม่ระบุชื่อ17 พฤษภาคม 2555 เวลา 22:49

    ขอถามหน่อยนะครับ ..คือว่า ผม ทำตาราง "สินค้า" แยก กับ "หมวดหมู่"
    เวลา Add รายการสินค้า ผมจะให้เก็บ ID ของหมวดหมู่ แล้วทีนี้ ผมหน้า Show รายการสินค้า ผม recordset ทั้ง product และ category แต่ที่ผมยัง งง อยู่ก็คือ จะผูก 2 ตารางนี้ยังไง? คือ หมวดหมู่สินค้ามันแสดงเป็น ID ของ ตัวหมวดหมู่ แต่ผมอยากให้มันแสดงเป้นชื่อหมวดหมู่ อ่ะครับ...

    ตอบลบ
  3. @bggaro
    Join Table ไม่ยากครับ แต่จะต้องเขียนคำสั่ง sql เพิ่มเองนิดหน่อยครับ โดยไปที่ Advanced.. ของหน้าต่าง recordset
    ลองศึกษาจากเว็บนี้ดูนะครับ Creating Recordsets with Joins
    เดี๋ยวถ้าว่างๆผมจะเขียนบทความ เรื่องการผูกเทเบิลในโปรแกรมดรีม ให้อ่านกันนะครับ

    ตอบลบ
  4. ไม่ระบุชื่อ18 พฤษภาคม 2555 เวลา 09:07

    ขอบคุณครับ ^^

    ตอบลบ
  5. ไม่ระบุชื่อ27 สิงหาคม 2556 เวลา 14:39

    ใส่ mysql_query(‘SET NAMES UTF8’) แล้ว Error คับ

    ตอบลบ
    คำตอบ
    1. ไม่น่าErrorนะครับ พิมพ์ mysql_query('SET NAMES UTF8'); นะครับ
      ลอง mysql_query('SET NAMES UTF8') or die(mysql_error()); เพื่อดูปัญหาครับ

      ลบ
  6. ขอบคุณมากคร้า เป็นประโยชน์มากค๊

    ตอบลบ
  7. ถ้าเราเลือกคำว่าตุ๊กตากบ คือจะให้มันแสดงออกมา ในรายการที่เราคลิก เขียนอย่างไรคะ

    ตอบลบ
  8. สร้าง list menu แต่มองไม่เห็น recdcordset ที่สร้างไว้ครับ

    ตอบลบ
  9. เมื่อเราเลือกข้อมูลใน list แล้ว อยากให้ลิงค์ไปหน้าใหม่ค่ะ เช่น ถ้าเลือกตุ๊กตากบ แล้วให้ลิงค์ไปเพจใหม่ ต้องเขียนยังไงต่อคะ

    ตอบลบ
  10. อยากให้สอนแบบว่าเลือกตามหมวดแล้ว ก็กดแสดงสินค้าตามหมวดหมู่ครับ:)

    ตอบลบ