ดูวิธีการใช้งานแบบเต็มๆที่ PHP กับจัดการฐานข้อมูลหมวดหมู่สินค้า MySQL แบบใช้ตารางเพียงตารางเดียวเท่านั้น
1. สร้างตารางเก็บข้อมูลหมวดหมู่สินค้า
ส่วนที่สำคัญก็คือ การเพิ่มฟิลด์เพื่อใช้สำหรับอ้างอิงหมวดหมู่หลักของรายการนั้นๆตาราง tb_category
1. id รหัส primary key
2. name ชื่อหมวดหมู่
3. parent_id รหัสของหมวดหมู่หลัก (ถ้าไม่มีให้ใส่ 0)
2. ออกแบบ Array สำหรับเก็บข้อมูลที่ Query จากฐานข้อมูล
ในขั้นตอนปกติทั่วไป ผมจะใช้วิธีดึงข้อมูลเป็นทอดๆ โดยคิวรี่ไปเรื่อยๆ2.1 หาหมวดหมู่หลัก WHERE parent_id = 0
2.2 ใน While Loop ให้หาหมวดหมู่ย่อยของแต่ละรายการด้วย WHERE parent_id = id
จากรูปแบบข้อมูลของ category ในความเป็นจริงก็คือ เราต้องการทุกรายการอยู่แล้ว และหากเป็นการ Query ซ้อน Query ก็จะทำให้ MySQL ต้องทำงานหนัก ลองนึกภาพถ้าหมวดหมู่หลัก 1 หัวข้อ มีหมวดหมู่ย่อยของหมวดย่อยโดยเฉลี่ย 3 ชั้น ก็จะเท่ากับต้องคิวรี่ 4 ครั้งในแต่ละหมวด
ดังนั้น ถ้ามี 10 หมวดหลัก ก็เท่ากับว่าต้องคิวรี่ 40 ครั้งจึงจะได้ข้อมูลครบถ้วน
งั้นเรามาลดการทำงานของ MySQL ด้วยการ Query ครั้งเดียวแล้วยัดมันเข้าไปใน Array กันดีกว่า
while($row=ดึงข้อมูลแต่ละเรคอร์ด){
$category[ไอดี] = $row;
}
ตอนนี้เรามี $category ที่เก็บข้อมูลครบถ้วนแล้ว
แต่สิ่งที่เราต้องการคือข้อมูลที่แยกหมวดหมู่แล้วนะ งั้นก็มาดูกันหน่อยว่า รายการไหนเป็นหมวดย่อยบ้าง และก็จัดการสร้างคีย์ "sub" ให้กับรายการนั้นๆที่เป็นหมวดหลักของเราไปเลย
while($row=ดึงข้อมูลแต่ละเรคอร์ด){
if($row['parent_id'] > 0){
$category[$row['parent_id']]["sub"][] = $row;
}else{
$category[$row['id']] = $row
}
}
แค่นี้รายการต่างๆก็อยู่เข้าที่เข้าทางเรียบร้อย ที่เหลือก็คือการ วนลูปแสดงมันออกมา
แต่เราต้องสร้างฟังก์ชั่นในการแสดงข้อมูลรอไว้ก่อนนะ เพระถ้ารายการไหนเป็น sub เราจำเป็นต้องส่งเข้าฟังก์เดิมอีกครั้งไปเรื่อยๆ รู้สึกว่าเขาจะเรียกว่า RECURSIVE Functionfunction displayCategory($data){
echo '<hr>';
echo '<pre>';
print_r($data);
echo '</pre>';
if(isset($data['sub']){
displayCategory($data['sub']); //RECURSIVE Function
}
}
foreach($category as $id=>$row){
displayCategory($row);
}
ที่จะแนะนำทั้งหมดก็มีแค่นี้แหละ แต่ถ้าสงสัยหรือรันแล้ว Error เราจะเจอกันใหม่อีกครั้งนะ ^^"
สำหรับวิดีโอสาธิตขั้นตอนการเขียนโค้ดและแสดงผลแบบทีละสเต็ปเอาไว้จะอัพเดตอีกที
ดูวิธีการใช้งานแบบเต็มๆที่ PHP กับจัดการฐานข้อมูลหมวดหมู่สินค้า MySQL แบบใช้ตารางเพียงตารางเดียวเท่านั้น
ความคิดเห็น
แสดงความคิดเห็น