PHP Ionic Angularjs Phonegap AJAX Javascript CSS MySQL jQuery Forum

ขอถามเทคนิคเกี่ยวกับการ Loop เพื่อแสดงผลลัพธ์ข้อมูลในลักษณะ tree ครับ

ขอถามเทคนิคเกี่ยวกับการ Loop เพื่อแสดงผลลัพธ์ข้อมูลในลักษณะ tree ครับ

ผมต้องการที่จะแสดงผลข้อมูลออกมา โดยให้มันต่อกันเป็นลักษณะ tree ครับ
โดย จะมี Level ของมันสามารถ ยืดหยุ่น ได้ แล้วแต่เรา กำหนด

เช่น กำหนดให้มีแค่ 3 Level อยากให้มันแสดงข้อมูลตามแบบนี้ครับ

Lv 1      Lv 2           Lv 3

1 xxx
             1.1 xxx
             1.2 xxx
                               1.2.1 xxx
2 xxx
             2.1 xxx
                                2.1.1 xxx
                                2.1.2 xxx
             2.2 xxx

สมมุติ ข้อมูลดังกล่าว แตกย่อย เป็นข้างต้นครับ
ผมจะเขียน Loop เพื่อเรียกข้อมูลจาก Database อย่างไรดีครับ
ในกรณีที่ว่า
ต้องให้ครอบคลุมในกณีที่ สามารถกำหนด ลำดับ Level ได้
เช่น กรณีเพิ่มมีมากกว่า 3 Level เป็น 4 หรือ 5 หรือ มากกว่านั้น ตามที่กำหนด
โดยที่ไม่ต้องไปสร้าง table เพิ่มเติมให้ยุ่งยาก

จากโจทย์ดังกล่าว มันจะง่ายมาก ถ้าในแต่ ละ Level เป็น 1 table แล้ว เชื่อม แต่ละ table เป็นแบบ one to many ต่อลึกลงไปเรื่อยๆ
แต่ข้อกำหนดคือ ถ้าเกิดว่ามีการเพิ่ม Level ขึ้นมา เป็น Level ที่ 4 จะต้องสร้าง table ใหม่ขึ้นมาอีก

ผมเลยออกแบบ table มาคร่าวๆดังนี้ครับ
tb_category
category_id
category_name
category_level กำหนดว่า อยู่เลเวลไหน
category_parent กำหนดว่าใครคือพ่อของมัน หรือว่าตัวมันเองต้องต่อจากใคร (อ้างอิงจาก category_id ครับ)

จากโจทย์ข้างบน ข้อมูลแต่ละ record จะได้ในลักษณะนี้ครับ
category_id          category_name         category_level         category_parent
1                           1                               1                              0
2                           1.1                            2                              1
3                           1.2                            2                              1
4                           1.2.1                         3                              3
5                           2                               1                              0
6                           2.1                            2                              5
7                           2.2                            2                              5
8                           2.1.1                         3                              6
9                           2.1.2                         3                              6

ไม่รุ้ว่าผมออกแบบ database ได้ครบถ้วนรึเปล่า ช่วยชี้แนะด้วยครับ

จุดประสงค์คืออย่างที่บอกครับ เผื่อมีการ เพิ่ม หรือ ลด Level ให้มากหรือน้อยไปจาก 3 เลเวล
โดยที่ไม่ต้องการ สร้าง table ให้เพิ่มขึ้น และ ไม่จำเป็นต้องมาแก้ไข Code เพิ่มเติม
ทำทีเดียว ครอบคลุม สามารถเพิ่มลดแก้ไขได้
มันจะพอเป็นไปได้ไหมครับ
 



โดย:  Likit IP: 110.164.187.xxx วันที่: 16-09-2010 เวลา: 14:51:35

คำแนะนำ และการใช้งาน

สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก


  • ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ


  • ( หรือ สามารถทำการ สมัครสมาชิก และล็อกอิน ด้วย ปุ่ม Log in with Facebook ด้านล่าง )
 ความคิดเห็นที่ 2

ขอบคุณครับ นึกถึง Recursive Function เหมือนกัน แต่คิดไม่ออกจะสร้างฟังก์ชัน ออกมายังไงดี
เด๋วขอลอง ไปงม ต่อก่อน



โดย:  Likit IP: 124.121.180.xxx วันที่: 16-09-2010 เวลา: 21:47:39
 ความคิดเห็นที่ 1

 ฟิลด์ที่สำคัญ น่าจะมี category_id,category_name และ category_parent 

แนวทาง  เขียนเป็นฟังก์ชั้น กำหนดตัว parent เริ่มต้น วนลูปคิวรี่หาตัวลูก แล้วเรียกใช้ฟังก์ชันเดิม
ที่เขาเรียกว่า recursive function ดูตัวอย่างการสร้าง recursive function ที่
www.bcoms.net/php/php26.asp
 
ไอเดียนี้น่าจะมีประโยชน์ อาจได้เขียนเป็นบทความในโอกาสต่อไป


โดย:  Ninenik IP: 27.130.77.xxx วันที่: 16-09-2010