PHP ve MySQL'de Bagatorіvneve menüsü. §2. php Inurl php kendi menü kimliği piramidinde bir açılır dikey menü nasıl oluşturulur

Golovna / Nalaştuvannya

Web sitenizin tek bir web sayfası yoksa, bir gezinme çubuğu (menü) eklemeyi düşünün. Menü - sitede gezinmeye yardımcı olan web sitesine dağıtılır. Sitenin iç tarafında tutulması gereken bir menü veya bir mesaj listesi olsun. kendisi basit bir şekilde siteye bir gezinme paneli ekleyin ve bir menü oluşturun CSS'ye yardım et ve HTML.

Dikey Menü

Dikey menü oluşturmanın ilk adımı madde işaretli bir liste oluşturmak olacaktır. Ayrıca listeyi tanımlama yeteneğine de ihtiyacımız var, bu yüzden "navbar" tanımlayıcısı ile id niteliğini ekledik. Deri eleman

  • bir istek için intikam listemiz:

    Bir sonraki görevimiz, kilitlerin arkasına kurulan listeden stilleri bırakmak. Listenin kendisinin adlarını ve dahili girişlerini ve listedeki öğelerin yanındaki işaretleri temizlememiz gerekiyor. Gerekli genişliği ayarlayalım:

    #navbar ( kenar boşluğu: 0; dolgu: 0; liste stili-türü: yok; genişlik: 100 piksel; )

    Şimdi kendinize stil vermenin zamanı geldi. Onlara arka plan rengini ekliyoruz, metnin parametrelerini değiştiriyoruz: yazı tipinin rengi, boyutu ve boyutu, hafifçe güçlendirin, küçük adımlar ekleyin ve yazı tipinin boyutunu değiştirin satırdan bloğa eleman. Listedeki maddelere sol ve alt çerçevelere Dodatkovo eklendi.

    Değişikliklerimizin en önemli kısmı, küçük öğelerin bloklar üzerinde yeniden dağıtılmasıdır. Artık mesajlarımız listedeki öğenin tüm kullanılabilir alanını kaplıyor, bu nedenle mesaja geçmek için artık imleci tam olarak metne yönlendirmemize gerek yok.

    #navbar a ( background-color: #949494; color: #fff; padding: 5px; text-decoration: none; font-weight: bold; border-left: 5px solid #33ADFF; display:block; ) #navbar li ( sol kenarlık: 10 piksel düz #666; kenarlık-alt: 1 piksel düz #666;

    Tüm kodu, daha fazla açıklamayı tek bir popoda birleştirdik, şimdi dene düğmesine basarak popo olan tarafa gidebilir ve sonucu görebilirsiniz:

    belgeyi adlandırma

    denemek

    Fare imlecini bir menü öğesinin üzerine getirdiğinizde eski görünüm coristuvach'ın saygısını çevirerek değiştirebilirsiniz. Sözde sınıfa yardımcı olarak böyle bir efekt yaratabilirsiniz: hover.

    Daha önce incelediğimiz dikey menünün ucuna dönelim ve stil tablosuna bir sonraki kuralı ekleyelim:

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

    Yatay Menü

    Ön popoda, ana içerik alanında solak veya sağlak olan sitelerde kullanılması en muhtemel olan dikey gezinme paneline baktık. Ancak, navigasyon mesajları içeren menüler de genellikle web sayfasının üst kısmında yatay olarak görüntülenir.

    Harika listenin ek stilizasyonu için yatay menü oluşturulabilir. Elemanlar için güç göstergesi

  • Listedeki öğelerin tek tek sıralanması için değerleri satır içi olarak ayarlamak gerekir.

    Menü öğelerini arkaya yatay olarak yerleştirmek için mesajlar içeren bir işaretleme listesi oluşturuyoruz:

    Listemiz için birkaç kural yazalım, stilden ne çıkar, kilit listeleri için ne kazanılır ve satırdaki bloktan listeye tekrar bakalım:

    #navbar ( kenar boşluğu: 0; dolgu: 0; liste stili-türü: yok; ) #navbar li ( ekran: satır içi; ) Deneyin »

    Şimdi daha fazlasını kaybettik şık tasarım yatay menümüz için:

    #navbar ( kenar boşluğu: 0; dolgu: 0; liste stili-türü: yok; kenarlık: 2 piksel katı #0066FF; kenarlık yarıçapı: 20 piksel 5 piksel; genişlik: 550 piksel; metin hizalama: merkez; arka plan rengi: #33ADFF; ) #navbar a ( renk: #fff; dolgu: 5px 10px; metin-dekorasyonu: yok; yazı tipi-ağırlığı: kalın; görüntü: satır içi blok; genişlik: 100px; ) #navbar a:hover ( kenarlık yarıçapı: 20px 5px ; background-color: #0066FF; ) Deneyin »

    VIP menüsü

    Menü, oluşturacağımız gibi, yatay gezinme çubuğunda sıralanan ana gezinme mesajlarının ve alt öğelerin anası, fare imleci o menü öğesinin üzerine gelir gelmez, belirli sayıda alt öğe görünene kadar.

    Öncelikle menümüzün HTML yapısını oluşturmamız gerekiyor. İşaretli listeye ekleyebileceğimiz ana navigasyon mesajları:

    Bir okremy listesinde alt öğe mi rozmіstimo, öğeye yogo koyarak

  • , babanın alt puan isteğinin intikamını almak için şimdi gelecekteki navigasyon panelimizin yapısını okuyabiliriz:

    denemek

    Şimdi CSS kodunu yazmaya başlayalım. Koçanı için, ek bilgi ekranı için alt öğeler içeren bir liste eklemek gereklidir: yok; böylece koku bütün saat boyunca web sitesinde görünmedi. Alt noktaları görüntülemek için ihtiyacımız var, bu nedenle bir öğenin üzerine gelirken

  • blok öğesindeki yeni dönüşümlerin listesi:

    #navbar ul ( ekran: yok; ) #navbar li: vurgulu ul ( ekran: blok; )

    Hem listeleri hem de kilidin arkasına yerleştirilmiş işaretleri alıyoruz. Gezinme yardımcıları ile listenin öğeleri, muhtemelen yüzen, şekillendiren yatay menü, ancak alt öğelerin kontrol edilmesi gereken listenin öğeleri için float: none; , böylece koku bir altında bir gibiydi.

    #navbar, #navbar ul ( kenar boşluğu: 0; dolgu: 0; liste stili türü: yok; ) #navbar li ( kayan nokta: sol; ) #navbar ul li ( kayan nokta: yok; )

    Daha sonra düşmeyen alt menümüzün içeriğe müdahale etmeyecek şekilde navigasyon panelinin altına iterek aşağı doğru ittirmemiz gerekiyor. Bir öğeyi liste konumuna koyduğumuz için: göreceli; ve listeye, ne intikam almak için alt noktalar pozisyonu: mutlak; ve alt menünün konumu tam olarak kuvvetlere göre olacak şekilde üstteki gücü %100 değerlerine eklemektir.

    #navbar ul ( görüntü: yok; konum: mutlak; üst: %100; ) #navbar li ( kayan nokta: sol; konum: göreli; ) #navbar ( yükseklik: 30 piksel; ) Deneyin »

    Batkiv listesinin yüksekliği özel olarak eklendi, böylece tarayıcılar elementte kayan içeriği kontrol etmesin, yükseklik eklemeden listemiz tarayıcı tarafından göz ardı edilecek ve listeyi takip eden içerik menümüzün etrafını saracak.

    Artık listelerimize ve menülerimize hakaret etme tarzını kaybettik, ne görüyorsun hazır ol:

    #navbar ul ( görüntü: yok; arka plan rengi: #f90; konum: mutlak; üst: %100; ) #navbar li:hover ul ( görüntü: blok; ) #navbar, #navbar ul ( kenar boşluğu: 0; dolgu: 0; liste stili-türü: yok;) #navbar ( yükseklik: 30 piksel; arka plan rengi: #666; sol dolgu: 25 piksel; minimum genişlik: 470 piksel; yükseklik: %100; ) #navbar li a ( ekran: blok; dolgu: 6 piksel; genişlik: 100 piksel; renk: #fff; metin dekorasyonu: yok; ) #navbar li:hover ( background-color: #f90; ) #navbar ul li:hover ( background-color: #666; )

    Php betikleri tarafından işlenen php'deki site menüsünün kendine has özellikleri vardır. Bu sadece bir mutlak veya bir vodnosnі possilannya değil, bir bütün olarak yapılabilmesine rağmen, ancak kural olarak, razdіla ve poddrozdіla ile dinamik olarak kalıplanmış yan panellerin silan blokları, çok iç taraflardan silan blokları site. Dinamik olarak oluşturulan menü, siteye nasıl yerleştirilebileceği, ister yer ister en önemlisi, doğru zamanda zaten kullanışlıdır. Böylece farklı bölümlere ve alt klasörlere gittiğinizde farklı menü bloklarını dinamik olarak genişletebilirsiniz. Ayrıca, koku sadece zmist için değil, şekil ve tasarım için de farklı olabilir. Statik bir site için, yine de bu tür hilelerle çalışabilirsiniz, ancak şablona ek dosyalar da ekleyebilecek ve yine de birçok hile olabileceksiniz. Bir sitenin php ile yazılmasını istemek hiçbir şeye yardımcı olmuyor. Şablonu kaybet, yak i buv. Usim keruvateme bir veya birkaç basit php betiği.

    Bir diğerine geçmek için, örneğin ilk başlık gibi dinamik bir menü oluşumu için bir php scripti yazmak ve bir önceki script üzerinden başlığın menüsünü değiştirmek yeterlidir. Diğer başlıklar da benzer bir sırayla formüle edilebilir. Ayrıca, komut dosyasının kodunun kendisinde çok az pratik değişiklik vardır. Yalnızca, anlamlı bir şekilde mesaj ve mesajın kendisi olarak adlandırılan bir metin dosyasını değiştirin. Böyle bir komut dosyasının kodu, metnin altında gezinir.

    // Şekillendirme menüsü
    $menu = @file($rubric1_menu);
    $satır = say($menü);
    için ($i = 0; $i< $lines; $i++)
    {
    list($menu_link,$menu_name,$menu_title)=explode("::", $menu[$i]);
    if($page == rub1_part1 ve $i == 0) ($refcolor = "style="color:#cc0000"";)
    elseif($page == rub1_part2 ve $i == 1) ($refcolor = "style="color:#cc0000"";)
    elseif($page == rub1_part3 ve $i == 2) ($refcolor = "style="color:#cc0000"";)
    başka ($refcolor = "";)
    $rubric1.="

  • ".$menü_adı."
  • ";
    }
    ?>

    Böyle bir komut dosyasını gerekli metin dosyasında işlemek için, bu durumda menüyü adlandırın, bu başlığın kendisini gönderin. Böyle bir dosya oluşturmak beceriksizdir, Dreamweaver ana menü komutunu Dosya -> Yeni'ye dönüştürmek, daha önce açıklandığı gibi yeni bir html belgesi oluşturmak, gözden geçirip yeni dosyanın kodlamasını UTF-8 olarak değiştirmek ve ardından kaydetmek yeterlidir. babamın verilerinin önünde rubric1 .dat. Bu dosyanın sonraki yolu D:/Mysitephp/data/rubric1.dat olacaktır. Dosya yerine, gerekirse aşağıda gezinerek їх adı ve їх başlığı (öneriler). Üstelik Krim, schob koşusu Danimarka yazısı robot için, ek işlevler için bağlanması gerekir Dahil etmek()şablon motoru main.php'de.

    Rub1_part1::Bölüm 1::Bölüm 1 değerlendirme listesi 1::
    rub1_part2::Bölüm 2::Bölüm 2 değerlendirme listesi 1::
    rub1_part3::Bölüm 3::Bölüm 3 değerlendirme listeleri 1::

    Ek olarak, site adreslerinin kaydedildiği, yanlardaki klasörlere giden yollar ve sitenin meta açıklamaları, site menüsündeki dosyalara giden yollar ve ayarların bulunduğu küçük bir komut dosyası oluşturmak da gereklidir. ek işlevler için yogayı bağlayın Dahil etmek()şablon motoru main.php'de. Kimin için yeni oluşturmak için gerekli php dosyası ve benim için, örneğin, settings.php dosyasını php klasörüne kaydedin. Dosyanın sonraki yolu D:/Mysitephp/php/setings.php olacaktır ve aşağıda gezinecektir.

    # html belgelerinin bulunduğu klasör
    $belgeler = "şablonlar";
    # script dizinine yönlendirme
    $turl="http://mysitephp.ru";
    Danimarkalı veritabanı
    $rubric1_menu = "data/rubric1.dat";
    ?>

    Bir menü oluşturmak için bir php betiğini nasıl kullanırsınız? Ek işlevler için $menüyü değiştirmeye geri dön dosya() rubric1.dat metin dosyasına gidin. potim fonksiyonu saymak() satır sayısını artır Metin dosyası ve fonksiyonlar liste()і patlatmak() döngüde, satırları yapıştırma yöntemi kullanılarak menünün kendisi açılır (nokta işlemi . ) tarihsel olarak isimleri ve başlıkları ile oluşturulmuştur, böylece $rubric1 değişikliğine geçebiliriz. Dali, menü komut dosyasının işlev tarafından etkinleştirildiği şablon motoru komut dosyası Dahil etmek(), daha önce açıklanan işlevler için ek yardım için $rubric1'i siteye değiştirmek yerine hareket ettirin tekrar().

    Şimdilik böyle bir menü olmayacak, yenisinde bulunan shard'lar sadece gerekli niteliklerle kendi kendilerine gönderiliyor, bu mesajlar için geçişi sağlayacak script değil ve site taraflarının onaylanması. , yak Cim php betiği ile ilgileneceğiz.

    Dali, bir menü oluşturmak için bir komut dosyası içeren bir güncelleme projesi olabilir. Sağ taraftaki panelde ücretsiz aboneliğin kayıt ve aktivasyonundan sonra gösterildiği gibi, proje güncellemelerini de yan tarafta talep edebilirsiniz. Tarafın adreslerini kaydetmek gerekir. Öte yandan proje güncelleme, çeşitli blue scriptler, programlar, devreler, programlama ve web sitesi geliştirmeden dersler ve video derslerinin tanıtımı için başvuruda bulunduk. yeni başlayanlar için.

    Php projesinden siteye yeni komut dosyaları ile güncelleme talepleri, yukarıdaki açıklamaların bir sonucu olarak şimdi onunla karşılaştırılabilir. Ardından, okumayı kapatmak için özelleştirme için projeyi tekrar değiştireceğim, işlemi başlatacağım, Denwer sunucusunu başlatacağım, tarayıcı penceresine mysitephp.ru yazıp ne olduğuna bir göz atacağım. Şablonun sol üst kısmında, aşağıdaki küçük resimde gösterildiği gibi ilk bölümün menüsü açılacaktır.

    Git ve en sevdiğin sosyalistle iyi geçin

    Site navigasyon olmadan tamamlanmamalıdır, aksi takdirde "site menüsü" olarak da adlandırılır. Yani site için menünün ekseni aynı ağaçta bire bir ve bire bir. Uygulama planında bire bir menü özel katlama seçenekleri bulunmamakla birlikte zengin bir menü oluştururken dikkatli düşünmek gerekir.

    Görevimizin en önemli görevi zengin menümüz için bir veri tabanı tasarlamaktır. Üç alandan bir tablo Kategorileri oluşturalım İD, Başlık, ebeveyn de:

    • İD- tanımlayıcı
    • Başlık- Menü adı
    • ebeveyn- zamovchuvannyam kategorisinin babası 0

    Menünün düzeni için ebeveyn yakscho ebeveyn = 0, o zaman bu kategori Batkivskaya. Baba kategorisine isim eklemek için ebeveyn alanında belirtmeniz gerekmektedir. İD gerekli baba Örneğin:

    Kategori içeren tablolar

    Tablolardan da anlaşılacağı üzere Batkiv kategorisinde Arabalarє iki nashashki - tse Mazdaі Honda sahanın karşısında pov'yazanih ebeveyn. ve kategori motosikletler iki yem - tse kawasakiі harley. Bununla Chovna kategorisinde ödül yok. Kategorileri nasıl sıralayacağınızı anladığınızdan eminim.

    Haydi uygulamaya geçelim. Bir kategori tablosu oluşturalım.

    CREATE TABLE IF EXISTS `categories` (`id` int(10) unsigned NOT NULL AUTO_INCREMENT, `title` varchar(255) NOT NULL, `parent` int(10) unsigned NOT NULL, PRIMARY KEY (`id`)) MOTOR=MyISAM VARSAYILAN CHARSET=utf8 AUTO_INCREMENT=20 ; -- -- "Kategoriler" tablosu verilerini boşaltın -- "Kategoriler"e EKLE ('kimlik', 'başlık', 'parent') DEĞERLER (1, "Arabalar", 0), (2, "Motosikletler", 0) , (3, Mazda, 1), (4, Honda, 1), (5, Kawasaki, 2), (6, Harley, 2), (7, Mazda 3, 3 ), (8, "Mazda 6", 3), (9, "Sedan", 7), (10, "Hatchback", 7), (11, "Chovni", 0), (12, "Liftback", 8), (13, "Crossover", 8), (14, "Biliy", 13), (15, "Chervoniy", 13), (16, "Siyah", 13), (17, "Yeşil", 13), (18, Mazda CX, 3 ), (19, Mazda MX, 3);

    Robotik algoritma saldırganlardan oluşur:

    Veri tabanı ile bağlantı oluşturuyoruz

    sorgu("İSİM AYARLA "utf8""); /* * $connect_error koruyucusunu oluşturmak için "resmi" nesne yönlendirme yöntemi * PHP 5.2.9 ve 5.3.0 sürümlerine kadar çalışmaz. */ if ($mysqli->connect_error) ( die("Connection pardon (" . $mysqli->connect_errno . ") " . $mysqli->connect_error); ) /* * 5.2 .9'dan önce bağlanmak için bu eklenmelidir. , * kodu şöyle daha iyi bükün */ if (mysqli_connect_error()) ( die("Bağlantı pardon (" . mysqli_connect_errno() . ") " . mysqli_connect_error()); )

    Tablolardan veri çıkarma fonksiyonunu yazıyoruz.

    //Menümüzün dizisini veritabanından bir dizi işlevi biçiminde kaldırın getCat($mysqli)( $sql = "SELECT * FROM `categories`"; $res = $mysqli->query($sql); / /Anahtar dizisi dizisi oluştur є Menü Kimliği $cat = array(); while($row = $res->fetch_assoc())( $cat[$row["id"]] $ $satır;

    Bu tür bir dizi alıyoruz, diziyi kategori kimlikleriyle anahtarlıyoruz.

    Bir ağacı bir dizi görünümden uyandırma işlevi Tommy Lacroix

    //Tommy Lacroix gibi bir diziden ağaç alma işlevi function getTree($veri kümesi) ( $ağaç = dizi(); foreach ($veri kümesi as $id => &$düğüm) ( // Yuva yok if (! $node[" parent"])( $tree[$id] = &$node; )else( //Başlıklar varsa, $dataset[$node["parent"]]["childs" dizisini yineleyin ][$id] = &$ düğüm; ) ) $ağaç döndürür; )

    Diziyi görünen ağaçtan çıkarın

    Bir bütün olarak senaryo

    sorgu("İSİM AYARLA "utf8""); /* * $connect_error koruyucusunu oluşturmak için "resmi" nesne yönlendirme yöntemi * PHP 5.2.9 ve 5.3.0 sürümlerine kadar çalışmaz. */ if ($mysqli->connect_error) ( die("Connection pardon (" . $mysqli->connect_errno . ") " . $mysqli->connect_error); ) /* * 5.2 .9'dan önce bağlanmak için bu eklenmelidir. , * bunun gibi daha iyi bir bükülme kodu */ if (mysqli_connect_error()) ( die("Bağlantı pardon (" . mysqli_connect_errno() . ") " . mysqli_connect_error()); ) function getCat($mysqli)( $sql = "SELECT * FROM `categories`"; $res = $mysqli->query($sql); //Anahtar dizisi dizisi oluştur є menü kimliği $cat = array(); while ($row = $res->fetch_assoc()) ( $cat[$row["id"]] = $row; ) return $cat; ) //Tommy Lacroix gibi diziden ağaç getir function getTree($veri kümesi) ( $ağaç = dizi(); foreach ($veri kümesi as $id => &$node) ( //Nester yok if (!$node["parent"])( $tree[$id] = &$node; )else( //Başlıklar nedeniyle, sonra yineleyin $dataset[$node["parent"]]["childs"][$id] = &$node; ) ) return $ağaç; ) //Diziyi $cat dizininden hazırlamak gerekiyor = getCat($mysqli); // Ağaç benzeri bir menü oluştur $ Tree = getTree($ Cat); //Ağaç görünümü işlevinde menüyü görüntülemek için şablon tplMenu($category)( $menu = "
  • ".$category["title"].""; if(isset($category["childs"]))( $menu .= "
      ".showCat($category["çocuklar"]) ."
    "; ) $menü .="
  • "; return $menu; ) /** * Şablonumuzu tekrar tekrar okuyun **/ function showCat($data)( $string = ""; foreach($data as $item)( $string .= tplMenu($item); ) return $string; ) //HTML düzeni gerekli $cat_menu = showCat($tree); //Ekranda görüntülenir yankı "
      ". $cat_menu ."
    "; ?>

    robot sonucu

    Yönetici için PHP + MySQL'de Bagator_vneve menüsü

    Sitenizin yönetiminde bu menüyü kazanmak istiyorsanız, birkaç işlevi yeniden yazmanız gerekir. tplMenü(), gösterKedi().

    ".$kategori["başlık"].""; )else( $menü = " "; ) if(isset($category["çocuklar"]))( $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 ""; ?>

    robot sonucu

    Arabalar → Mazda →→ Mazda 3 →→→ Sedan →→→ Hatchback →→ Mazda 6 →→→ Liftback →→→ Crossover →→→→ Beyaz →→→→ Chervoniy →→→→ Chorniy →→→→→ Zeleny → → Mazda CX →→ Mazda MX → Honda Motosikletleri → Kawasaki → Harley Chovny

    Oskіlki menu.php modülünü açmayacak. Bula bir not defterinde sıfırdan yazıldığı için PHP'deki menünün ayrıntılı bir açıklamasını aşağıda bulacaksınız.

    Bu kod, kendi kendine yazılan motorların yapabileceği gibi özellikle dinamik siteler için uygun olacaktır. Belirsiz ayrıntılar olabileceğinden (farkları daha sonra açıklanacak) kodun iki varyantını yayacağım.

    Koçanı için, bir çeşit menü için sitenin yapısını yönlendireceğim. Sitenin yapısı böyle bir görünüm için suçlamaktır ( klasik görünüm):

    /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

    Site diğer dağıtımlarda ve güncellemelerde bulunabilir:

    /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

    Böyle bir yapı bizim menümüz için de pratik ancak boyutları küçük.

    PHP'deki menüler için bir okremium dosyası oluşturmayı öneriyorum. Örneğin menu.php böyle bir dosya için sihirli bir isim olabilir. Menünün uygulanması için, CSS menüsünün stili de sunulur, böylece az çok güzel olur. Doğal olarak, bu stil sadece tanıma için verilir, sitelerden farklı bir şekilde tasarım parçaları.

    CSS menü stili kodu:

    .menu ( height:42px; padding:0 0 0 16px; background:url(images/spacer.png) tekrar; ) .menu li ( display:block; float:left; ) .menu li.active ( arka plan: #000011 ; ) .menu a (renk:#FFF; display:block; line-height:42px; text-decoration:none; padding:0 14px; ) ;)

    Şimdi, PHP'de bir menü uygulamak için ilk seçeneğe bir göz atalım, ki bu önemsiz bir şeyi affedebiliriz.

    PHP'deki menü kodunun ilk versiyonu

    \n"; for ($i=0;$i ": "
  • ";Eko" ".$dizi_menu[$i]["ad"]."
  • \n"; ) yankı ""; ?>

    Menü iki bölüme ayrılabilir. İlk adım, dağıtım isteklerinden dağıtımlarımızın adlarının girileceği $array_menu bilgi dizisini kaldırmaktır. Є varyant danih mySQL Ama özellikle tsommu no'daki sensu, oskolki vibrka zovsіm küçüktür, bunun için swidkіst iş nіyak vpline değil.

    Diğer bir kısım ise menüyü for döngüsü aracılığıyla görmektir. Döngü, $array_menu dizisinin adresiyle sitenin tutarlı bir adresini alır. Değilse, özel bir sınıfın aktif olduğu menünün siyah bir bölümünü görüntüleyeceğiz:

  • , aksi halde sadece
  • . Tse, menünün koristuvach'ın bilindiği kısmını renkli gibi görmemizi sağlar. Bana göre herhangi bir site için zengin olmak gerekiyor ki bir anda bilgi sahibi olabilesiniz, hangi şaraplara sahip olduğunuzu bilebilirsiniz.

    Dizideki doğrudan giriş sırası, menü web sitesinde görüntülendiğinde kaydedilecektir. Tobto dizi, menüyü açmanın gerekli olduğu sıraya konmalıdır.

    Not:
    URL (adres) başlığı nasıl görünebilir:
    /Bölüm 1
    aksi halde böyle
    /section_1/name_razdela.html
    sonra array_menu'da tam değeri yazmanız gerekir:
    $array_menu[$i]["url"]="/section_1"
    veya başka bir vipadu için:
    $array_menu[$i]["url"]="/section_1/nazvanie_razdela.html";

    İlk menü seçeneğini nasıl yaparsınız?
    Dağıtımın adresini biliyorsanız, menüde daha az. Örneğin, sayfa adresi /section_1/articles_1.html ise, menü görüntülenmez.

    Kodun bir başka çeşidi de ilk varyantı değiştirmek ve menüyü dağıtımlarda bulunan makalelere değiştirme özelliğini aktarmaktır.

    PHP'deki menü kodu için başka bir seçenek

    "; için ($i=0;$i ": "
  • "; echo "".$dizi_menu[$i]["başlık"]."
  • "; ) else ( echo ($URL) == ($array_menu[$i]["url"]) ? "
  • ": "
  • "; echo "".$dizi_menu[$i]["başlık"]."
  • " ; ) ) Eko ""; ?>

    Bu yazıda size nasıl oluşturabileceğinizi göstereceğim. PHP ve MySQL'de farklı menüler. Delicesine, bu yaratım için seçenekler zengin olabilir, ancak bu konudaki öğünlerinizin sayısına bakılırsa, bir popoya ihtiyacınız var. İlk yogayı makaleme getireceğim. Hangi makalenin sizin için mantıklı olabileceğini hemen söyleyeceğim, kim bilir PHP ve vmіє uygulama s MySQL. Diğer herkesin bunu gözden geçirmesi veya hakkında bazı kitaplar okuması gerekiyor. PHP ve MySQL.

    Koçanı için, veritabanında ilerleyen alanları olan bir tablo oluşturuyoruz:

    • İD- Benzersiz tanımlayıcı.
    • Başlık- menü bağlantısı.
    • bağlantı- Yaku'daki adresler menü öğesini yönlendirecektir.
    • ebeveyn_kimliği- Batkiv kimliği. Batkivsky öğesi yoksa, NULL olacaktır (aksi takdirde 0 koyabilirsiniz).

    Masayı düzenledik, şimdi saat geldi PHP kodu. povniy PHP kodu aşağıda gezinin:

    $ mysqli = yeni mysqli ("localhost", "root", "", "db"); // Veritabanına bağlan
    $result_set = $mysqli->query("menüden * SEÇİN"); // Menüden tablodaki tüm kayıtların Robimo seçimi
    $öğeler = dizi(); // Menü öğeleri için dizi
    while (($row = $result_set->fetch_assoc()) != false) $items[$row["id"]] = $satır; // Diziyi veritabanından bir seçimle doldurun
    $çocuklar = dizi(); // Babalarının alt öğelerinin özellikleri için bir dizi
    foreach ($item olarak $item) (
    if ($item["parent_id"]) $childrens[$item["id"]] = $item["parent_id"]; // diziyi yaz
    }
    function printItem($item, $items, $children) (
    /* Menü öğesini görüntüle */
    Eko "

  • ";
    echo "".$item["başlık"]."";
    $ul = yanlış; // Hangi alt elemanlar üretildi?
    while (doğru)(
    /* Tüm alt öğeleri aradığımız sonsuz döngü */
    $anahtar = array_search($item["id"], $çocuklar); // Alt öğeyi kapat
    if (!$tuşu) (
    /* Alt öğe bulunamadı */
    if ($ul) yankı "// Alt elemanlar oluşturulmuşsa, liste kapatılır
    kırmak; // Döngüden görüldü
    }
    unset($çocuklar[$anahtar]); // Bilgi öğesini görebiliriz (şarap tekrar gösterilmiyorsa)
    eğer (!$ul) (
    Eko "
      // Henüz alt öğe olmadığı için dahili listeyi onarıyoruz
      $ul=doğru; // sancak ayarla
      }
      echo printItem($item[$anahtar], $item, $çocuk); // Tüm alt öğeleri yinelemeli olarak göster
      }
      Eko "";
      }
      ?>

      Bu kod tamamen çalışıyor, ancak böyle bir şey yazmadığınızı anlamaktan sorumlusunuz (zokrema, visnovok aracılığıyla Eko HTML etiketleri). І Senin görevin algoritmayı kodun kendisinden değil bu koddan almak. Ve sonra algoritma motorunuza bağlanır. Kodu çıktıya yorumlamak için elimden geleni yaptım PHP ve MySQL'de özel menü, ale, delice, vin bir vizyoner ve vimagaє zaten uygunsuz koçanı bilgisi değildir. Yakshcho Vesche kötü biliyorum PHP ve MySQL, o zaman cei'den geçmeni tavsiye ederim

  • © 2022 androidas.ru - Android hakkında her şey