internet pencereler Android
Genişletmek

Kali Linux'ta SQL enjeksiyonlarını bulmak ve kullanmak için çok işlevli bir araç olan jSQL Enjeksiyonunu kullanma talimatları. Kali Linux'ta SQL enjeksiyonlarını aramak ve kullanmak için çok işlevli bir araç olan jSQL Enjeksiyonunu kullanma talimatları

Web sitesi menüsü nasıl oluşturulur sorusunun cevabı ilginizi çekiyorsa doğru adrese geldiniz.

PHP'de özellikle programlama kuklaları ve hala acemi olanlar için yazılmış dinamik bir menü oluşturmaya bakacağız.

Ders 3. Dinamik bir web sitesi için php'de menü oluşturma - aptallar için

Web sitemizin gelecekteki düzenini oluşturalım. Bunu yapmak için Photoshop'ta süper güzel bir web sitesi çizeceğiz ve onu parçalara ayıracağız. Header, logo, menu ve footer’ın bu örnekteki gibi kelimelerle yazılmadığını, sitenin zarif ve rengarenk tasarlanmış unsurları olduğunu düşünelim.

Örneğin üç sayfa oluşturalım ve bunlara Bölüm 1, Bölüm 2, Bölüm 3 adını verelim.

Bu metin farklı sayfalar için farklı olacaktır ancak biz bununla uğraşmayacağız ve tüm sayfalarda olduğu gibi bırakacağız.

PHP'de bir web sitesi oluşturmaya başlayalım.

1. Başlık, logo, menü, alt bilgi bloklarını php veya html uzantılı ayrı dosyalar halinde seçin

başlık.html

logo.html

menü.html

alt bilgi.html

Bu metni içeren bir dosya ekleyelim ki tüm sayfalarda görebilelim. Onu arayalım metin.html

Not. Bundan sonra diğer kayıtları doğrudan dosyada tutacağım. metin.html

2. Web sitemiz için PHP'de bir şablon oluşturalım.

Bunu yapmak için basit bir şey yapacağız - gerçek dosyayı kaydedin, ancak php uzantısıyla ve tüm metin içeriğini silin. Profesyonel olmayabilir ama anlaşılabilir bir durumdur ama her şeyi daha sonra karmaşıklaştıracağız. Şimdi asıl önemli olan düzen ilkesini anlamaktır.

3. Artık şablon.html dosyasına ihtiyacımız yok.

Onun sayesinde sitemizin nasıl görüneceğine dair bir fikrimiz var.

4. Şablonumuz şablon.php dosyasıdır

Şimdi include komutunu kullanarak tüm site öğelerini içine ekleyeceğiz.

5. Başlangıçta yapacağımız gibi üç sayfa oluşturalım.

Bölüm 1, Hadi arayalım 1.php

Bölüm 2, Hadi arayalım 2.php

Bölüm 3, Hadi arayalım 3.php

Bunu yapmak için en basit komutu kullanabilirsiniz. farklı kaydet...

Küçükler için açıklayayım: dosyayı aç şablon.php, ardından tuşuna basın farklı kaydet... ve adı altında kaydedin 1.php, prosedürü tekrarlayın ve site sayfalarını sırayla kaydedin 2.php, 3.php

Aynı tasarıma sahip 3 sayfamız oldu. Dosya yerine yapıştırmanız yeterli metin.html bir başkası, farklı resimlerle veya bazı html kodlarıyla takviye edilerek, her sayfanın içeriği benzersiz olacaktır.

Dikkat!

Dosya oluşturulmazsa index.php ana sayfa için, ardından tarayıcıda site adresini yazarak sitenin kendisini değil, yalnızca dizin yapısını (klasör listesi) göreceğiz.

Denver'a bakıp kendin görebilirsin. Durumu düzeltelim - bir dosya oluşturun index.php ve daha fazla uzatmadan arayalım Ev. Aynı zamanda bir dosya oluşturalım text-home.html ve komutu kullanarak katmak sitenin yeni oluşturulan ana sayfasına ekleyin.

6. Php'de bir web sitesi nasıl görüntülenir?

Ne olduğunu görmeyeceğiz. Bu artık html uzantılı bir şablon değil.

Ama sorun da değil. Kendimize ihtiyacımız var, yani. Bilgisayarınızdaki yerel sunucu. Bunu yapmak için Denver'ı kuracağız ve çalışmamızın sonucuna çevrimiçi olmadan bir tarayıcıda bakacağız.

