Здравствуйте. Не могу сформулировать правильный запрос в google, поэтому пишу сюда. Необходимо сделать сайт с единым меню повсюду. Независимо от того, на какой бы странице я бы ни находился - меню и стиль должны быть одни. Есть обработчики на php, стили css, скрипты js, Так вот , как мне всю эту штуку соединить вместе и сделать так, чтобы каждый раз в php странице мне не приходилось бы писать кучу html кода. Буду рад получить ссылочку, где доступно будет разжевано.Спасибо.
)))) Я вот делал вот так, но исключительно интуитивно. Думал есть другой способ. Код (PHP): <html> <head> <title>справочник</title> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> <link rel="stylesheet" href="c:/web/www/eclipse/login/style/main.css" type="text/css"> <link rel="shortcut icon" href="images/phone.ico" type="text/x-ico"> </head> <body> <div class="header"> <?php include 'includes/header.inc';?> </div> <div> <table align="center" class="main"> <tr class="header"> <td> <?php include 'includes/menu.inc';?> </td> </tr> <tr class="main"> <td colspan="100%"> <?php // Открытие страницы приветствия. кнопка "главная" основного меню. if (isset($content))echo $content; // Вывод всех записей. кнопка "справочник" основного меню. if (isset($_POST['all'])) {require_once 'allnumbers.php'; view();} // Нахождение сотрудника по фамилии. кнопка "найти" основного меню. if (isset($_POST['search'])) {require_once 'by_surname.php';search();} // Изменение данных сотрудника. кнопка "изменить" страницы справочник. if (isset($_GET['edit'])) {require_once 'edit_profile.php';edit();} // Добавление нового сотрудника. кнопка "Добавить" страницы справочник. if (isset($_POST['add'])) {require_once 'addworker.php';add();} // Добавление нового сотрудника. кнопка "Добавить" страницы справочник. if (isset($_GET['adddata'])) {require_once 'addworker.php';add();} // Удаление сотрудника и все данных о нем изо всех таблиц. кнопка "удалить профиль" страницы редактирование данных. if (isset($_POST['delete'])) {require_once 'delete.php';del();} // Добавдение нового номера для сотрудника. if (isset($_POST['addnumber'])) {require_once 'addnumber.php';addnumber();} // Обновление данных сотрудника. if (isset($_GET['update'])) {require_once 'update.php';update();} // Изменение номера сотрудника if (isset($_GET['edit_number'])) {require_once 'edit_number.php';edit_number();} // Обновление номера сотрудника if (isset($_POST['update_number'])) {require_once 'update_number.php';update_number();} // Удаление номера сотрудника. if (isset($_POST['delete_number'])) {require_once 'delete_number.php';delete_number();} // Изменение емайла сотрудника if (isset($_GET['edit_email'])) {require_once 'edit_email.php'; edit_email();} // Обновление email сотрудника if (isset($_GET['update_email'])) {require_once 'update_email.php';update_email();} // Удаление email сотрудника if (isset($_GET['delete_email'])) {require_once 'delete_email.php';delete_email();} // Добавдение нового email для сотрудника. if (isset($_POST['addemail'])) {require_once 'addemail.php';addemail();} ?> </td> </tr> <tr class="footer"> <td colspan="100%"> <?php include 'includes/footer.inc';?></td> </tr> </table> </div> </body> </html>
я вот и спрашиваю, как можно сделать красиво, чтобы мой код не вызывал подобных ассоциаций))) и можно развернутый ответ, почему жесть?
На мой взгляд include - совершенно приемлемый способ. В MVC фреймворках тоже инклуды точно так же используются. Другое дело что движок это дело компилит и в кеш кладет как надо, но сам инклуд - точно такой же как в примере выше )))
я вот с этого места решил дальше не читать))) а вот этот паравоз: ... заслуживает применения 1 ключа с множеством значений и проверкой switch: Код (PHP): $mode = isset($_POST['mode'])?$_POST['mode']:'default'; switch($mode) { case 'addemail': ... .. .. . break; case 'addnumber': ... .. .. . break; .... ... .. default: die('bad mode'); break; } Добавлено спустя 2 минуты 39 секунд: вы запутали меня. конечно $_GET['mode'] а пост-данные для немного другого надо использовать
Почему? Насчет switch спасибо. Намного читабельность повышается. А про POST и GET скажу одно, - get я использовал,чтобы в адресной строке увидеть правильно ли ссылка формируется, да и вообще механизм понять, да так и не поменял обратно.
а надо (ИМХО) именно GET всегда в браузере и в журналах апача мы будем видеть какой "режим" запрошенной страницы. еще в GET - доп.параметры типа идентификатора сущности, с которой мы работаем. а в POST только отправляемая форма. если что-то пошло не так - делаем var_dump($_POST) и читаем какие данные отправились в запросе зная какой режим у нас выбран и с чем мы должны работать. если увидели что сам массив правильный - вчитываемся и дебажим кусок кода относящийся к этому конкретному режиму работы, проверяя на всех этапах как и с чем он взаимодействует, как меняются данные и тд и тп. отладили - весь дебаг закомментировали/удалили и считаем скрипт рабочим.
во-первых вам вобще не нужно после инклуда писать вызов функции. вы можете содержимое функции выволить в файл и при инклуде он исполнится. во-вторых почитайте про switch. он используется вместо десятка ифов. в-третьих, организуйте парсинг урла через $_SERVER['REQUEST_URI'] - вас за это будут уважать. на пятерку: избавиться вобще от свича и ифов, свалив все страницы в один каталог.
но тогда будут запускаться сразу все мои скрипты. мне ведь нужно, чтобы они выполнялись по нажатию на кнопку. как быть в этом случае? про switch уже написали, спасибо, буду иметь в виду. этой функцией, наряду с basename() я буду узнавать имя страницы. а как потом это использовать? тут вроде попроще. подключить файл с функциями и делать вызов функций из этого файла, да?
инклудишь файл и он выполняется. в чем беда? смотришь запрошеный урл, разбиваешь эксплодом и дальше либо в свич, либо просто смотришь наличие файла с таким именем и его инклудишь. я в шоке нахрен. это диплом? а пять лет вы где были? или у вас инст говно и ходить в него не требовалось?
главное, что я диплом сам пишу. а загвоздка как раз возникла в довольно простом вопросе, как это часто и бывает.спасибо всем откликнувшимся.