Многоуровневое меню на PHP и MySQL. Построение и показ меню Получаем массив вот такого вида, где ключ массива это ID категории

Апр 23 2017

В предыдущих уроках мы разобрали на примерах, что такое массивы. В этом уроке мы используем массивы на практике для создания меню на сайте.

Чем они удобнее обычных HTML-тегов?

Ну, допустим, наш сайт имеет 100 страниц, на каждой из которых имеется одно и то же меню. И вдруг нам понадобилось изменить пункты меню. Используя только HTML, нам придётся делать правки на 100 страницах сайта, это очень много. Так вот на помощь в таких ситуациях к нам приходит PHP. Достаточно будет поменять пункты меню всего лишь один раз в одном файле.

А теперь поехали.

На локальном хостинге в папке “domains создаём папку под названием “array - menu . local ”.

В этой папке создаём четыре файла: index . php , about . php , contact . php и menu . php .

!!! Синтаксис файлов должен быть PHP .

В файле index.php пишем простой HTML каркас.




charset ="utf-8" >



Главная


include ("menu.php" );
?>

Копируем этот код в файлы about.php и contact.php. Меняем только названия страниц в теге

.

Пишем код для меню.

В файле menu.php пишем ассоциативный массив.

$menu = array (
"index"=> "index.php",
"about"=> "about.php",
"contacts"=> "contact.php"
);
?>

Ниже с помощью тегов HTML пишем меню.

В браузере мы увидим обычное меню в виде списка.

Кликая на любом пункте меню мы перейдём на соответствующую страницу, меню при этом будет на всех страницах.

Теперь усложним задачу. Всё удаляем из файла menu.php и...

Пишем многомерный массив.




charset ="utf-8" >
<span>Использование массива для вывода меню на сайте. </span>


$menu = array (
array ("link"=> "Главная", "href"=> "index.php" ),
array ("link"=> "О нас", "href"=> "about.php" ),
array ("link"=> "Контакты", "href"=> "contact.php" )
);
?>



И на последнем этапе...

Отрисовываем меню с помощью цикла foreach .