Artık sıra geldi. Site adresini yazdım ve yeni oluşturulmuş her şeyin tasarımla normal bir formda olduğunu gördüm.

Şimdi sitenin PHP menüsüne bakalım.

1. menu.html dosyasını açın ve 1, 2 ve 3. bölümleri sitedeki bağlantılara dönüştürün. PHP'de bağlantılar farklı şekillerde oluşturulur.

Görevimiz PHP'de oluşturulmuş bir sitenin nasıl hissedileceğini öğrenmek. Bu nedenle, normal bir statik sitedeki Bölüm 1, vb. gibi bağlantılar yapacağız.

Macromedia Dreamweaver'daki bu bağlantı oluşturma sürecini kesinlikle seviyorum. Biçmek için zamanın var TAMAM ve kahve iç.

2. Ziyaretçi bu sayfadaysa menüdeki bir bağlantı nasıl devre dışı bırakılır.

Ziyaretçinin hangi sayfada olduğunu bilerek sitede gezinmesi daha uygun olacaktır.

Tüm adımları harfiyen uyguladıysanız menüdeki tüm bağlantıların her zaman aktif olduğunu göreceksiniz. Nasıl düzeltilir?

Öncelikle ne olduğunun tanımını hatırlayalım. Koşullu ifadeler

- bu, koşullara bağlı olarak bazı eylemlerin gerçekleştirildiği veya gerçekleştirilmediği zamandır.

Aşağıdakileri yapalım:

  • İhtiyacımız olacak değişkenler ve bir koşullu operatör:

if ($master == "Ana")// bu durum. Çalıştırılırsa, menünün bu yerine, echo komutunu kullanarak, "Ana Sayfa" yazısını gösteren sıradan HTML etiketleri eklenir.

Eko "

Ev

";

başka// "aksi takdirde" anlamına gelir - koşul karşılanmazsa ne olur? Bu durumda, koşul yerine getirilmezse “Ana Sayfa” yazısı ana sayfaya yönlendiren bir bağlantı olacaktır.

Eko "

Ev

";

  • Biz bu şartı bulduk ama değişkeni kontrol etbunu sorman lazım.

Bunu yapmak için aşağıdaki kod bloklarını tüm sayfalara yerleştireceğiz:

$ana = "Ana";

$ana = "Bölüm 1";

$ana = "Bölüm 2";

$ana = "Bölüm 3";

Gördüğünüz gibi her sayfanın kendine ait bir kodu var.

Yani PHP menüsü oluşturmak için pratik adımlarımız şu şekilde olacaktır:

1) Dosyayı aç index.php

ve kodu yapıştırın

$ana = "Ana";

site menüsünü görüntüleyen kodu eklediğiniz yere "menu.html"yi ekleyin;
?>

2) Dosyayı aç menü.html ve ana sayfaya basit bir html bağlantısı yerine koşulu içeren kodu ekleyin.

Tarayıcıya bakıyoruz ve hayran kalıyoruz! Ana sayfaya gidersek bağlantı artık aktif değil!

3) 1. ve 2. maddeleri sayfalarla tekrarlayın 1.php, 2.php, 3.php

Tekrarlama 1:

1) 1.php dosyasını açın ve belirli bir değişkenle menü bloğunu görüntüleyen kodun önüne ekleyin

$ana = "Bölüm 1";

2) menu.html dosyasını açın ve basit bir bağlantı yerine koşulu içeren kodu ekleyin Bölüm 1 aşağıdaki değişiklikleri yaparak:

if ($master == "Bölüm 1")// bu durum. Çalıştırılırsa, menünün bu yerine, echo komutunu kullanarak, "Bölüm 1" yazısını gösteren sıradan HTML etiketleri eklenir.

Eko "

Bölüm 1

";

başka// "aksi takdirde" anlamına gelir - koşul karşılanmazsa ne olur? Bu durumda koşul yerine getirilmezse “Bölüm 1” yazısı ana sayfaya yönlendiren bir bağlantı olacaktır.

Eko "

Bölüm 1

";

Mucize yine gerçekleşti! Şimdi sayfadaysak Bölüm 1, menüdeki bağlantı etkin değil.

Tekrarlama öğrenmenin annesidir! Veya tanktakiler için! Tekrar

