เมนูBagatorіvneveใน PHP และ MySQL §2. วิธีสร้างเมนูแนวตั้งที่ปรากฎบน php Inurl php own menu id pyramid

โกลอฟนา / นลัชตูวันยา

หากเว็บไซต์ของคุณไม่มีหน้าเว็บเดียว ให้ลองเพิ่มแถบนำทาง (เมนู) เมนู - แจกจ่ายไปยังเว็บไซต์ซึ่งช่วยในการนำทางเว็บไซต์ ไม่ว่าจะเป็นเมนู - รายการข้อความที่ควรเก็บไว้ที่ด้านในของเว็บไซต์ ตัวเขาเอง ด้วยวิธีง่ายๆเพิ่มแผงการนำทางไปยังไซต์และสร้างเมนู ช่วย CSSและ HTML

เมนูแนวตั้ง

ขั้นตอนแรกในการสร้างเมนูแนวตั้งคือการสร้างรายการหัวข้อย่อย เรายังต้องการความสามารถในการระบุรายการ ดังนั้นเราจึงเพิ่มแอตทริบิวต์ id ด้วยตัวระบุ "navbar" องค์ประกอบเครื่องหนัง

  • รายการแก้แค้นของเราสำหรับหนึ่งคำขอ:

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

    #navbar ( margin: 0; padding: 0; list-style-type: none; width: 100px; )

    ถึงเวลาแล้วที่จะสร้างสไตล์ให้ตัวคุณเอง เราเพิ่มสีพื้นหลังให้กับพวกเขา เปลี่ยนพารามิเตอร์ของข้อความ: สี ขนาดและขนาดของแบบอักษร เสริมเล็กน้อย เพิ่มขั้นตอนเล็ก ๆ และเปลี่ยนขนาดของแบบอักษร องค์ประกอบจากแถวหนึ่งไปยังอีกบล็อกหนึ่ง Dodatkovo ถูกเพิ่มในเฟรมด้านซ้ายและด้านล่างของรายการในรายการ

    ส่วนที่สำคัญที่สุดของการเปลี่ยนแปลงของเราคือการกระจายองค์ประกอบขนาดเล็กบนบล็อก ตอนนี้ข้อความของเราใช้พื้นที่ว่างทั้งหมดของรายการในรายการ ดังนั้นเพื่อสลับไปยังข้อความ เราไม่จำเป็นต้องชี้เคอร์เซอร์ไปที่ข้อความอีกต่อไป

    #navbar a ( สีพื้นหลัง: #949494; สี: #fff; padding: 5px; text-decoration: none; font-weight: ตัวหนา; border-left: 5px solid #33ADFF; display: block; ) #navbar li ( ขอบซ้าย: 10px ทึบ #666; ขอบล่าง: 1px ทึบ #666;

    เราได้รวมรหัสทั้งหมด คำอธิบายเพิ่มเติมไว้ในก้นเดียว ตอนนี้ โดยการกดปุ่มลอง คุณสามารถไปที่ด้านข้างพร้อมกับก้นและดูผลลัพธ์:

    การตั้งชื่อเอกสาร

    ลอง "

    เมื่อเลื่อนเคอร์เซอร์ของเมาส์ไปที่รายการเมนูโยคะ ดูเก่าคุณสามารถเปลี่ยน, เปลี่ยนความเคารพของ coristuvach. คุณสามารถสร้างเอฟเฟกต์ดังกล่าวได้ด้วยการช่วยคลาสหลอก: โฮเวอร์

    มาดูส่วนท้ายของเมนูแนวตั้งที่เราดูก่อนหน้านี้และเพิ่มกฎต่อไปนี้ในตารางสไตล์:

    #navbar a:hover ( background-color: #666; border-left: 5px solid #3333FF; ) ลอง »

    เมนูแนวนอน

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

    สามารถสร้างเมนูแนวนอนเพื่อเพิ่มสไตล์ให้กับรายการที่ยอดเยี่ยมได้ การแสดงพลังสำหรับองค์ประกอบ

  • จำเป็นต้องตั้งค่าแบบอินไลน์เพื่อให้รายการในรายการถูกจัดเรียงทีละรายการ

    ในการวางรายการเมนูในแนวนอนที่ด้านหลัง เราสร้างรายการการทำเครื่องหมายด้วยข้อความ:

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

    #navbar ( margin: 0; padding: 0; list-style-type: none; ) #navbar li ( display: inline; ) ลอง »

    ตอนนี้เราสูญเสียมากกว่า การออกแบบโวหารสำหรับเมนูแนวนอนของเรา:

    #navbar ( margin: 0; padding: 0; list-style-type: none; border: 2px solid #0066FF; border-radius: 20px 5px; width: 550px; text-align: center; background-color: #33ADFF; ) #navbar a ( สี: #fff; padding: 5px 10px; text-decoration: none; font-weight: bold; display: inline-block; width: 100px; ) #navbar a:hover ( border-radius: 20px 5px ; background-color: #0066FF; ) ลอง »

    เมนูวีไอพี

    เมนูในขณะที่เราจะสร้าง แม่ของข้อความการนำทางหลัก จัดเรียงในแถบนำทางแนวนอน และรายการย่อย ทันทีที่เคอร์เซอร์ของเมาส์วางเหนือรายการเมนูนั้น จนกว่าจะมองเห็นรายการย่อยจำนวนหนึ่ง .

    ขั้นแรก เราต้องสร้างโครงสร้าง HTML ของเมนูของเรา ข้อความการนำทางหลักที่เราสามารถเพิ่มลงในรายการที่ทำเครื่องหมายไว้:

    รายการย่อย mi rozmіstimo ในรายการ okremy ใส่ yogo ในองค์ประกอบ

  • เพื่อล้างแค้นตามคำขอของพ่อสำหรับจุดย่อย ตอนนี้ เราสามารถอ่านโครงสร้างของแผงการนำทางในอนาคตของเรา:

    ลอง "

    ทีนี้มาลงที่การเขียนโค้ด CSS กัน สำหรับ cob จำเป็นต้องแนบรายการของจุดย่อยสำหรับการแสดงเสียงเพิ่มเติม: none; เพื่อไม่ให้กลิ่นเหม็นปรากฏบนเว็บไซต์ตลอดทั้งชั่วโมง สำหรับการแสดงจุดย่อย เราต้องการ ดังนั้นเมื่อวางเมาส์เหนือองค์ประกอบ

  • รายการการเปลี่ยนแปลงใหม่ในองค์ประกอบบล็อก:

    #navbar ul ( display: none; ) #navbar li:hover ul ( display: block; )

    เราใช้ทั้งรายการและเครื่องหมายที่แทรกอยู่หลังล็อค องค์ประกอบของรายการพร้อมอุปกรณ์ช่วยนำทางที่ลอยได้ รูปทรง เมนูแนวนอนแต่สำหรับองค์ประกอบของรายการซึ่งควรตรวจสอบรายการย่อย ให้ตั้งค่า float: none; เพื่อให้กลิ่นเหม็นเหมือนหนึ่งภายใต้หนึ่ง

    #navbar, #navbar ul ( margin: 0; padding: 0; list-style-type: none; ) #navbar li ( float: left; ) #navbar ul li ( float: none; )

    จากนั้นเราต้องทำงานในลักษณะที่เมนูย่อยของเราซึ่งไม่หลุดออกมาไม่รบกวนเนื้อหาโดยกดลงไปใต้แผงการนำทาง ที่เราใส่รายการไปยังตำแหน่งรายการ: ญาติ; และในรายการสิ่งที่จะแก้แค้นตำแหน่งย่อย: สัมบูรณ์; і dodamo พลังสูงสุด іzค่า 100%, schob อยู่ในตำแหน่งที่แน่นอนpіdmenuvіdobrazhalosตรง pіd pіd silannyam

    #navbar ul ( แสดง: ไม่มี; ตำแหน่ง: สัมบูรณ์; บนสุด: 100%; ) #navbar li ( float: ซ้าย; ตำแหน่ง: ญาติ; ) #navbar ( ความสูง: 30px; ) ลอง »

    ความสูงของรายการ Batkiv ถูกเพิ่มโดยเจตนา เพื่อให้เบราว์เซอร์ไม่ตรวจสอบเนื้อหาที่ลอยอยู่ในองค์ประกอบ โดยไม่เพิ่มความสูง เบราว์เซอร์จะละเว้นรายการของเรา และเนื้อหาที่ตามหลังรายการจะล้อมรอบเมนูของเรา

    ตอนนี้เราสูญเสียรูปแบบการดูถูกรายการและเมนูของเราไปแล้ว สิ่งที่คุณเห็น เตรียมตัวให้พร้อม:

    #navbar ul ( display: none; background-color: #f90; position: absolute; top: 100%; ) #navbar li:hover ul ( display: block; ) #navbar, #navbar ul ( ระยะขอบ: 0; ช่องว่างภายใน: 0; list-style-type: none; ) #navbar ( height: 30px; background-color: #666; padding-left: 25px; min-width: 470px; ) height: 100%; ) #navbar li a ( display: block; padding: 6px; width: 100px; ) #navbar li:hover (สีพื้นหลัง: #f90; ) #navbar ul li:hover (สีพื้นหลัง: #666; )

    เมนูไซต์ใน php ซึ่งจัดการโดยสคริปต์ php มีลักษณะเฉพาะของตัวเอง มันไม่ได้เป็นเพียงค่าสัมบูรณ์หรือ vodnosn_ sila แม้ว่ามันอาจจะเป็นทั้งหมด แต่ตามกฎแล้วบล็อกของไซแลนของแผงด้านข้างซึ่งถูกหล่อหลอมแบบไดนามิกด้วยrazdіlaและpoddrozdіlaіบล็อกของ silan จากด้านในสุดของ เว็บไซต์. เมนูซึ่งสร้างขึ้นแบบไดนามิกนั้นมีประโยชน์อยู่แล้ว วิธีที่จะแทรกลงในเว็บไซต์ ไม่ว่าจะเป็นสถานที่หรือช่วงเวลาที่สำคัญที่สุดในเวลาที่เหมาะสม ดังนั้นเมื่อคุณไปที่ส่วนต่างๆ และโฟลเดอร์ย่อย คุณสามารถขยายบล็อคเมนูต่างๆ ได้แบบไดนามิก นอกจากนี้กลิ่นเหม็นอาจแตกต่างกันไม่เพียง แต่สำหรับ zmist แต่ยังรวมถึงรูปร่างและการออกแบบ สำหรับไซต์แบบคงที่ คุณสามารถตรวจสอบลูกเล่นเหล่านี้ได้ แต่คุณจะต้องเพิ่มไฟล์เพิ่มเติมลงในเทมเพลตและลูกเล่นอีกมากมาย ต้องการให้ไซต์เขียนด้วย php ไม่ได้ช่วยอะไร สูญเสียแม่แบบจามรีฉัน buv Usim keruvateme สคริปต์ php อย่างง่ายหนึ่งหรือสองสามตัว

    เพื่อที่จะเปลี่ยนไปใช้อื่น การเขียนสคริปต์ php สำหรับการสร้างเมนูแบบไดนามิกก็เพียงพอแล้ว ตัวอย่างเช่น ส่วนหัวแรกและเปลี่ยนเมนูของส่วนหัวผ่านการเขียนสคริปต์ก่อนหน้า หัวเรื่องอื่นๆ สามารถกำหนดได้ในลักษณะเดียวกัน นอกจากนี้ โค้ดของสคริปต์เองก็มีการเปลี่ยนแปลงในทางปฏิบัติเพียงเล็กน้อย เปลี่ยนเฉพาะไฟล์ข้อความซึ่งเรียกว่าข้อความและตัวข้อความอย่างมีความหมาย รหัสสำหรับสคริปต์ดังกล่าวจะอยู่ด้านล่างข้อความ

    // การสร้างเมนู
    $menu = @file($rubric1_menu);
    $lines = นับ($เมนู);
    สำหรับ ($i = 0; $i< $lines; $i++)
    {
    รายการ($menu_link,$menu_name,$menu_title)=explode("::", $menu[$i]);
    if($page == rub1_part1 and $i == 0) ($refcolor = "style="color:#cc0000"";)
    elseif($page == rub1_part2 and $i == 1) ($refcolor = "style="color:#cc0000"";)
    elseif($page == rub1_part3 and $i == 2) ($refcolor = "style="color:#cc0000"";)
    อื่น ($refcolor = "";)
    $rubric1.="

  • ".$men_name"
  • ";
    }
    ?>

    เพื่อประมวลผลสคริปต์ดังกล่าวในไฟล์ข้อความที่ต้องการ ซึ่งในกรณีนี้ ให้ตั้งชื่อเมนู ให้ส่งชื่อนั้นเอง ในการสร้างไฟล์ดังกล่าวจะงุ่มง่ามก็เพียงพอที่จะแปลงคำสั่งเมนูหลักของ Dreamweaver ไฟล์ -> ใหม่สร้างเอกสาร html ใหม่ตามที่อธิบายไว้ก่อนหน้านี้แก้ไขและเปลี่ยนการเข้ารหัสของไฟล์ใหม่เป็น UTF-8 แล้วบันทึก ชื่อของคุณ rubric1 .dat ต่อหน้าข้อมูลของพ่อฉัน เส้นทางถัดไปของไฟล์นี้คือ D:/Mysitephp/data/rubric1.dat แทนที่จะวางไฟล์ ให้วางเมาส์ไว้ด้านล่าง หากจำเป็น ให้ระบุ їхชื่อ และ їхชื่อ (คำแนะนำ) กริม นอกจากนี้ schob run อักษรเดนมาร์กสำหรับหุ่นยนต์จำเป็นต้องเชื่อมต่อเพื่อใช้งานเพิ่มเติม รวม()ที่เครื่องมือเทมเพลต main.php

    Rub1_part1::ส่วนที่ 1::ส่วนที่ 1 รูบริก 1::
    rub1_part2::Part 2::ส่วนที่ 2 รูบริก 1::
    rub1_part3::Part 3::ส่วนที่ 3 รูบริก 1::

    นอกจากนี้ยังจำเป็นต้องสร้างสคริปต์ขนาดเล็กที่มีการตั้งค่าซึ่งบันทึกที่อยู่ของไซต์เส้นทางไปยังโฟลเดอร์ด้านข้างและคำอธิบายเมตาของไซต์เส้นทางไปยังไฟล์ในเมนูของไซต์และ เชื่อมต่อโยคะเพื่อการทำงานเพิ่มเติม รวม()ที่เครื่องมือเทมเพลต main.php สำหรับผู้ที่จำเป็นต้องสร้างใหม่ ไฟล์ phpและบันทึกให้ฉัน เช่น setings.php ในโฟลเดอร์ php เส้นทางถัดไปของไฟล์คือ D:/Mysitephp/php/setings.php และจะถูกวางเมาส์ไว้ด้านล่าง

    # โฟลเดอร์ที่มีเอกสาร html
    $doctemplates = "แม่แบบ";
    # เปลี่ยนเส้นทางไปยังไดเรกทอรีสคริปต์
    $turl="http://mysitephp.ru";
    ฐานข้อมูลกับ danimes
    $rubric1_menu = "ข้อมูล/rubric1.dat";
    ?>

    คุณใช้สคริปต์ php เพื่อสร้างเมนูอย่างไร เปลี่ยนเมนู $ สำหรับฟังก์ชั่นเพิ่มเติม ไฟล์()ย้ายไปยังไฟล์ข้อความ rubric1.dat ฟังก์ชั่น Potim นับ()เพิ่มจำนวนแถว ไฟล์ข้อความและหน้าที่ รายการ()і ระเบิด()ที่วงจรเมนูจะเปิดขึ้นโดยใช้วิธีการติดกาวแถว (การดำเนินการจุด . ) ถูกสร้างตามประวัติศาสตร์ด้วยชื่อและตำแหน่ง เพื่อให้เราสามารถนำไปเปลี่ยนเป็น $rubric1 ได้ รับสคริปต์เทมเพลต โดยที่สคริปต์เมนูเปิดใช้งานโดยฟังก์ชัน รวม()ให้ย้ายแทนที่จะเปลี่ยน $rubric1 เป็นไซต์สำหรับความช่วยเหลือเพิ่มเติมที่อธิบายไว้ก่อนหน้านี้เกี่ยวกับฟังก์ชัน ตัวแทน ().

    เมนูดังกล่าวจะไม่ทำงานในขณะนี้ ชาร์ดในอันใหม่จะถูกส่งด้วยตัวเองพร้อมแอตทริบิวต์ที่จำเป็นเท่านั้น แต่ไม่ใช่สคริปต์ซึ่งจะรักษาความปลอดภัยการเปลี่ยนข้อความเหล่านี้และการยืนยันด้านข้างของเว็บไซต์ เพื่อให้สามารถยืนยันข้อความเหล่านี้ได้ สคริปต์ Cim php ที่เราจะจัดการ

    ต้าหลี่สามารถเป็นโครงการปรับปรุงด้วยสคริปต์สำหรับสร้างเมนู คุณยังสามารถขออัปเดตของโครงการที่ด้านข้างได้ ดังที่แสดงหลังจากการลงทะเบียนและการเปิดใช้งานการชำระเงินเกินโดยไม่เสียค่าใช้จ่ายบนแผงด้านขวามือ จำเป็นต้องบันทึกที่อยู่ของปาร์ตี้ ในทางกลับกัน เราได้สมัครเพื่อส่งเสริมการอัพเดทโครงการ สคริปต์สีน้ำเงิน โปรแกรม บทเรียน และบทเรียนวิดีโอต่างๆ จากวงจร การเขียนโปรแกรม และการพัฒนาเว็บไซต์ สำหรับผู้มาใหม่.

    คำขออัปเดตสคริปต์ใหม่จากโปรเจ็กต์ php ไปยังไซต์ตอนนี้สามารถเปรียบเทียบได้ ซึ่งเกิดขึ้นจากคำอธิบายข้างต้น จากนั้นเพื่อปิดการอ่าน ฉันจะแทนที่โครงการเพื่อความก้าวหน้าอีกครั้ง เริ่มการดำเนินการ เริ่มเซิร์ฟเวอร์ Denwer พิมพ์ mysitephp.ru ในหน้าต่างเบราว์เซอร์และดูว่าเกิดอะไรขึ้น ส่วนบนซ้ายของเทมเพลตอาจแสดงเมนูของส่วนแรกดังที่แสดงด้านล่าง

    ไปกับนักสังคมนิยมที่คุณชื่นชอบ

    ไซต์ไม่ควรสมบูรณ์โดยไม่มีการนำทาง มิฉะนั้น จะเรียกว่า "เมนูไซต์" ดังนั้นแกนของเมนูสำหรับไซต์จึงเป็นแบบหนึ่งต่อหนึ่งและหนึ่งต่อหนึ่งที่ต้นไม้เดียวกัน แม้ว่าจะไม่มีเมนูตัวเลือกการพับแบบพิเศษแบบตัวต่อตัวในแผนการใช้งาน แต่ก็จำเป็นต้องคิดให้รอบคอบเมื่อสร้างเมนูที่หลากหลาย

    งานที่สำคัญที่สุดในงานของเราคือการออกแบบฐานข้อมูลสำหรับเมนูที่หลากหลายของเรา มาสร้างตารางหมวดหมู่จากสามช่องกันเถอะ id, ชื่อ, พ่อแม่เดอ:

    • ไอดี- ตัวระบุ
    • ชื่อ- ชื่อเมนู
    • พ่อแม่- บิดาแห่งหมวด zamovchuvannyam 0

    สำหรับการจัดวางเมนู พ่อแม่ยาคโช ผู้ปกครอง = 0หมวดหมู่นี้คือ Batkivskaya ในการเพิ่มชื่อให้กับหมวดหมู่ของบิดา จำเป็นต้องระบุในช่องหลัก ไอดีพ่อที่จำเป็น ตัวอย่างเช่น:

    ตารางที่มีหมวดหมู่

    ดังจะเห็นได้จากตารางในหมวด Batkiv รถยนต์єสอง nashashki - tse มาสด้าі ฮอนด้า pov'yazanih ข้ามสนาม พ่อแม่. และหมวด รถจักรยานยนต์สองเหยื่อ - tse คาวาซากิі harley. ด้วยเหตุนี้หมวด Chovna จึงไม่มีรางวัล ฉันแน่ใจว่าคุณเข้าใจวิธีเชื่อมโยงหมวดหมู่

    ไปปฏิบัติกันต่อครับ มาสร้างตารางหมวดหมู่กัน

    สร้างตารางหากไม่มีอยู่ "หมวดหมู่" ("id" int (10) ไม่ได้ลงนาม NOT NULL AUTO_INCREMENT, 'title' varchar (255) ไม่ใช่ NULL, 'parent' int (10) ที่ไม่ได้ลงชื่อไม่ใช่ NULL, คีย์หลัก ('id')) ENGINE=ค่าเริ่มต้น MyISAM CHARSET=utf8 AUTO_INCREMENT=20; -- -- ดัมพ์ข้อมูลตาราง `หมวดหมู่' -- INSERT INTO `หมวดหมู่' (`id`, `ชื่อ`, `พาเรนต์`) ค่า (1, "รถยนต์", 0), (2, "รถจักรยานยนต์", 0) , (3, มาสด้า, 1), (4, ฮอนด้า, 1), (5, คาวาซากิ, 2), (6, ฮาร์เลย์, 2), (7, มาสด้า 3, 3 ), (8, "มาสด้า 6", 3), (9, "Sedan", 7), (10, "Hatchback", 7), (11, "Crossover", 0), (12, "Liftback", 8), (13, "Crossover", 8), (14, "Biliy", 13), (15, "Chervoniy", 13), (16, "Black", 13), (17, "Green", 13), (18, Mazda CX, 3 ), (19, มาสด้า เอ็มเอ็กซ์, 3);

    อัลกอริทึมของหุ่นยนต์ประกอบด้วยการรุก:

    เราสร้างการเชื่อมต่อกับฐานข้อมูล

    แบบสอบถาม ("ตั้งค่าชื่อ "utf8""); /* * วิธีการวางแนววัตถุ "เป็นทางการ" สำหรับการสร้าง * $connect_error prote ไม่ทำงานถึง PHP เวอร์ชัน 5.2.9 และ 5.3.0 */ if ($mysqli->connect_error) ( die("Connection pardon (" . $mysqli->connect_errno . ") " . $mysqli->connect_error); ) /* * ควรเพิ่มเพื่อเชื่อมต่อก่อน 5.2 .9 , * รหัสบิดที่ดีกว่านี้ */ if (mysqli_connect_error()) ( die("Connection pardon (" . mysqli_connect_errno() . ") " . mysqli_connect_error()); )

    เราเขียนฟังก์ชันดึงข้อมูลจากตาราง

    //ลบอาร์เรย์ของเมนูของเราออกจากฐานข้อมูลในรูปแบบของฟังก์ชันอาร์เรย์ getCat($mysqli)( $sql = "SELECT * FROM `categories`"; $res = $mysqli->query($sql); / /สร้างอาร์เรย์ของคีย์อาร์เรย์ є ID เมนู $cat = array();

    เราใช้อาร์เรย์ประเภทนี้ โดยยกเลิกการคีย์อาร์เรย์ด้วย ID หมวดหมู่

    ฟังก์ชั่นปลุกต้นไม้จากมุมมองต่างๆ Tommy Lacroix

    //ฟังก์ชันรับต้นไม้จากอาร์เรย์ เช่น ฟังก์ชัน Tommy Lacroix getTree($dataset) ( $tree = array(); foreach ($dataset as $id => &$node) ( //ไม่มีรังถ้า (! $node[" parent"])( $tree[$id] = &$node; )else( //หากมีส่วนหัว ให้วนซ้ำอาร์เรย์ $dataset[$node["parent"]]["childs" ][$id] = &$ node;)) คืนค่า $tree;)

    นำอาร์เรย์ออกจากต้นไม้ที่กำลังมองหา

    สคริปต์โดยรวม

    แบบสอบถาม ("ตั้งค่าชื่อ "utf8""); /* * วิธีการวางแนววัตถุ "เป็นทางการ" สำหรับการสร้าง * $connect_error prote ไม่ทำงานถึง PHP เวอร์ชัน 5.2.9 และ 5.3.0 */ if ($mysqli->connect_error) ( die("Connection pardon (" . $mysqli->connect_errno . ") " . $mysqli->connect_error); ) /* * ควรเพิ่มเพื่อเชื่อมต่อก่อน 5.2 .9 , * บิดโค้ดที่ดีกว่านี้ */ if (mysqli_connect_error()) ( die("Connection pardon (" . mysqli_connect_errno() . ") " . mysqli_connect_error()); ) function getCat($mysqli)( $sql = "SELECT * จาก `หมวดหมู่'"; $res = $mysqli->query($sql); //สร้างอาร์เรย์ของคีย์อาร์เรย์ є ID เมนู $cat = array(); while ($row = $res->fetch_assoc()) ( $cat[$row["id"]] = $row; ) return $cat; ) //ดึงข้อมูลต้นไม้จากอาร์เรย์ เช่น ฟังก์ชัน Tommy Lacroix getTree($dataset) ( $tree = array(); foreach ($dataset as $id => &$node) ( //ไม่มี nester if (!$node["parent"])( $tree[$id] = &$node; )else( //เนื่องจากส่วนหัว ให้ทำซ้ำ เหนืออาร์เรย์ $dataset[$node["parent"]]["childs"][$id] = &$node; ) ) return $tree; ) // จำเป็นต้องเตรียมอาร์เรย์จาก danimi $cat = getCat($mysqli); //สร้างต้นไม้ที่คล้ายกับเมนู $tree = getTree($cat); //เทมเพลตสำหรับแสดงเมนูในฟังก์ชันมุมมองแบบต้นไม้ tplMenu($category)( $menu = "
  • ".$category["title"].""; if(isset($category["childs"]))( $menu .= ".
      ".showCat($category["children"]) ."
    "; ) $menu .="
  • "; return $menu; ) /** * อ่านเทมเพลตของเราแบบเรียกซ้ำ **/ function showCat($data)( $string = ""; foreach($data as $item)( $string .= tplMenu($item); ) return $string; ) //ต้องการเลย์เอาต์ HTML $cat_menu = showCat($tree); //แสดงบนหน้าจอ echo "
      ". $cat_menu ."
    "; ?>

    ผลของการปฏิบัติ

    เมนู Bagator_vneve ใน PHP + MySQL สำหรับผู้ดูแลระบบ

    ถ้าคุณต้องการชนะเมนูนี้ในการดูแลไซต์ของคุณ คุณต้องเขียนฟังก์ชันสองสามอย่างใหม่ tplเมนู(), โชว์แคท().

    ".$category["title"]""; )else( เมนู $ = " "; ) if(isset($category["childs"]))( $i = 1; for($j = 0; $j)< $i; $j++){ $str .= "→"; } $i++; $menu .= showCat($category["childs"], $str); } return $menu; } /** * Рекурсивно считываем наш шаблон **/ function showCat($data, $str){ $string = ""; $str = $str; foreach($data as $item){ $string .= tplMenu($item, $str); } return $string; } //Получаем HTML разметку $cat_menu = showCat($tree, ""); //Выводим на экран echo ""; ?>

    ผลของการปฏิบัติ

    เลือกรถยนต์ → Mazda →→ Mazda 3 →→→ Sedan →→→ Hatchback →→ Mazda 6 →→→ Liftback →→→ Crossover →→→→ White →→→→ Chervoniy →→→→ Chorniy →→→→ Zeleny →→ Mazda CX →→ Mazda MX → รถจักรยานยนต์ฮอนด้า → Kawasaki → Harley Chovny

    Oskіlkiจะไม่เปิดโมดูล menu.php ด้านล่างนี้ คุณจะพบคำอธิบายโดยละเอียดของเมนูใน PHP เนื่องจาก bula ถูกเขียนขึ้นใหม่ตั้งแต่ต้นในแผ่นจดบันทึก

    รหัสนี้ถูกต้องโดยเฉพาะอย่างยิ่งสำหรับไซต์แบบไดนามิก เนื่องจากเครื่องมือที่เขียนเองอาจทำได้ ฉันจะเผยแพร่รหัสสองรูปแบบ เนื่องจากอาจมีรายละเอียดที่คลุมเครือ (ซึ่งจะมีการอธิบายความแตกต่างในภายหลัง)

    สำหรับ cob ฉันจะกำหนดโครงสร้างของไซต์สำหรับเมนูบางอย่าง โครงสร้างของไซต์คือการตำหนิสำหรับรูปลักษณ์ดังกล่าว ( ดูคลาสสิค):

    /index.html /section_1/ /razdel_1/articles_1.html /razdel_1/articles_2.html ... /razdel_2/ /razdel_2/articles_1.html /razdel_2/articles_2.html ... ... ... /razdel_N/articles_2 .html

    ไซต์สามารถแจกจ่ายได้มากขึ้นเรื่อย ๆ :

    /section_1/podzaderl_1/ /section_1/podzaderl_1/articles_1.html /section_1/podzaderl_1/articles_2.html ... /section_1/podzaderl_2/articles_1.html /section_1/podzaderl_2/articles_2.html

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

    ฉันกำลังเสนอให้สร้างไฟล์ okremium สำหรับเมนูใน PHP ตัวอย่างเช่น menu.php จะเป็นชื่อที่วิเศษสำหรับไฟล์ดังกล่าว สำหรับการใช้งานเมนูนั้นยังมีการนำเสนอสไตล์ของเมนู CSS เพื่อให้สวยงามไม่มากก็น้อย โดยธรรมชาติแล้ว สไตล์นี้มีไว้สำหรับการจดจำเท่านั้น ส่วนการออกแบบจากไซต์ในลักษณะที่ต่างออกไป

    รหัสสไตล์เมนู CSS:

    .menu ( height:42px; padding:0 0 0 16px; background:url(images/spacer.png) ซ้ำ; ) .menu li ( display:block; float:left; ) .menu li.active ( พื้นหลัง: #000011 ; ) .menu a ( สี:#FFF; display:block; line-height:42px; text-decoration:none; ;)

    ตอนนี้ มาดูตัวเลือกแรกสำหรับการนำเมนูไปใช้ใน PHP ซึ่งเราสามารถให้อภัยเรื่องเล็กได้

    รหัสเมนูรุ่นแรกใน PHP

    \n"; สำหรับ ($i=0;$i ": "
  • ";เอคโค่" ".$array_menu[$i]["name"]."
  • \n"; ) ก้อง""; ?>

    เมนูสามารถแบ่งออกเป็นสองส่วน ขั้นตอนแรกคือการลบอาร์เรย์ข้อมูล $array_menu ซึ่งจะมีการป้อนชื่อการแจกแจงของเราจากคำขอการแจกจ่าย Є ตัวแปร danih mySQLแต่โดยเฉพาะอย่างยิ่ง sensu ใน tsommu no, oskolki vibrka zovsіm นั้นเล็กกว่านั้นในงานswidkіstnіyakไม่ใช่ vpline

    อีกส่วนคือการดูเมนูผ่าน for loop วงจรใช้ที่อยู่ที่สอดคล้องกันของไซต์ด้วยที่อยู่ของอาร์เรย์ $array_menu หากเป็น zbіg เราจะแสดงส่วนสีดำของเมนูโดยเปิดใช้งานคลาสพิเศษ:

  • มิฉะนั้นเพียงแค่
  • . Tse ช่วยให้เราเห็นราวกับเป็นสีในส่วนของเมนูที่รู้จัก koristuvach ในความคิดของฉัน จำเป็นต้องรวยสำหรับไซต์ใด ๆ เพื่อที่คุณจะได้มีความรู้ในทันที รู้ว่าคุณมีไวน์ชนิดใด

    ลำดับของรายการโดยตรงในอาร์เรย์จะถูกนำมาพิจารณาเมื่อเมนูแสดงบนเว็บไซต์ ดังนั้นจึงต้องวางอาร์เรย์ไว้ตามลำดับซึ่งจำเป็นต้องแสดงเมนู

    บันทึก:
    ส่วนหัวของ URL (ที่อยู่) อาจมีลักษณะอย่างไร:
    /ส่วนที่ 1
    อย่างอื่นเช่น
    /section_1/name_razdela.html
    จากนั้นใน array_menu คุณต้องเขียนค่าที่แน่นอน:
    $array_menu[$i]["url"]="/section_1"
    หรือวิภาดุอื่น:
    $array_menu[$i]["url"]="/section_1/nazvanie_razdela.html";

    คุณจะสร้างตัวเลือกเมนูแรกได้อย่างไร?
    ในเมนูpіdsvіchuєน้อยกว่าถ้าคุณทราบที่อยู่ของการแจกจ่าย ตัวอย่างเช่น หากที่อยู่เพจคือ /section_1/articles_1.html เมนูจะไม่ปรากฏ

    อีกรหัสหนึ่งของรหัสคือการปรับเปลี่ยนตัวแปรแรกและโอนความเป็นไปได้ของการเปลี่ยนเมนูให้ปรากฏในบทความซึ่งพบได้ในการแจกแจง

    ตัวเลือกอื่นสำหรับรหัสเมนูใน PHP

    "; สำหรับ ($i=0;$i ": "
  • "; echo "".$array_menu[$i]["title"]."
  • "; ) อื่น ๆ ( echo ($URL) == ($array_menu[$i]["url"]) ? "
  • ": "
  • "; echo "".$array_menu[$i]["title"]."
  • ";)) ก้อง""; ?>

    ในบทความนี้ ผมจะแสดงให้คุณเห็นถึงวิธีการสร้าง เมนูต่างๆ ใน ​​PHP และ MySQL. ตัวเลือกสำหรับการสร้างสรรค์นี้สามารถรวยได้ แต่การตัดสินจากจำนวนมื้ออาหารของคุณในหัวข้อนี้คุณต้องมีก้น ฉันจะนำโยคะครั้งแรกไปที่บทความของฉัน ฉันจะกำหนดทันทีว่าบทความนี้เหมาะสมกว่าสำหรับคนเงียบๆ ใครจะรู้ PHPและvmієฝึกs MySQL. คนอื่นต้องผ่านเรื่องนี้หรืออ่านหนังสือเกี่ยวกับ PHP และ MySQL.

    สำหรับ cob เราสร้างตารางในฐานข้อมูลที่มีฟิลด์ขั้นสูง:

    • id- ตัวระบุที่ไม่ซ้ำ
    • ชื่อ- Anchor message สำหรับเมนู
    • ลิงค์- ที่อยู่เรารู้รายการเมนู
    • parent_id- ไอดีแบทคิฟ ไม่มีรายการ batkivsky ที่นี่มันจะเป็น NULL (มิฉะนั้นคุณสามารถใส่ 0) ได้

    จัดโต๊ะเรียบร้อย ถึงเวลาแล้ว รหัส PHP. Povniy รหัส PHPเลื่อนด้านล่าง:

    $mysqli = new mysqli("localhost", "root", "", "db"); // เชื่อมต่อกับฐานข้อมูล
    $result_set = $mysqli->query("SELECT * จาก `menu`"); // Robimo การเลือกระเบียนทั้งหมดจากตารางจากเมนู
    $items = อาร์เรย์ (); // Array สำหรับรายการเมนู
    ในขณะที่ (($row = $result_set->fetch_assoc()) != false) $items[$row["id"]] = $row; // กรอกข้อมูลในอาร์เรย์ด้วยการเลือกจากฐานข้อมูล
    $ลูก = อาร์เรย์ (); // อาร์เรย์สำหรับลักษณะขององค์ประกอบลูกของพ่อของพวกเขา
    foreach ($items เป็น $item) (
    if ($item["parent_id"]) $childrens[$item["id"]] = $item["parent_id"]; // เขียนอาร์เรย์
    }
    ฟังก์ชัน printItem($item,$items,$children) (
    /* แสดงรายการเมนู */
    เสียงสะท้อน "

  • ";
    echo "".$item["title"]."";
    $ul = เท็จ; // องค์ประกอบลูกใดถูกสร้างขึ้น?
    ในขณะที่ (จริง)(
    /* Infinite loop ซึ่งเรากำลังมองหาองค์ประกอบย่อยทั้งหมด */
    $key = array_search($item["id"], $ลูก); // ปิดองค์ประกอบลูก
    ถ้า (!$คีย์) (
    /* ไม่พบองค์ประกอบย่อย */
    ถ้า ($ul) ก้อง "// หากสร้างองค์ประกอบลูก รายการจะปิด
    หยุดพัก; // ดูจากการวนซ้ำ
    }
    unset($ลูก[$คีย์]); // เราสามารถเห็นองค์ประกอบความรู้ (ถ้าไวน์ไม่แสดงอีก)
    ถ้า (!$ul) (
    เสียงสะท้อน "
      // กำลังซ่อมแซมรายการภายใน เนื่องจากยังไม่มีองค์ประกอบย่อย
      $ul=จริง; // ตั้งธง
      }
      เสียงสะท้อน printItem($items[$key], $items, $children); // แสดงองค์ประกอบลูกทั้งหมดซ้ำๆ
      }
      เสียงสะท้อน "";
      }
      ?>

      รหัสนี้ใช้งานได้อย่างสมบูรณ์ อย่างไรก็ตาม คุณต้องรับผิดชอบในการทำความเข้าใจว่าคุณไม่ได้เขียนอะไรแบบนั้น (zokrema, visnovok ผ่าน เสียงก้อง แท็ก HTML). І งานของคุณคือใช้อัลกอริทึมจากโค้ดนี้ ไม่ใช่ตัวโค้ดเอง จากนั้นอัลกอริทึมจะเชื่อมต่อกับเครื่องยนต์ของคุณ ฉันพยายามอย่างเต็มที่ที่จะแสดงความคิดเห็นโค้ดกับผลลัพธ์ เมนูกำหนดเองใน PHP และ MySQLเบียร์อย่างบ้าคลั่งไวน์ไม่ได้โปร่งใสที่สุดและvimagaєความรู้ซังที่ไม่เหมาะสมอยู่แล้ว Yakshcho Vesche น่ารังเกียจรู้ PHP และ MySQLฉันก็แนะนำให้ผ่าน cei

  • © 2022 androidas.ru - ทั้งหมดเกี่ยวกับ Android