Удаляем из файла menu.php список

    и вместо него пишем следующий код.

    echo "

      " ;
      foreach ($menu as $item ){
      echo "
    • {$item }
    • " ;
      }

      В браузере увидим тот же результат.

      Чтобы изменить пункты меню, достаточно изменить их в файле menu.php всего один раз.

      Если вас интересует ответ на вопрос как создать меню сайта, то вы пришли по верному адресу.

      Мы рассмотрим создание динамического меню на php, написанное специально для чайников в программировании, а также для тех, кто еще в танке.

      Урок 3. Меню на php для сайта делаем динамичным - чайникам

      Создадим будущий макет нашего сайта. Для этого нарисуем в фотошопе супер красивый сайт и разрежем на кусочки. Представим, что шапка, логотип, меню и подвал не написаны словами, как в данном примере, а это изысканно и красочно оформленные элементы сайта.

      Создадим для примера три страницы и назовем их Раздел 1, Раздел 2, Раздел 3

      Этот текст для разных страниц будет разный, но мы не будем на нем заморачиваться и оставим его как есть на всех страницах.

      Приступим к созданию сайта на php.

      1. Выделим блоки header, logo, menu, footer в отдельные файлы c расширением php или html

      header.html

      logo.html

      menu.html

      footer.html

      Добавим файл с этим текстом, чтобы видеть его на всех страницах. Назовем его text.html

      Примечание. С этого момента дальнейшие записи буду вести непосредственно в файле text.html

      2. Создадим шаблон для нашего сайта на php.

      Для этого поступим просто - сохраним настоящий файл, но уже с расширением php и сотрем все текстовое наполнение. Пусть это не профессионально, зато понятно, а усложнять все будем позже. Сейчас главное понять принцип верстки.

      3. Теперь файл template.html нам не нужен.

      Благодаря ему мы имеем представление о том, как будет выглядеть наш сайт.

      4. Нашим шаблоном является файл template.php

      В него мы сейчас вставим с помощью команды include все элементы сайта.

      5. Создадим три странички, как собирались изначально.

      Раздел 1 , назовем 1.php

      Раздел 2 , назовем 2.php

      Раздел 3 , назовем 3.php

      Для этого можно воспользоваться простейшей командой сохранить как...

      Для самых маленьких поясню: открываем файл template.php , затем нажимаем сохранить как... и сохраняем под названием 1.php , повторяем процедуру и последовательно сохраним страницы сайта 2.php , 3.php

      У нас получилось 3 страницы с одинаковым дизайном. Достаточно вставлять вместо файла text.html другой, дополнять разными картинками или какими-либо html кодами, скриптами и содержимое каждой страницы будет уникальным.

      Внимание!

      Если не будет создан файл index.php для главной страницы, то в браузере, набрав адрес сайта мы не увидим сам сайт, а всего лишь структуру директории (перечень папок).

      Можете посмотреть в денвере и убедиться. Исправим ситуацию - создадим файл index.php и назовем долго не мудрствуя Главная . Заодно создадим файл text-home.html и с помощью команды include вставим на только что созданную главную страницу сайта.

      6. Как просмотреть сайт на php?

      Что получилось - так просто не увидим. Это уже не шаблон с расширением html.

      Но и не проблема. Нам нужен собственный, т.е. локальный сервер на компьютере. Для этого установим денвер и результат своей работы будем смотреть в браузере, не выходя в интернет.

      Вот теперь порядок. Набрала адрес сайта и увидела все только что созданное в нормальном виде с дизайном.

      Теперь возьмемся за php меню сайта.

      1. Откроем файл menu.html и превратим раздел1, 2 и 3 в ссылки по сайту. Ссылки в php создаются по-разному.

      Наша задача - научиться чувствовать сайт, созданный на php. Поэтому ссылки будем делать, как на обычном статичном сайте Раздел 1 и т.д.

      Мне эта процедура создания ссылок безумно нравится в Macromedia Dreamweaver. Успевай жать ОК и пить кофе.

      2. Как сделать ссылку в меню неактивной, если посетитель находится на данной странице.

      Посетителю будет удобнее ориентироваться по сайту зная, на какой именно страинице он находится.

      Если вы выполнили все шаги строго по пунктам, то видите, что у нас все ссылки в меню активны постоянно. Как это исправить?

      Для начала вспомним определение что такое Условные операторы

      – это когда какое-то действие выполняется или не выполняется в зависимости от условий.

      Выполним следующие действия:

      • Нам понадобятся переменные и один условный оператор :

      if ($master == "Главная") // это условие. Если оно выполняется – то в данном месте меню с помощью команды echo вставляются обычные HTML-теги выводящие надпись «Главная».

      echo "

      Главная

      ";

      else //означает «иначе» - что произойдёт, если условие не выполняется. В данном случае при невыполнении условия надпись «Главная» будет ссылкой, ведущей на главную страницу.

      echo "

      Главная

      ";

      • Условие мы придумали, но чтобы проверить переменную нужно её задать.

      Для этого на всех страницах разместим такие блоки кода:

      $master ="Главная";

      $master ="Раздел 1";

      $master ="Раздел 2";

      $master ="Раздел 3";

      Как видно для каждой страницы свой код.

      Итак, наши практические шаги по созданию php меню будут следующие:

      1) Открываем файл index.php

      и вставляем код

      $master ="Главная";

      до места вставки кода, выводящего само меню сайта include "menu.html";
      ?>

      2) Открываем файл menu.html и вставляем код с условием вместо простой html ссылки на главную страницу.

      Смотрим в браузере и любуемся! Если зайдем на главную страницу, то ссылка перестала быть активной!

      3) Повторяем пункт 1 и 2 со страницами 1.php, 2.php, 3.php

      Повторение 1:

      1) Открываем файл 1.php и вставляем до кода, выводящего меню блок с заданной переменной

      $master ="Раздел 1";

      2) Открываем файл menu.html и вставляем код с условием вместо простой ссылки Раздел 1 , внеся следующие изменения:

      if ($master == "Раздел 1") // это условие. Если оно выполняется – то в данном месте меню с помощью команды echo вставляются обычные HTML-теги выводящие надпись «Раздел 1».

      echo "

      Раздел 1

      ";

      else //означает «иначе» - что произойдёт, если условие не выполняется. В данном случае при невыполнении условия надпись «Раздел 1» будет ссылкой, ведущей на главную страницу.

      echo "

      Раздел 1

      ";

      Чудо повторилось! Теперь, если мы находимся на странице Раздел 1 , ссылка в меню не активна.

      Повторенье - мать ученья! Или для тех, кто в танке! Еще раз

      Повторенье 2

      1) Открываем файл 2.php и вставляем код.

      $master ="Раздел 2";

      2) Снова откроем файл menu.html и вставляем код с условием

      if ($master == "Раздел 2") // это условие. Если оно выполняется – то в данном месте меню с помощью команды echo вставляются обычные HTML-теги выводящие надпись «Раздел 2».

      echo "

      Раздел 2

      ";

      else //означает «иначе» - что произойдёт, если условие не выполняется. В данном случае при невыполнении условия надпись «Раздел 2» будет ссылкой, ведущей на главную страницу.

      echo "

      Раздел 2

      ";

      Повторенье 3

      1) Открываем файл 3.php и задаем переменную.

      $master ="Раздел 3";

      2) В файл menu.html вставляем код с условием вместо ссылки Раздел 3 , изменения такие:

      if ($master == "Раздел 3") // это условие. Если оно выполняется – то в данном месте меню с помощью команды echo вставляются обычные HTML-теги выводящие надпись «Раздел 3».

      echo "

      Раздел 3

      ";

      else //означает «иначе» - что произойдёт, если условие не выполняется. В данном случае при невыполнении условия надпись «Раздел 3» будет ссылкой, ведущей на главную страницу.

      echo "

      Раздел 3

      ";

      Итог : мы вместо ссылок в меню такого вида

      Главная


      Раздел 1

      Раздел 2


      Раздел 3

      Этот урок о php был написан по многочисленным просьбам посетителей сайта и является практическим пособием по изучению создания динамического меню для сайта на php.

      Следующая шпрагалка вебмастера расскажет о том, как сделать на php уникальные заголовки, описания и ключевики для каждой страницы.

      Вы можете скачать архив со всеми файлами шаблона сайта и меню php. Новичкам в программировании рекомендуется.

      Если же вы готовы к серьезному изучению php, то лучше видео курса от Попова найти сложно. У него огромный опыт и хороший слог.

      ]]> ]]>

      Именно это мы сейчас и разберем. И так, стоит задача, сделать вертикальное меню, в виде выпадающего списка.

      Как это можно реализовать на PHP? Очень просто! Например, у нас есть файл index.php, который в зависимости от выбранного раздела в выпадающем списке, должен отображать соответствующий контент на странице. Реализуется это следующим образом:

      1. Создаем файлы в формате.html, которые и будут содержать в себе необходимый для вывода контент.

      2. Создаем (пишем) в скрипте index.php необходимые условия, для вывода соответствующей информации.

      3. Рассматриваем созданный скрипт с позиции безопасности выполняемого сценария.

      Ну, вроде, как с теорией закончил, переходим к практике. Сначала создаем статические страницы в формате .html , которые и будут содержать необходимую информацию. Там можно написать все, что душе угодно:) В итоге у нас должно получиться, как минимум два файла first.html и second.html , соответственно потом их можно будет сделать сколько угодно, поняв основной алгоритм работы кода.

      Для вывода выпадающего списка в файле index.php создаем html форму, и ниже пишем PHP скрипт такого содержания:



      Menu PHP


      Выпадающее меню на PHP












      if (isset ($_GET ["where" ]))
      {
      if ($_GET ["where" ]==1 )
      $file = "first.html" ;
      if ($_GET ["where" ]==2 )
      $file = "second.html" ;
      include ($file );
      }
      ?>


      Вот и готов код выпадающего меню, и что самое интересное он будет нормально функционировать, но с точки зрения безопасности, он уязвим.

      Уязвимость данного скрипта заключается в том, что переменная $file остается не инициализирована, и в этом случае значение автоматически созданной переменной попадает сразу в функцию include , а она в свою очередь успешно ее (переменную) подключает и отображает на экране. И это может быть не только файл конфигурации .htaccess . Для того, что-бы взломать данный сценарий, достаточно параметру where передать не предусмотренное кодом значение, ну например 3. А так, как это значение не предусмотрено сценарием, то просто переменная $file не пройдет инициализацию. Поэтому, ей можно будет задать произвольное значение через строку URL.

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

      Но это так, небольшое отступление от темы. 😀

      Вариант решения данной проблемы достаточно прост, переменную $file просто необходимо инициализировать до начала использования, т. е. присвоить ей значение по умолчанию.

      Здесь, если параметр where передан скрипту, то переменная будет инициализирована корректно, иначе просто окажется пустой. Вот такое получилось [безопасное] выпадающее меню на PHP.

      P.S. Создавая сценарии необходимо учитывать и соответственно исключать все возможные векторы атак. Только так можно создать проект, который будет отвечать правилам безопасности и востребован заказчиком. До новых встреч!