Tekrarlama 2

1) Açık dosya 2.php ve kodu yapıştırın.

$ana = "Bölüm 2";

2) Menu.html dosyasını tekrar açın ve koşulu içeren kodu yapıştırın

if ($master == "Bölüm 2")// bu durum. Çalıştırılırsa, menünün bu yerine, echo komutunu kullanarak, "Bölüm 2" yazısını gösteren sıradan HTML etiketleri eklenir.

Eko "

Bölüm 2

";

başka// "aksi takdirde" anlamına gelir - koşul karşılanmazsa ne olur? Bu durumda koşul yerine getirilmezse “Bölüm 2” yazısı ana sayfaya yönlendiren bir bağlantı olacaktır.

Eko "

Bölüm 2

";

Tekrarlama 3

1) Açılış dosya 3.php ve değişkeni ayarlayın.

$ana = "Bölüm 3";

2) Menu.html dosyasına bağlantı yerine koşul içeren kodu ekliyoruz Bölüm 3 değişiklikler şunlardır:

if ($master == "Bölüm 3")// bu durum. Çalıştırılırsa, menünün bu yerine, echo komutunu kullanarak, "Bölüm 3" yazısını gösteren sıradan HTML etiketleri eklenir.

Eko "

Bölüm 3

";

başka// "aksi takdirde" anlamına gelir - koşul karşılanmazsa ne olur? Bu durumda koşul yerine getirilmezse “Bölüm 3” yazısı ana sayfaya yönlendiren bir bağlantı olacaktır.

Eko "

Bölüm 3

";

Sonuç olarak: bu tür menülerde bağlantılar yerine

Ev


Bölüm 1

Bölüm 2


Bölüm 3

Php ile ilgili bu ders, site ziyaretçilerinden gelen çok sayıda isteğe yanıt olarak yazılmıştır ve php'de bir site için dinamik bir menünün nasıl oluşturulacağını öğrenmek için pratik bir kılavuzdur.

Bir sonraki web yöneticisinin hile sayfası size PHP'deki her sayfa için nasıl benzersiz başlıklar, açıklamalar ve anahtar kelimeler oluşturacağınızı anlatacak.

Tüm site şablonu ve php menü dosyalarını içeren bir arşiv indirebilirsiniz. Programlamaya yeni başlayanlar için önerilir.

PHP'yi ciddi şekilde incelemeye hazırsanız Popov'dan daha iyi bir video kursu bulmak zordur. Çok fazla tecrübesi ve iyi bir tarzı var.

]]> ]]>

Geçenden önceki blog makalemde, WordPress'in en son sürümünün (oluşturmak ve yönetmek için özel bir mekanizma) ilginç yeniliklerinden bahsetmiştim. Artık sıradan kullanıcıların, yalnızca sayfalardan veya blog kategorilerinden oluşmayan, aynı zamanda herhangi bir URL'ye bağlantılar da içerebilen, değişen karmaşıklığa sahip menüler oluşturması çok daha kullanışlı ve kolay hale geldi. Menüyü şablonda görüntülemek için özel bir wp_nav_menu işlevi kullanılır - bugün size bundan bahsedeceğim.

WordPress admin’de menü bölümü yoksa, function.php dosyasına özel kod ekleyerek aktif hale getirebilirsiniz.

Burada ilk olarak oluşturduğumuz menünün adı yer alıyor. Bu, genel durumda widget'sız bir fonksiyonun kullanımıdır; orada onlarla biraz farklı çalışmanız gerekecektir. Bununla birlikte, wp_nav_menu işlevi bağımsız değişkenler olmadan çıkarılabilir, bunun sonucunda farklı durumlar "incelenir" - ilk olarak, en az bir menü öğesi belirtilmişse menü adına göre bir eşleşme, aksi takdirde boş olmayan bir menü basitçe görüntülenecektir, vb. Ancak yine de, yukarıdaki kodu kullanmanızı ve argümansız fonksiyonun ne çıktı vermesi gerektiğini çözmemenizi tavsiye ederim. Sözdizimi aşağıdaki gibidir:

Burada aşağıdaki parametreler kullanılır:

$menü— menü için seçilen tanımlayıcı — kimlik, bilgi veya menü adı.

$konteyner- UL menüsü, bu ayar kullanılarak varsayılan olarak bir DIV konteynerine "sarılır".

