Eski menyu php. PHP va MySQL-da ko'p darajali menyu. Agar tashrifchi ushbu sahifada bo'lsa, menyudagi havolani qanday qilib nofaol qilish kerak

PHP skriptlari tomonidan boshqariladigan PHP tilidagi sayt menyusi o‘ziga xos xususiyatlarga ega. Bu shunchaki mutlaq emas nisbiy havolalar, Garchi bu shunday bo'lishi mumkin bo'lsa-da, lekin, qoida tariqasida, bo'limlar va bo'limlar bilan yon panellardan dinamik ravishda yaratilgan havolalar bloklari va saytning ichki sahifalaridan havolalar bloklari. Dinamik ravishda yaratilgan menyu juda qulay, chunki uni saytning istalgan joyiga va eng muhimi, kerakli vaqtda kiritish mumkin. Ya'ni, turli bo'limlar va bo'limlarga o'tishda siz turli xil menyu bloklarini dinamik ravishda kengaytirishingiz mumkin. Bundan tashqari, ular nafaqat mazmuni, balki shakli va dizayni bilan ham farq qilishi mumkin. Statik saytda bunday fokuslarni qilish ham mumkin, ammo bu qimmatga tushadi qo'shimcha fayllar shablon va boshqa ko'plab fokuslar. PHP da yozilgan sayt esa bularning hech birini talab qilmaydi. Shablon avvalgidek qoladi. Hamma narsa bir yoki bir nechtasi tomonidan nazorat qilinadi oddiy php skriptlar.

Buni tekshirish uchun menyuni, masalan, birinchi toifani dinamik ravishda yaratish uchun PHP skriptini yozish va uni ilgari yozilgan skript orqali ushbu toifa menyusini kengaytirishga majburlash kifoya. Qolgan sarlavhalar ham xuddi shunday shaklda tuzilishi mumkin. Bundan tashqari, skriptning kodi ko'p o'zgarmaydi. Faqat matn fayli o'zgaradi, bu havolalar nomlarini va havolalarning o'zini aniqlaydi. Bunday skript uchun kod quyida keltirilgan.

