หมวดหมู่คนไร้บ้าน php.ini การสร้างแผนผังหมวดหมู่ใน PHP
อันดับแรก ฉันจะอธิบายว่าเราจะทำงานด้วยอะไรและเราต้องการอะไร
ระบบ: PHP 5 ขึ้นไป, mySQL 4 ขึ้นไป
คลาสเสริม: dbsql.class.php (คลาสสำหรับการทำงานกับฐานข้อมูล)
คลาสของหมวดหมู่ที่ซ้อนกัน: classTreeCategory.php (โดยตรงคือคลาสหลัก ด้านล่างคือรายการและคำอธิบาย
เราสร้างตารางในฐานข้อมูลด้วยโครงสร้างดังต่อไปนี้:
ดูโค้ด MySQL
ตารางนี้ประกอบด้วยฟิลด์ ID - หมายเลขซีเรียลของหมวดหมู่, podcat - มีค่าเป็นศูนย์สำหรับหมวดหมู่ลำดับที่หนึ่งหรือ ID ของหมวดหมู่หลัก, ชื่อ - ชื่อของหมวดหมู่
ตัวอย่างวิธีการทำงานของชั้นเรียน โดยแสดงหมวดหมู่ในรายการที่มีหมวดหมู่ย่อย:
ดูโค้ด PHP
รวม ("dbsql.class.php" ) ; รวม ("classTreeCategory.php" ) ; $DB = new DB_Engine("mysql" , $settings [ "dbHost" ] , $settings [ "dbUser" ] , $settings [ "dbPass" ] , $settings [ "dbName" ] ) ; // เชื่อมต่อกับฐานข้อมูล โดยระบุข้อมูลการเข้าถึง $category = new TreeCategory ($DB ) ; // ส่งผ่านไปยังคลาสหมวดหมู่ซึ่งเป็นวัตถุสำหรับทำงานกับฐานข้อมูล $category -> table = "category" ; // ชื่อของตารางในฐานข้อมูลที่มีหมวดหมู่ $array = $category -> getCategory () ; // รับหมวดหมู่ทั้งหมดจากฐานข้อมูลในรูปแบบของอาร์เรย์หลายระดับ เรียงลำดับและซ้อนกันตามลำดับที่เราต้องการ $category -> outCategory ($array, "option" ) ; // เตรียมผลลัพธ์ของหมวดหมู่ (สร้าง HTML) ส่งอาร์เรย์ที่มีหมวดหมู่ echo $category -> html ; // หมวดหมู่เอาต์พุตเป็นชื่อ HTML |
ดังที่คุณเห็นจากตัวอย่างข้างต้น ทุกอย่างง่ายมาก เราสร้างออบเจ็กต์ $category ใหม่ ตั้งค่าตารางฐานข้อมูลที่เรากำลังทำงานด้วย: 'category' จากนั้นเราจะได้รายการหมวดหมู่ทั้งหมดที่มีการจัดรูปแบบเป็น อาร์เรย์และจัดเรียงตามลำดับชั้นโดยคำนึงถึงหมวดหมู่ย่อยทั้งหมด จากนั้นเราจะส่งอาร์เรย์ไปยังเมธอด outCategory() ซึ่งจะสร้างโค้ด HTML สำเร็จรูปให้เรา ซึ่งเราต้องแสดงในเบราว์เซอร์เท่านั้น
ตามที่เราเห็น เมธอด outCategory() จะใช้พารามิเตอร์สองตัว @array และ @string ในพารามิเตอร์ตัวแรกกับอาร์เรย์ที่มีทุกหมวดหมู่ และในพารามิเตอร์ตัวที่สองคือบรรทัดที่มีตัวเลือกหรือค่าตาราง ค่านี้จะระบุประเภทของโค้ด HTML ที่ต้องใช้ ที่จะถูกสร้างขึ้น
ค่าตัวเลือก
ดูโค้ด HTML
-หมวดที่ 1 --หมวดย่อย 1 ---หมวดย่อย 1 -หมวด 2 |
หากต้องการแทรกโค้ด HTML นี้ลงในช่องเลือกของแบบฟอร์มใดๆ
ค่าตารางสร้างโค้ด HTML ต่อไปนี้:
ดูโค้ด HTML
โค้ด HTML นี้สะดวกสำหรับการแทรกลงในตารางที่แสดงหมวดหมู่และหมวดหมู่ย่อยทั้งหมดของเรา
ชั้นเรียนยังมีวิธีการดังต่อไปนี้:
ลบรายการ($id); — ลบหนึ่งหมวดหมู่ แม้ว่าจะเป็นหมวดหมู่ที่ซ้อนกันก็ตาม
delCategory($อาร์เรย์, $id); — ลบหมวดหมู่ที่มีหมวดหมู่ย่อยที่ซ้อนกันทั้งหมด, $array — อาร์เรย์ที่มีหมวดหมู่ทั้งหมดจัดทำโดยวิธี $category->getCategory(), $id — จำนวนของหมวดหมู่ที่จะลบ
เพิ่มรายการ(); — ควรเรียกวิธีนี้หากคุณต้องการเพิ่มหมวดหมู่และวิธีนี้จะอ่านค่าจากข้อมูลที่ส่งโดยวิธี POST เช่น จากอาร์เรย์ $_POST
$name=$this->PHP_slashes(strip_tags($_POST['ชื่อ'])); // ชื่อหมวดหมู่
$podcat=intval($_POST['พอดแคต']); // ID ของหมวดหมู่หลัก หากระบุ 0 หมวดหมู่จะอยู่ที่รูท
อัพเดตรายการ() ; — คล้ายกับวิธีก่อนหน้า ยกเว้นว่าวิธีนี้จะอัปเดตหมวดหมู่ ชื่อ และระดับการซ้อน
ทั้งชั้นเรียนเขียนได้ภายในหนึ่งชั่วโมงและแน่นอนว่ามีข้อบกพร่องอยู่บ้าง แต่ข้อนี้สามารถแก้ไขได้ทั้งหมด แนะนำให้ใช้เพื่อวัตถุประสงค์ทางการศึกษาแม้ว่าจะทำให้เสร็จเพียงเล็กน้อย แต่คุณสามารถรวมเข้ากับระบบใดก็ได้และสนุกกับงานของมัน))
ฉันจะขอบคุณถ้าในความคิดเห็นที่คุณแนะนำวิธีแก้ปัญหาของคุณเองสำหรับปัญหานี้ - การจัดหมวดหมู่ของการทำรังระดับอนันต์
มุมมองแผนผังหมวดหมู่ย่อยของหมวดหมู่เป็นวิธีที่ใช้งานง่ายในการแสดงรายการหมวดหมู่หลักและหมวดหมู่รอง หมวดหมู่และหมวดหมู่ย่อยสามารถแยกออกจากกันได้อย่างง่ายดายด้วยโครงสร้างแบบต้นไม้ แนะนำให้ใช้มุมมองแบบต้นไม้หมวดหมู่เพื่อแสดงหมวดหมู่และหมวดหมู่ย่อยในระดับที่ไม่สิ้นสุด
ในบทช่วยสอนนี้ เราจะแสดงวิธีสร้างแผนผังหมวดหมู่ย่อยแบบไดนามิกโดยใช้ PHP และ MySQL แผนผังหมวดหมู่แบบเรียกซ้ำมีประโยชน์มากในการแสดงรายการหมวดหมู่ระดับ n ในเมนูแบบเลื่อนลง โค้ดตัวอย่างช่วยให้คุณสร้างดรอปดาวน์หมวดหมู่ย่อยหมวดหมู่ระดับ n ใน PHP ข้อมูลหมวดหมู่ไดนามิกจะถูกดึงมาจากฐานข้อมูล MySQL และแสดงรายการในรูปแบบแผนผังหมวดหมู่หลักและรอง
สร้างตารางฐานข้อมูลในการจัดเก็บหมวดหมู่และหมวดหมู่ย่อย จำเป็นต้องสร้างตารางในฐานข้อมูล SQL ต่อไปนี้จะสร้างตารางหมวดหมู่ในฐานข้อมูล MySQL
สร้างตาราง `หมวดหมู่ ` (`id` int (11 ) NOT NULL AUTO_INCREMENT, `parent_id` int (11 ) NOT NULL DEFAULT "0" , `name` varchar (100 ) COLLATE utf8_unicode_ci NOT NULL , `created` datetime NOT NULL , `แก้ไข` datetime NOT NULL , `status` enum("1" ,"0" ) COLLATE utf8_unicode_ci NOT NULL DEFAULT "1" COMMENT "1:Active, 0:Inactive" , PRIMARY KEY (`id` )) ENGINE= InnoDB ค่าเริ่มต้น CHARSET= utf8 COLLATE= utf8_unicode_ci;คอลัมน์ parent_id ระบุว่าหมวดหมู่นั้นเป็นระดับบนสุดหรือระดับล่าง หาก parent_id เป็น 0 จะเป็นหมวดหมู่หลัก มิฉะนั้นจะเป็นหมวดหมู่ย่อยและรหัสจะเป็นหมวดหมู่หลักของหมวดหมู่นี้
การกำหนดค่าฐานข้อมูล (dbConfig.php)ไฟล์ dbConfig.php ใช้เพื่อเชื่อมต่อและเลือกฐานข้อมูล ระบุโฮสต์ฐานข้อมูล ($dbHost) ชื่อผู้ใช้ ($dbUsername) รหัสผ่าน ($dbPassword) และชื่อ ($dbName) ตามข้อมูลรับรอง MySQL ของคุณ
ฟังก์ชั่นเรียกซ้ำ PHP เพื่อสร้างแผนผังหลัก / ลูกฟังก์ชัน categoryTree() สร้างโครงสร้างหมวดหมู่ย่อยหมวดหมู่ระดับ n โดยใช้ PHP มันจะสร้างตัวเลือกแบบเลื่อนลงสำหรับแผนผังหมวดหมู่
- $parent_id – ไม่บังคับ ระบุ ID หลักเพื่อรับหมวดหมู่ลูกของหมวดหมู่หลักนี้
- $sub_mark – ไม่บังคับ เครื่องหมายที่จะต่อท้ายชื่อหมวดหมู่ย่อย