$container_class- konteyner sınıfını belirtir, varsayılan olarak değeri menu-(menu slug)-container'dır, yani bizim durumumuzda örneğin bir menu-first-container sınıfı olacaktır.

$container_id— kapsayıcıya varsayılan olarak belirtilmeyen bir kimlik ekleyebilirsiniz.

$menu_class— UL menü öğesinin sınıfı, değeri menu'dur.

$menu_id— ul öğesinin kimliği, varsayılan olarak menu-(slug) şeklindedir

$yankı— Menüyü görüntülemek istemiyor ancak işlevin değerini döndürmek istiyorsanız bu ayar için 0 değerini kullanın.

$geri dönüş_cb— menü mevcut değilse wp_page_menu işlevi çağrılır.

$önce— A bağlantısından önce görüntülenen metni ayarlar.

$link_before— belirtilmemiş olan bağlantı metninden önceki ifadeyi görüntüler.

$link_after— bağlantı metninden sonra görüntülenir, yine boştur.

$derinlik— menüyü görüntülemek için hiyerarşi düzeylerinin sayısını ayarlar; varsayılan değer olan 0, tüm menünün görüntülenmesini sağlar.

$yürüteç- muhtemelen ileri düzey geliştiricilerin daha çok ihtiyaç duyduğu bir tür anlaşılmaz özel "yürüteç nesnesi".

$theme_location— kullanıcının seçebilmesi için menünün kullanılacağı tema konumu, Register_nav_menu() aracılığıyla etkinleştirilmelidir. Ayrıca görünüşe göre widget'larla çalışırken bir tür tamamen net olmayan ayar.

wp_nav_menu işlevini kullanma örnekleri

Kodda verilen en basit kod şudur:

DIV kabını menüden çıkarma

"")); ?>

Prensip olarak WordPress 3.0 menüsünün oluşturulması ve yönetilmesinde karmaşık bir şey yoktur. Geliştiriciler çalışma prosedürünü önemli ölçüde basitleştirdi ve bu gezinme öğesinin yeteneklerini genişletti. Çözüm genellikle çeşitli şablon görevlerinde, örneğin mobil ve masaüstü sürümler için oluştururken kullanılır. Biraz sonra konuyla ilgili birkaç pasaj daha ekleyeceğim.

Not: Koruma. SEO ile ilgili sorularınızın yanıtlarını bulabileceğiniz, SEO konusunda web yöneticileri için ilginç ve faydalı bir blog.
Aweb şirketi uzun süredir web sitesi tanıtımı, optimizasyonu ve internette arama motoru tanıtımı alanında kendisini çok iyi bir şekilde kanıtlamıştır.

Hiçbir web sitesi navigasyon olmadan veya onların deyişiyle "site menüsü" olmadan tamamlanmış sayılmaz. Yani site menüsü ağaç şeklinde tek seviyeli veya çok seviyeli olabilir. Tek seviyeli bir menü ile uygulama açısından özel bir zorluk yoksa, çok seviyeli bir menü oluştururken dikkatli düşünmeniz gerekir.

Bu görevdeki en önemli şey çok seviyeli menümüz için veritabanını tasarlamaktır. Üç alanlı bir Kategoriler tablosu oluşturalım İD, başlık, ebeveyn Nerede:

  • İD- tanımlayıcı
  • Başlık- Menü adı
  • Ebeveyn- Varsayılan kategori üst öğesi 0

Alan menünün dallandırılmasından sorumludur Ebeveyn Eğer Ebeveyn = 0, bu durumda bu kategori üst kategoridir. Alt kategoriye alt nesil eklemek için ana alanda belirtmeniz gerekir. İD doğru ebeveyn. Örneğin:

Kategorili tablolar

Tablodan da görülebileceği gibi ana kategori Arabalar iki torun var - bu Mazda Ve honda alana göre ilgili Ebeveyn. Ve kategori Motosikletler iki torun var Kawasaki Ve harley. Aynı zamanda, Tekneler kategorisinin soyundan gelenler yoktur. Umarım kategorileri nasıl bağlayacağınızı anlamışsınızdır.

Daha sonra kelimelerden pratiğe geçiyoruz. Kategoriler tablosu oluşturalım.