// Menyu yaratuvchisi
$menu = @fayl($rubrik1_menu);
$lines = count($menyu);
uchun ($i = 0; $i< $lines; $i++)
{
list($menu_link,$menu_name,$menu_title)=portlash("::", $menu[$i]);
if($page == rub1_part1 va $i == 0) ($refcolor = "style="color:#cc0000"";)
elseif($page == rub1_part2 va $i == 1) ($refcolor = "style="color:#cc0000"";)
elseif($page == rub1_part3 va $i == 2) ($refcolor = "style="color:#cc0000"";)
boshqacha ($refcolor = "";)
$rubrika1.="

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

    Bunday skriptning ishlashi uchun sizga matnli fayl kerak bo'ladi, unda menyu havolalari nomlari, havolalarning o'zi va ularning sarlavhasi saqlanadi. Bunday faylni yaratish qiyin emas, shunchaki Dreamweaver dasturining asosiy menyusidan Fayl -> Yangi buyrug'ini bajaring, yangisini yarating. html hujjati, avval aytib o'tilganidek, tekshiring va agar kerak bo'lsa, yangi faylning kodlanishini UTF-8 ga o'zgartiring, so'ngra uni avvalroq yaratilgan ma'lumotlar papkasida rubric1.dat nomi ostida saqlang. Ushbu faylga to'liq yo'l D:/Mysitephp/data/rubric1.dat bo'ladi. Quyidagi faylning mazmuni havolalarning o'zi, ularning nomlari va sarlavhasi (maslahatlar). Bundan tashqari, ushbu skriptni ishga tushirish uchun u funksiya yordamida ulanishi kerak o'z ichiga oladi() main.php shablon dvigatelida.

    Rub1_qism1::1-bo'lim::1-bo'lim 1-bo'lim::
    rub1_qism2::2-bo'lim::2-bo'lim 1-bo'lim::
    rub1_part3::3-bo'lim::3-bo'lim 1-bo'lim::

    Bundan tashqari, siz saytning to'liq manzilini, sahifalar papkalariga yo'llarni va saytning meta tavsiflarini, sayt menyusi fayllariga yo'llarni va uni funksiyadan foydalanib ulaydigan sozlamalar bilan kichik skript yaratishingiz kerak. o'z ichiga oladi() main.php shablon dvigatelida. Buning uchun siz yangisini yaratishingiz kerak php fayli, va uni php papkasida settings.php kabi nom ostida saqlang. Faylning to'liq yo'li D:/Mysitephp/php/settings.php bo'ladi va uning mazmuni quyida keltirilgan.

    html hujjatlari bilan # jild
    $doctemplates = "shablonlar";
    # skript katalogiga to'liq yo'l
    $turl="http://mysitephp.ru";
    # ma'lumotlar bazasi
    $rubric1_menu = "data/rubric1.dat";
    ?>

    Menyu yaratish uchun PHP skripti qanday ishlaydi? Funktsiyadan foydalanib, birinchi navbatda $ menyusi o'zgaruvchisiga kiring fayl() rubric1.dat matn faylining mazmuni joylashtirilgan. Keyin funksiya count() qatorlar sonini hisoblaydi matn fayli va funktsiyalari list() Va portlash() menyuning o'zi halqa shaklida kengayadi, bu erda chiziqlarni bir-biriga yopishtirish usuli (nuqta operatsiyasi). . ) havolalar qatorlari ularning nomlari va sarlavhalari bilan tuziladi, keyin ular $rubric1 o'zgaruvchisiga joylashtiriladi. Keyingi shablon mexanizmi skripti, bu erda menyu skripti funksiya bilan bog'langan o'z ichiga oladi(), $rubric1 oʻzgaruvchisi mazmunini avval tasvirlangan funksiyadan foydalanib saytdagi kerakli joyga koʻchiradi repl().

    Bunday menyu hali ishlamaydi, chunki u faqat barcha kerakli atributlarga ega havolalarni o'z ichiga oladi, ammo bu havolalarga o'tishni va ushbu havolalarga mos keladigan sayt sahifalarini ochishni ta'minlaydigan skript yo'q. Biz ushbu PHP skripti bilan keyin shug'ullanamiz.

    Keyinchalik, loyihani menyu yaratish skripti bilan yangilashingiz mumkin. Yangilangan loyihani roʻyxatdan oʻtgandan va oʻng tarafdagi panelda bepul obunani faollashtirgandan soʻng ochiladigan sahifada ham yuklab olishingiz mumkin. Sahifa manzili saqlanishi kerak. Aynan shu sahifada kelajakda loyiha yangilanishlari, turli foydali skriptlar, dasturlar, darslar va sxemalarni loyihalash, dasturlash va veb-sayt yaratish bo'yicha video darslarni yuklab olish uchun havolalar paydo bo'ladi. yangi boshlanuvchilar uchun.

    Yangi skriptlar bilan yangilangan yuklab olingan php loyihasi Endi saytni yuqorida tavsiflangan harakatlar natijasida sodir bo'lgan voqea bilan solishtirish mumkin. Keyinchalik, nomuvofiqliklarni bartaraf etish uchun loyihani yuklab olingan bilan to'liq almashtirish, operatsiyani bajarish, Denwer serverini ishga tushirish, brauzer oynasiga mysitephp.ru yozing va undan nima chiqqanini ko'rish foydali bo'ladi. Birinchi bo'limning menyusi quyidagi rasmda ko'rsatilganidek, shablonning yuqori chap qismida kengayishi kerak.

    O'zingizning sevimli ijtimoiy tarmog'ingizga kiring

    Chunki u menu.php modulining mazmunini ochib beradi. Quyida taqdim etiladi o'z rivojlanishi PHP-dagi menyu, bu bloknotda noldan yozilgan.

    Ushbu kod, ayniqsa, maxsus dvigatellari bo'lgan dinamik saytlar uchun foydali bo'ladi. Men kichik farqlarga ega bo'lgan ikkita kod variantini taklif qilaman (farqlar keyinroq tushuntiriladi).

    Boshlash uchun men ushbu menyu mos keladigan saytning taxminiy tuzilishini beraman. Sayt tuzilishi quyidagicha ko'rinishi kerak (klassik ko'rinish):

    /index.html /razdel_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

    Saytda shuningdek bo'limlar uchun bo'limlar bo'lishi mumkin:

    /razdel_1/podzaderl_1/ /razdel_1/podzaderl_1/articles_1.html /razdel_1/podzaderl_1/articles_2.html ... /razdel_1/podzaderl_2/articles_1.html /razdel_1/podzaderl_2/articles_2.html

    Ushbu tuzilma kichik farqlar bilan bizning menyumiz uchun ham ishlaydi.

    Men php da menyu uchun alohida fayl yaratishni taklif qilaman. Misol uchun, menu.php bunday fayl uchun ajoyib nom bo'ladi. Menyuni amalga oshirish uchun CSS-dagi menyu uslubi uni darhol ko'proq yoki kamroq chiroyli qilish uchun taqdim etiladi. Tabiiyki, bu uslub faqat ma'lumot uchun berilgan, chunki saytlarning dizaynlari juda boshqacha.

    CSS-da menyu uslubini yaratish uchun kod:

    .menu (balandlik:42px; toʻldirish:0 0 0 16px; fon:url(images/spacer.png) takrorlash; ) .menu li (displey:blok; float:chap; ) .menu li.active ( fon: #000011 ; ) .menyu a ( rang:#FFF; displey: blok; chiziq balandligi: 42 piksel; matn dekoratsiyasi: yo‘q; to‘ldirish: 0 14 piksel; ) .menyu a: kursor (fon: url(images/spacer.png) takrorlash )

    Endi PHPda menyuni amalga oshirishning birinchi variantini ko'rib chiqamiz, bu biroz soddalashtirilgan.

    PHP da menyu kodining birinchi versiyasi

    \n"; uchun ($i=0;$i ": "
  • "; aks-sado " ".$array_menu[$i]["name"]."
  • \n"; ) echo ""; ?>

    Menyuni ikki qismga bo'lish mumkin. Birinchisi $array_menu ma'lumotlar massivini o'z ichiga oladi, unda bo'limlarga havolalar bilan bo'limlarimizning nomlari mavjud. Ushbu ma'lumotlarni ma'lumotlar bazasiga kiritish imkoniyati mavjud mySQL ma'lumotlari, lekin bunda alohida nuqta yo'q, chunki namuna juda kichik, shuning uchun bu ish tezligiga ta'sir qilmaydi.

    Ikkinchi qism menyuning for tsikli orqali chiqishini o'z ichiga oladi. Tsikl sayt manzilini $array_menu massividagi manzil bilan taqqoslaydi. Agar mos keladigan bo'lsa, biz keyingi menyu bo'limini maxsus faol sinf bilan ko'rsatamiz:

  • , aks holda faqat
  • . Bu bizga menyuning foydalanuvchi joylashgan qismini qandaydir rang bilan ajratib ko'rsatish imkonini beradi. Menimcha, bu har qanday sayt uchun zarur narsa, shuning uchun foydalanuvchi qaysi bo'limda ekanligini tushunishi mumkin.

    Saytda menyu ko'rsatilganda massivdagi tartib saqlanib qoladi. Ya'ni, massiv menyu ko'rsatilishi kerak bo'lgan tartibda to'ldirilishi kerak.

    Eslatma:
    Agar bo'lim sarlavhalarining URL manzillari (manzillari) quyidagicha ko'rinsa:
    /bo'lim_1
    yoki shunga o'xshash
    /razdel_1/nazvanie_razdela.html
    keyin array_menu da aniq moslikni yozishingiz kerak:
    $array_menu[$i]["url"]="/razdel_1"
    yoki ikkinchi holat uchun:
    $array_menu[$i]["url"]="/razdel_1/nazvanie_razdela.html";

    Birinchi menyu opsiyasi qanday ishlaydi?
    Agar siz bo'lim sarlavhasi manzilida bo'lsangiz, u faqat menyuni ta'kidlaydi. Misol uchun, agar sahifa manzili /razdel_1/articles_1.html bo'lsa, u holda menyu hech qanday tarzda ta'kidlanmaydi.

    Kodning ikkinchi versiyasi birinchisining o'zgartirilgan versiyasi bo'lib, hatto bo'limlarda joylashgan maqolalarda ham menyularni ajratib ko'rsatish imkoniyatini beradi.

    PHP da menyu kodining ikkinchi versiyasi

    "; uchun ($i=0;$i ": "
  • "; echo "".$array_menu[$i]["title"]."
  • "; ) else ( echo ($URL) == ($array_menu[$i]["url"]) ? "
  • ": "
  • "; echo "".$array_menu[$i]["title"]."
  • ";))) aks-sado ""; ?>

    Aynan shu narsa biz hozir ko'rib chiqamiz. Shunday qilib, vazifa ochiladigan ro'yxat shaklida vertikal menyu qilishdir.

    Buni PHP da qanday amalga oshirish mumkin? Juda oddiy! Masalan, bizda fayl bor index.php, ochiladigan ro'yxatdagi tanlangan bo'limga qarab, sahifada tegishli tarkibni ko'rsatishi kerak. Bu quyidagicha amalga oshiriladi:

    1. Biz .html formatidagi fayllarni yaratamiz, ular chiqarish uchun zarur bo'lgan tarkibni o'z ichiga oladi.

    2. Biz index.php skriptida tegishli ma'lumotlarni ko'rsatish uchun zarur shart-sharoitlarni yaratamiz (yozamiz).

    3. Biz yaratilgan skriptni bajarilayotgan skript xavfsizligi nuqtai nazaridan ko'rib chiqamiz.

    Xo'sh, biz nazariyani tugatganga o'xshaymiz, keling, amaliyotga o'taylik. Birinchidan, biz .html formatida statik sahifalarni yaratamiz, ular o'z ichiga oladi zarur ma'lumotlar. Siz u erda xohlagan narsani yozishingiz mumkin :) Natijada, biz kamida ikkita birinchi.html va second.html fayliga ega bo'lishimiz kerak, shuning uchun biz asosiy algoritmni tushunganimizdan so'ng, biz xohlagancha ko'pini yaratishimiz mumkin. kod qanday ishlaydi.

    Faylda ochiladigan ro'yxatni ko'rsatish uchun index.php html formasini yarating va pastga yozing PHP skripti quyidagi tarkib bilan:



    PHP menyusi


    PHP da ochiladigan menyu












    agar (isset ($_GET ["qaerda" ]))
    {
    agar ($_GET ["qaerda" ]==1 )
    $file = "first.html" ;
    agar ($_GET ["qaerda" ]==2 )
    $file = "ikkinchi.html" ;
    o'z ichiga oladi ($ fayl);
    }
    ?>


    Endi ochiladigan menyu uchun kod tayyor va eng qizig'i shundaki, u normal ishlaydi, ammo xavfsizlik nuqtai nazaridan u zaifdir.

    Ushbu skriptning zaifligi o'zgaruvchidir $fayl ishga tushirilmagan bo'lib qoladi va bu holda avtomatik yaratilgan o'zgaruvchining qiymati to'g'ridan-to'g'ri funktsiyaga kiradi o'z ichiga oladi, va u, o'z navbatida, uni (o'zgaruvchini) muvaffaqiyatli bog'laydi va uni ekranda ko'rsatadi. Va bu nafaqat .htaccess konfiguratsiya fayli bo'lishi mumkin. Ushbu skriptni buzish uchun where parametriga kodda ko'zda tutilmagan qiymatni o'tkazish kifoya, masalan 3. Va bu qiymat skriptda ko'zda tutilmaganligi sababli, u shunchaki o'zgaruvchidir. $fayl ishga tushirilmaydi. Shuning uchun URL satri orqali unga ixtiyoriy qiymat berilishi mumkin.

    http://localhost/index.php?where=3&file=.htaccess

    Ammo bu shunday, mavzudan biroz chetga chiqish. 😀

    Ushbu muammoni hal qilish juda oddiy, o'zgaruvchan $fayl uni ishlatishdan oldin ishga tushirish kerak, ya'ni standart qiymat tayinlanadi.

    Bu yerda, qaerda parametri skriptga uzatilsa, u holda o'zgaruvchi to'g'ri ishga tushiriladi, aks holda u shunchaki bo'sh bo'ladi. PHP da [xavfsiz] ochiladigan menyu shunday chiqdi.

    P.S. Stsenariylarni yaratishda barcha mumkin bo'lgan hujum vektorlarini hisobga olish va shunga mos ravishda chiqarib tashlash kerak. Bu xavfsizlik qoidalariga javob beradigan va mijoz tomonidan talab qilinadigan loyihani yaratishning yagona yo'li. Yana ko'rishguncha!

    Agar siz veb-sayt menyusini qanday yaratish kerakligi haqidagi savolga javob bilan qiziqsangiz, unda siz to'g'ri manzilga keldingiz.

    Biz PHP-da dummilarni dasturlash uchun, shuningdek, hali ham tankda bo'lganlar uchun yozilgan dinamik menyuni yaratishni ko'rib chiqamiz.

    Dars 3. Veb-sayt dinamiki uchun php-da menyu yaratish - qo'g'irchoqlar uchun

    Keling, veb-saytimizning kelajakdagi tartibini yarataylik. Buning uchun biz Photoshop-da juda chiroyli veb-sayt chizamiz va uni qismlarga ajratamiz. Tasavvur qilaylik, sarlavha, logotip, menyu va altbilgi ushbu misoldagi kabi so'z bilan yozilmagan, lekin bular saytning nafis va rang-barang tarzda yaratilgan elementlari.

    Masalan, uchta sahifa yaratamiz va ularni 1-bo'lim, 2-bo'lim, 3-bo'lim deb nomlaymiz

    Turli sahifalar uchun bu matn har xil bo'ladi, lekin biz u bilan bezovtalanmaymiz va uni barcha sahifalarda bo'lgani kabi qoldiramiz.

    PHP da veb-sayt yaratishni boshlaylik.

    1. php yoki html kengaytmali alohida fayllarga sarlavha, logotip, menyu, altbilgi bloklarini tanlang.

    header.html

    logo.html

    menu.html

    footer.html

    Keling, ushbu matnli faylni barcha sahifalarda ko'rishimiz uchun qo'shamiz. Keling, unga qo'ng'iroq qilaylik text.html

    Eslatma. Bundan buyon men keyingi yozuvlarni bevosita faylda saqlayman. text.html

    2. PHP da veb-saytimizga shablon yaratamiz.

    Buning uchun biz oddiy ishni qilamiz - haqiqiy faylni saqlang, lekin bilan php kengaytmasi va barcha matn tarkibini o'chirib tashlang. Bu professional bo'lmasligi mumkin, ammo tushunarli, ammo keyinroq hamma narsani murakkablashtiramiz. Endi asosiy narsa tartib tamoyilini tushunishdir.

    3. Endi bizga template.html fayli kerak emas.

    Unga rahmat, bizning saytimiz qanday ko'rinishi haqida tasavvurga egamiz.

    4. Bizning shablonimiz template.php faylidir

    Endi biz include buyrug'i yordamida unga barcha sayt elementlarini kiritamiz.

    5. Keling, boshida qilganimizdek, uchta sahifa yarataylik.

    1-qism, qo'ng'iroq qilaylik 1.php

    2-qism, qo'ng'iroq qilaylik 2.php

    3-qism, qo'ng'iroq qilaylik 3.php

    Buning uchun siz eng oddiy buyruqdan foydalanishingiz mumkin sifatida saqlash...

    Kichkintoylar uchun tushuntiraman: faylni oching template.php, keyin bosing sifatida saqlash... va uni nomi ostida saqlang 1.php, protsedurani takrorlang va sayt sahifalarini ketma-ket saqlang 2.php, 3.php

    Biz bir xil dizayndagi 3 sahifani tugatdik. Faqat fayl o'rniga uni joylashtiring text.html boshqa, turli rasmlar yoki har qanday bilan to'ldiring html kodlari, skriptlar va har bir sahifaning mazmuni noyob bo'ladi.

    Diqqat!

    Agar fayl yaratilmagan bo'lsa index.php asosiy sahifa uchun, keyin brauzerda, sayt manzilini kiritish orqali biz saytning o'zini emas, balki faqat katalog tuzilishini (papkalar ro'yxatini) ko'ramiz.

    Siz Denverga qarashingiz va o'zingiz ko'rishingiz mumkin. Keling, vaziyatni tuzatamiz - fayl yarating index.php va keling, qo'ng'iroq qilaylik Uy. Shu bilan birga, fayl yarataylik text-home.html va buyruq yordamida o'z ichiga oladi uni saytning yangi yaratilgan asosiy sahifasiga joylashtiring.

    6. php da veb-saytni qanday ko'rish mumkin?

    Biz shunchaki nima bo'lganini ko'rmaymiz. Bu endi html kengaytmali shablon emas.

    Lekin muammo ham emas. Bizga o'zimizniki kerak, ya'ni. kompyuteringizda mahalliy server. Buning uchun biz Denverni o'rnatamiz va Internetga kirmasdan brauzerda ishimiz natijasini ko'rib chiqamiz.

    Endi bu tartib. Men sayt manzilini kiritdim va hozirgina yaratilgan hamma narsani ko'rdim normal shakl dizayn bilan.

    Endi saytning PHP menyusini ko'rib chiqamiz.

    1. menu.html faylini oching va 1, 2 va 3-qismlarni saytdagi havolalarga aylantiring. PHP da havolalar turli usullar bilan yaratiladi.

    Bizning vazifamiz PHP da yaratilgan saytni qanday his qilishni o'rganishdir. Shuning uchun biz oddiy statik saytdagi kabi havolalar qilamiz 1-bo'lim va hokazo.

    Menga Macromedia Dreamweaver-da havola yaratish jarayoni juda yoqadi. O'rim-yig'imga vaqt toping KELISHDIKMI va qahva iching.

    2. Agar tashrifchi ushbu sahifada bo'lsa, menyudagi havolani qanday qilib nofaol qilish kerak.

    Tashrifchi qaysi sahifada ekanligini bilib, saytni kezish uchun qulayroq bo'ladi.

    Agar siz barcha bosqichlarni qat'iy ravishda nuqtama-nuqta bajargan bo'lsangiz, menyudagi barcha havolalar doimiy ravishda faol ekanligini ko'rasiz. Buni qanday tuzatish kerak?

    Birinchidan, nima ekanligini ta'rifini eslaylik Shartli gaplar

    - bu shartlarga qarab ba'zi harakatlarning bajarilishi yoki bajarilmasligi.

    Keling, quyidagilarni bajaramiz:

    agar ($master == "Asosiy")// bu shart. Agar u bajarilgan bo'lsa, menyuning ushbu joyiga echo buyrug'i yordamida "Uy" yozuvini ko'rsatadigan oddiy HTML teglari qo'yiladi.

    aks-sado "

    Uy

    ";

    boshqa// "aks holda" degan ma'noni anglatadi - shart bajarilmasa nima bo'ladi. Bunday holda, agar shart bajarilmasa, "Uy" yozuvi asosiy sahifaga olib boradigan havola bo'ladi.

    aks-sado "

    Uy

    ";

    • Biz shart bilan keldik, lekin shunday o'zgaruvchini tekshiringso'rashingiz kerak.

    Buning uchun biz barcha sahifalarga quyidagi kod bloklarini joylashtiramiz:

    $master = "Asosiy";

    $master = "1-bo'lim";

    $master = "2-bo'lim";

    $master = "3-bo'lim";

    Ko'rib turganingizdek, har bir sahifaning o'z kodi mavjud.

    Shunday qilib, PHP menyusini yaratish bo'yicha amaliy qadamlarimiz quyidagicha bo'ladi:

    1) Faylni oching index.php

    va kodni joylashtiring

    $master = "Asosiy";

    sayt menyusining o'zini ko'rsatadigan kodni kiritadigan joyga "menu.html" ni o'z ichiga oladi;
    ?>

    2) Faylni oching menu.html va asosiy sahifaga oddiy html havolasi o'rniga shart bilan kodni kiriting.

    Biz brauzerga qaraymiz va qoyil qolamiz! Agar biz asosiy sahifaga kirsak, havola endi faol emas!

    3) 1 va 2-bandlarni sahifalar bilan takrorlang 1.php, 2.php, 3.php

    1-takrorlash:

    1) 1.php faylini oching va belgilangan o'zgaruvchiga ega menyu blokini ko'rsatadigan kod oldiga kiriting

    $master = "1-bo'lim";

    2) menu.html faylini oching va oddiy havola oʻrniga shartli kodni kiriting 1-qism, quyidagi o'zgarishlar kiritiladi:

    agar ($master == "1-bo'lim")// bu shart. Agar u bajarilgan bo'lsa, u holda menyuning ushbu joyiga echo buyrug'i yordamida "1-bo'lim" yozuvini aks ettiruvchi oddiy HTML teglari qo'yiladi.

    aks-sado "

    1-qism

    ";

    boshqa// "aks holda" degan ma'noni anglatadi - shart bajarilmasa nima bo'ladi. Bunday holda, agar shart bajarilmasa, "1-bo'lim" yozuvi asosiy sahifaga olib boradigan havola bo'ladi.

    aks-sado "

    1-qism

    ";

    Mo''jiza yana sodir bo'ldi! Endi biz sahifada bo'lsak 1-qism, menyudagi havola faol emas.

    Takrorlash - o'rganishning onasi! Yoki tankdagilar uchun! Yana

    Takrorlash 2

    1) Ochiq fayl 2.php va kodni joylashtiring.

    $master = "2-bo'lim";

    2) Menyu.html faylini yana oching va shart bilan kodni joylashtiring

    agar ($master == "2-bo'lim")// bu shart. Agar u bajarilgan bo'lsa, u holda menyuning ushbu joyiga echo buyrug'i yordamida "2-bo'lim" yozuvini aks ettiruvchi oddiy HTML teglari qo'yiladi.

    aks-sado "

    2-qism

    ";

    boshqa// "aks holda" degan ma'noni anglatadi - shart bajarilmasa nima bo'ladi. Bunday holda, agar shart bajarilmasa, "2-bo'lim" yozuvi asosiy sahifaga olib boradigan havola bo'ladi.

    aks-sado "

    2-qism

    ";

    Takrorlash 3

    1) Ochilish fayl 3.php va o'zgaruvchini o'rnating.

    $master = "3-bo'lim";

    2) Menyu.html faylida havola o'rniga shartli kodni kiritamiz 3-qism, o'zgarishlar quyidagilar:

    agar ($master == "3-bo'lim")// bu shart. Agar u bajarilgan bo'lsa, u holda menyuning ushbu joyiga echo buyrug'i yordamida "3-bo'lim" yozuvini aks ettiruvchi oddiy HTML teglari qo'yiladi.

    aks-sado "

    3-qism

    ";

    boshqa// "aks holda" degan ma'noni anglatadi - shart bajarilmasa nima bo'ladi. Bunday holda, agar shart bajarilmasa, "3-bo'lim" yozuvi asosiy sahifaga olib boradigan havola bo'ladi.

    aks-sado "

    3-qism

    ";

    Pastki qator: ushbu turdagi menyudagi havolalar o'rniga

    Uy


    1-qism

    2-qism


    3-qism

    Php haqidagi ushbu dars saytga tashrif buyuruvchilarning koʻplab soʻrovlariga javoban yozilgan boʻlib, php da sayt uchun dinamik menyu yaratishni oʻrganish boʻyicha amaliy qoʻllanma hisoblanadi.

    Keyingi webmasterning cheat varag'i sizga PHPda har bir sahifa uchun noyob sarlavhalar, tavsiflar va kalit so'zlarni qanday yaratishni aytib beradi.

    Siz arxivni barcha sayt shablonlari va PHP menyu fayllari bilan yuklab olishingiz mumkin. Dasturlashni yangi boshlaganlar uchun tavsiya etiladi.

    Agar siz PHP-ni jiddiy o'rganishga tayyor bo'lsangiz, Popovdan yaxshiroq video kursni topish qiyin. U katta tajriba va yaxshi uslubga ega.

    ]]> ]]>

    Ushbu maqolada men qanday qilib yaratishingiz mumkinligini ko'rsataman PHP va MySQL-da ko'p darajali menyu. Albatta, siz uni yaratish uchun ko'plab variantlarni topishingiz mumkin, ammo ushbu mavzu bo'yicha savollaringiz soniga qarab, sizga misol kerak. Va men buni ushbu maqolada beraman. Darhol ta'kidlaymanki, ushbu maqola faqat biladiganlar uchun mantiqiy PHP va u bilan qanday ishlashni biladi MySQL. Qolganlarning hammasi birinchi navbatda buni boshdan kechirishi yoki kitob o'qishi kerak PHP va MySQL.

    Birinchidan, ma'lumotlar bazasida quyidagi maydonlar bilan jadval tuzamiz:

    • id- noyob identifikator.
    • sarlavha- menyudagi langar havolalari.
    • havola- menyu bandi olib boradigan manzil.
    • ota_identifikatori- ota-ona identifikatori. Agar asosiy element bo'lmasa, u NULL bo'ladi (yoki siz 0 ni ham qo'yishingiz mumkin).

    Biz stolni tartibga keltirdik, endi vaqt keldi PHP kodi. Toʻliq PHP kodi quyida keltirilgan:

    $mysqli = new mysqli("localhost", "root", "", "db"); // Ma'lumotlar bazasiga ulanish
    $result_set = $mysqli->query("SELECT * FROM `menyu`"); // Menyu bilan jadvaldan barcha yozuvlarni tanlang
    $elementlar = massiv(); // Menyu bandlari uchun massiv
    while (($row = $result_set->fetch_assoc()) != false) $items[$row["id"]] = $row; // Massivni ma'lumotlar bazasidan namuna bilan to'ldiring
    $childrens = massiv(); // Bolalar elementlarini ota-onalariga moslashtirish uchun massiv
    foreach ($ element sifatida $ element) (
    agar ($item["parent_id"]) $childrens[$item["id"]] = $item["parent_id"]; // Massivni to'ldiring
    }
    printItem funksiyasi ($item, $items, $childrens) (
    /* Menyu bandini ko'rsatish */
    aks-sado "

  • ";
    echo "".$item["title"]."";
    $ul = noto'g'ri; // Bolalar ko'rsatilganmi?
    esa (to'g'ri) (
    /* Biz barcha bolalarni qidiradigan cheksiz tsikl */
    $key = array_search($item["id"], $childrens); // To'liq element qidirilmoqda
    agar (!$key) (
    /* Bolalar topilmadi */
    agar ($ul) aks-sado ""; // Agar asosiy elementlar ko'rsatilgan bo'lsa, ro'yxatni yoping
    sindirish; // Loopdan chiqish
    }
    unset($childrens[$key]); // Topilgan elementni olib tashlang (qayta ko'rsatilmasligi uchun)
    agar (!$ul) (
    aks-sado "
      "; // Ichki ro'yxatni boshlang, agar ichki elementlar hali mavjud bo'lmasa
      $ul = rost; // Bayroqni o'rnating
      }
      echo printItem($items[$key], $elementlar, $childrens); // Rekursiv ravishda barcha asosiy elementlarni ko'rsatish
      }
      aks-sado "";
      }
      ?>

      Ushbu kod to'liq ishlamoqda, ammo hech kim bu tarzda yozmasligini tushunishingiz kerak (xususan, orqali aks-sado HTML teglari). Va sizning vazifangiz ushbu koddan algoritmni olishdir, lekin kodning o'zi emas. Va keyin ushbu algoritmni dvigatelingizga ulang. Men chiqish kodini diqqat bilan izohlashga harakat qildim PHP va MySQL-da ko'p darajali menyu, lekin, albatta, bu eng shaffof emas va juda yaxshi boshlang'ich bilimni talab qiladi. Agar siz hali ham yaxshi bilmasangiz PHP va MySQL, keyin men buni birinchi bo'lib o'tishni tavsiya qilaman

      Ko‘rib chiqish