'Kategoriler' MEVCUT DEĞİLSE TABLO OLUŞTURUN ('id' int(10) unsigned NOT NULL AUTO_INCREMENT, 'title' varchar(255) NOT NULL, 'parent' int(10) unsigned NOT NULL, PRIMARY KEY ('id')) ENGINE=MyISAM VARSAYILAN CHARSET=utf8 AUTO_INCREMENT=20 ; -- -- `kategoriler` tablosundan veri dökümü -- `kategoriler`e INSERT ("id`, `title`, `ebeveyn`) 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, "Tekneler", 0), (12, "Liftback" , 8), (13, "Geçiş", 8), (14, "Beyaz", 13), (15, "Kırmızı", 13), (16, "Siyah", 13), (17, "Yeşil" , 13), (18, "Mazda CX", 3), (19, "Mazda MX", 3);

Çalışma algoritması aşağıdakilerden oluşur:

Veritabanına bağlantı oluşturma

query("İSİMLERİ AYARLA "utf8""); /* * Bu, bunu yapmanın "resmi" nesne yönelimli yoludur * ancak $connect_error, PHP 5.2.9 ve 5.3.0 sürümlerine kadar çalışmadı. */ if ($mysqli->connect_error) ( die("Bağlantı hatası (" . $mysqli->connect_errno . ") " . $mysqli->connect_error); ) /* * Sürümlerle uyumluluktan emin olmanız gerekiyorsa 5.2 .9'dan önce, * bu kodu kullanmak daha iyidir */ if (mysqli_connect_error()) ( die("Bağlantı hatası (" . mysqli_connect_errno() . ") " . mysqli_connect_error()); )

Kategoriler tablosundan veri almak için fonksiyon yazma

//Menümüzün dizisini veri tabanından dizi olarak alıyoruz function getCat($mysqli)( $sql = "SELECT * FROM `categories`"; $res = $mysqli->query($sql); //Bir dizin oluştur dizi burada dizinin anahtarı menü kimliğidir $cat = array(); while($row = $res->fetch_assoc())( $cat[$row["id"]] = $row; ) return $ kedi )

Bunun gibi bir dizi elde ederiz; burada dizi anahtarı kategori kimliğidir.

Tommy Lacroix'den masif ahşap yapı işlevi

//Tommy Lacroix dizisinden bir ağaç oluşturma işlevi function getTree($dataset) ( $tree = array(); foreach ($dataset as $id => &$node) ( //Ek yoksa if ( !$node[" parent"])( $tree[$id] = &$node; )else( //Çocuklar varsa, $dataset[$node["parent"]]["childs dizisi boyunca döngü yapın "][$id] = &$ düğüm; ) return $ağaç;

Ağaç şeklinde bir dizi elde ediyoruz

Komut dosyasının tamamı

query("İSİMLERİ AYARLA "utf8""); /* * Bu, bunu yapmanın "resmi" nesne yönelimli yoludur * ancak $connect_error PHP 5.2.9 ve 5.3.0 sürümlerine kadar çalışmadı. */ if ($mysqli->connect_error) ( die("Bağlantı hatası (" . $mysqli->connect_errno . ") " . $mysqli->connect_error); ) /* * Sürümlerle uyumluluktan emin olmanız gerekiyorsa 5.2 .9'dan önce, * bu kodu kullanmak daha iyidir */ if (mysqli_connect_error()) ( die("Bağlantı hatası (" . mysqli_connect_errno() . ") " . mysqli_connect_error()); ) //Diziyi al menümüzün veritabanından bir dizi işlevi olarak getCat($mysqli)( $sql = "SELECT * FROM `categories`"; $res = $mysqli->query($sql); //Dizi anahtarının bulunduğu bir dizi oluşturun menü kimliğidir $cat = array(); while ($row = $res->fetch_assoc())( $cat[$row["id"]] = $row; ) return $cat; Tommy Lacroix işlevinden bir diziden bir ağaç oluşturma getTree($dataset) ( $tree = array(); foreach ($dataset as $id => &$node) ( //Ek yoksa if (!$node[ "parent"])( $tree[$id] = &$node; )else( //Eğer soyundan gelenler varsa, o zaman $dataset[$node["parent"]]["childs"][ dizisini yineleyelim $id] = &$node; ) return $tree ) //Verilerle hazırlanmış bir dizi alın $cat = getCat($mysqli); //Bir ağaç menüsü oluştur $tree = getTree($cat); //Bir menüyü ağaç biçiminde görüntülemek için şablon işlevi tplMenu($category)( $menu = "
  • ". $kategori["başlık"].""; if(isset($kategori["çocuklar"]))( $menu .= "
      ". showCat($category["childs"]) ."
    "; ) $menü .= "
  • "; return $menu; ) /** * Şablonumuzu yinelemeli olarak okuyun **/ function showCat($data)( $string = ""; foreach($data as $item)( $string .= tplMenu($item); ) return $string; ) //HTML işaretlemesini al $cat_menu = showCat($tree);
      ".$cat_menu."
    "; ?>

    İşin sonucu

    Yönetici paneli için PHP + MySQL'de çok düzeyli menü

    Bu menüyü sitenizin yönetici panelinde kullanmak istiyorsanız birkaç işlevi yeniden yazmanız gerekir. tplMenü(), showCat().

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

    İşin sonucu

    Arabalar → Mazda →→ Mazda 3 →→→ Sedan →→→ Hatchback →→ Mazda 6 →→→ Liftback →→→ Crossover →→→→ Beyaz →→→→ Kırmızı → →→→ Siyah →→→→ Yeşil →→'i seçin Mazda CX →→ Mazda MX → Honda Motosikletler → Kawasaki → Harley Tekneler

    Çünkü menu.php modülünün içeriğini ortaya çıkarır. Aşağıda PHP'de not defterinde sıfırdan yazılan kendi menü geliştirmemizi sunacağız.

    Bu kod, özellikle özel motorlara sahip dinamik siteler için yararlı olacaktır. Ufak tefek farkları olan iki kod seçeneği sunacağım (farklılıklar daha sonra açıklanacaktır).

    Başlangıç ​​​​olarak bu menünün uygun olduğu sitenin yaklaşık yapısını vereceğim. Site yapısı şu şekilde görünmelidir (klasik görünüm):

    /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

    Site ayrıca bölümler için alt bölümler de içerebilir:

    /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

    Bu yapı bizim menümüzde de ufak farklılıklarla işe yarayacaktır.

    PHP'de menü için ayrı bir dosya oluşturmanızı öneririm. Örneğin menu.php böyle bir dosya için harika bir isim olacaktır. Menüyü uygulamak için, hemen az ya da çok güzel hale getirmek için CSS'de bir menü stili de sağlanmıştır. Doğal olarak sitelerin tasarımları çok farklı olduğundan bu tarz sadece referans amaçlı verilmiştir.

    CSS'de menü stili kodu:

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

    Şimdi PHP'de bir menü uygulamak için biraz basitleştirilmiş ilk seçeneğe bakalım.

    PHP'deki menü kodunun ilk versiyonu

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

    Menü iki bölüme ayrılabilir. İlki, bölümlere bağlantılar içeren bölümlerimizin adlarını içeren $array_menu bilgi dizisini içerir. Bu verileri mySQL veritabanına girme seçeneği var ancak örnek çok küçük olduğu için bunda belirli bir nokta yok, dolayısıyla bu iş hızını etkilemeyecektir.

    İkinci bölüm for döngüsü aracılığıyla menünün çıktısını içerir. Döngü, site adresini $array_menu dizisindeki adresle karşılaştırır. Bir eşleşme varsa, özel bir aktif sınıfla bir sonraki menü bölümünü görüntüleriz:

  • , aksi halde sadece
  • . Bu, kullanıcının bulunduğu menünün bölümünü bir miktar renkle vurgulamamızı sağlar. Bana göre bu her site için gerekli bir şey, böylece kullanıcı hangi bölümde olduğunu anlayabilir.

    Menü sitede görüntülendiğinde dizideki sıra korunacaktır. Yani dizi menünün görüntüleneceği sıraya göre doldurulmalıdır.

    Not:
    Bölüm başlıklarının URL'leri (adresleri) şöyle görünüyorsa:
    /Bölüm 1
    veya bunun gibi
    /razdel_1/nazvanie_razdela.html
    o zaman array_menu'da tam bir eşleşme yazmanız gerekir:
    $array_menu[$i]["url"]="/razdel_1"
    veya ikinci durum için:
    $array_menu[$i]["url"]="/razdel_1/nazvanie_razdela.html";

    İlk menü seçeneği nasıl çalışır?
    Yalnızca bölüm başlığı adresindeyseniz menüyü vurgular. Örneğin sayfa adresi /razdel_1/articles_1.html ise menü hiçbir şekilde vurgulanmayacaktır.

    Kodun ikinci sürümü, birincisinin değiştirilmiş bir sürümüdür ve bölümlerde yer alan makalelerde bile menüleri vurgulama olanağı sağlar.

    PHP'deki menü kodunun ikinci versiyonu

    "; for ($i=0;$i ": "
  • "; echo "".$array_menu[$i]["title"]."
  • "; ) else ( echo ($URL) == ($array_menu[$i]["url"]) ? "
  • ": "
  • "; echo "".$array_menu[$i]["title"]."
  • "; ) ) Eko ""; ?>

    Bu yazıda nasıl oluşturabileceğinizi göstereceğim PHP ve MySQL'de çok düzeyli menü. Elbette bunu oluşturmak için birçok seçenek sunabilirsiniz, ancak bu konuyla ilgili sorularınızın sayısına bakılırsa bir örneğe ihtiyacınız var. Ve bu yazıda bunu vereceğim. Hemen belirteyim ki bu yazı sadece bilenler için anlamlıdır PHP ve nasıl çalışılacağını biliyor MySQL. Herkesin önce bunu yapması veya bu konuda bazı kitaplar okuması gerekiyor. PHP ve MySQL.

    Öncelikle veritabanında aşağıdaki alanları içeren bir tablo oluşturalım:

    • İD- benzersiz tanımlayıcı.
    • başlık- menüdeki bağlantı bağlantıları.
    • bağlantı- menü öğesinin yönlendirileceği adres.
    • ebeveyn_kimliği- ebeveyn kimliği. Ana öğe yoksa NULL olacaktır (veya 0 da girebilirsiniz).

    Masayı hazırladık şimdi sıra geldi PHP kodu. Tam dolu PHP kodu aşağıda verilmiştir:

    $mysqli = new mysqli("localhost", "root", "", "db"); //Veritabanına bağlanın
    $result_set = $mysqli->query("SELECT * FROM `menü`"); // Tablodaki tüm kayıtları menü ile seçiyoruz
    $öğeler = dizi(); // Menü öğeleri için dizi
    while (($row = $result_set->fetch_assoc()) != false) $items[$row["id"]] = $row; // Diziyi veritabanından bir örnekle dolduruyoruz
    $çocuklar = dizi(); // Çocuk elemanları ebeveynleriyle eşleştirmek için dizi
    foreach ($items as $item) (
    if ($item["parent_id"]) $childrens[$item["id"]] = $item["parent_id"]; // Diziyi doldur
    }
    function printItem($öğe, $öğeler, $çocuklar) (
    /* Menü öğesini göster */
    Eko "

  • ";
    echo "".$item["başlık"]."";
    $ul = yanlış; // Çocuklar işlendi mi?
    iken (doğru) (
    /* Tüm çocukları aradığımız sonsuz bir döngü */
    $anahtar = array_search($item["id"], $çocuklar); // Bir alt öğe aranıyor
    if (!$anahtar) (
    /* Çocuk bulunamadı */
    if ($ul) echo ""; // Alt öğeler görüntüleniyorsa listeyi kapatın
    kırmak; // Döngüden çık
    }
    unset($çocuklar[$anahtar]); // Bulunan öğeyi kaldırın (böylece tekrar görüntülenmez)
    if (!$ul) (
    Eko "
      "; // Henüz alt öğe yoksa dahili listeyi başlatın
      $ul = doğru; // Bayrağı ayarla
      }
      echo printItem($öğeler[$anahtar], $öğeler, $çocuklar); // Tüm alt öğeleri yinelemeli olarak göster
      }
      Eko "";
      }
      ?>

      Bu kod tamamen çalışıyor, ancak kimsenin bu şekilde yazmadığını anlamalısınız (özellikle çıktı olarak) Eko HTML etiketleri). Ve göreviniz bu koddan algoritmayı almaktır, kodun kendisini değil. Daha sonra bu algoritmayı motorunuza bağlayın. Çıkış kodunu dikkatlice yorumlamaya çalıştım PHP ve MySQL'de çok düzeyli menü, ancak elbette en şeffaf olanı değildir ve oldukça iyi bir başlangıç ​​​​bilgisi gerektirir. Hala iyi bilmiyorsanız PHP ve MySQL, o zaman ilk önce bunu geçmenizi şiddetle tavsiye ederim