Доброе время суток голлЭги значит есть вот такая вот конструкция, собственно есть index.php где заинклуден include 'inc/headers.inc.php'; а ниже исходник headers.inc.php Код (Text): <? $title = 'Супер-мега сайт'; $header = "Добро пожаловать на наш сайт!"; @$id = strtolower(strip_tags(trim($_GET['id']))); // Инициализация заголовков страницы switch($id){ case 'contact': $title = 'Контакты'; $header = 'Обратная связь'; break; case 'about': $title = 'О нас'; $header = 'О нашем сайте'; break; case 'info': $title = 'Информация'; $header = 'Информация'; break; case 'log': $title = 'Журнал посещений'; $header = 'Журнал посещений'; break; case 'gbook': $title = 'Гостевая книга'; $header = 'Наша гостевая книга'; break; } Нотис ругаеться мол - че эта !? Notice: Undefined index: id in C:\wamp\www\2PHP\inc\headers.inc.php on line 4 когда я предварительно инициализирую $_GET['id'], нотис исчезает но свич не хочет пахать, если в свиче выставляю дефолтным значением index.php, тоже самое. чиота я совсем тупой, допоможите разобраться нубу, единственно что мне пришло в голову, так это заглушить нотис собакой.
так гетом передаю Код (Text): <li><a href='index.php'>Домой</a></li> <li><a href='index.php?id=contact'>Контакты</a></li> <li><a href='index.php?id=about'>О нас</a></li> <li><a href='index.php?id=info'>Информация</a></li> <li><a href='test/index.php'>Он-лайн тест</a></li> <li><a href='index.php?id=gbook'>Гостевая книга</a></li> <li><a href='eshop/catalog.php'>Магазин</a></li> далее подхватывает include 'inc/routing.inc.php'; Код (Text): <?php switch($id){ case 'contact': include 'inc/contact.inc.php'; break; case 'about': include 'inc/about.inc.php'; break; case 'info': include 'inc/info.inc.php'; break; case 'log': include 'inc/view-log.inc.php'; break; case 'gbook': include 'inc/gbook.inc.php'; break; default: include 'inc/index.inc.php'; } ну а с заголовками справляется headers.inc.php но на заглавное станице нотис ругаеться "Notice: Undefined index: id in C:\wamp\www\2PHP\inc\headers.inc.php on line 4" Добавлено спустя 6 минут 43 секунды: ну в общем как-то так Код (Text): if(!isset($_GET['id'])) $_GET['id']=''; Добавлено спустя 10 минут 34 секунды: но если я делаю вот так Код (Text): <? $title = 'Супер-мега сайт'; $header = "Добро пожаловать на наш сайт!"; //if(!isset($_GET['id'])) $_GET['id']=''; $id = strtolower(strip_tags(trim($_GET['id']))); // Инициализация заголовков страницы switch($id){ case 'contact': $title = 'Контакты'; $header = 'Обратная связь'; break; case 'about': $title = 'О нас'; $header = 'О нашем сайте'; break; case 'info': $title = 'Информация'; $header = 'Информация'; break; case 'log': $title = 'Журнал посещений'; $header = 'Журнал посещений'; break; case 'gbook': $title = 'Гостевая книга'; $header = 'Наша гостевая книга'; break; } то свич проходит лесом, т.е. не работает, что-то я вообще наркоман... Добавлено спустя 14 минут 55 секунд: ну тут в принципе все ясно, парсер ругаеться мол, че эта у тебя переменная id не проиницализированна, мы то когда заходит на индекс get запрос не иницализируеться, соответственно парсер и ругаеться - ХА ХО Дорогой наш пыхыпы if(!isset($_GET['id'])) $_GET['id']=''; Вопросы ?
Дорогой мой Смит, он как раз таки и ругается из-за того что там ничего нету, "Notice: Undefined index: id in..." Это не совсем ругать, это нотис (парсер) подсказка, не ошибка, другими словами пыхыпы нам говорит: мол смотри, ты обращаешься к несуществующему индексу или присваиваешь несуществующий индекс, зачем оно тебе нужно ? А нужно оно нам, как раз таки для того чтобы если вдруг, в том индексе появяться нужные нам данные, переловить их и запустить последующую щестирёнку в общей структуре. Я прокололся в том что предварительно иницализировал переменную, соответственно та вечно будет присваивать значение когда компилятор будет бежать по скрипту, поэтому и свич не проходил. но мы ребята не глупые, и забили следующее условие, господин пыхыпы, если индекс $_GET['id'] не изменялся, задай ему значение string (пустая строка) в другом случае если в него приходит значение поподающее под условия свича, происходит волшебство. Госпадин пыхыпы стал строже ну оно и к лучшему, чем четче и типизированей тем чаще надо думать и меньше попаболи.
Многоуважаемый AndyTitan я бесконечно рад вашему внезапному просветлению еще немного и вы постигните тайну сотворения мира но никому не рассказывайте эту сокравенную тайну не отбирайте у даоских манахов цель их жизни. Ругаться пых на неопределенный индекс может если его нет. Поэтому я и просил вашу особу это проверить и осознать эту до идиотизма простую истину. Че ты там прокололся - кроме тебя врядли кто поймет.
посаны че делать, тут кароче какой то чувак с двумя пилюлями стоит в одной руке красная в другой синяя, а я недавно поужинал.
К примеру так Ссылки и обрабочик на одном файле: Код (PHP): <?php if(isset($_GET['id'])) $id=$_GET['id']; else $id=''; //следующюю строку пробуй (//$id='';) расскомментировать //$id=''; switch($id) { default:echo'A'; break; case'b':echo'B';break; case'c':echo 'C';break; } ?> <a href="?id=a">aaa</a> <a href="?id=b">bbb</a> <a href="?id=c">ccc</a> Код (PHP): <?php $a='a'; $a='A'; //выводит А а не а echo $a; //switch поэтому не работал : "переопределил"
шо ты муть на людей наводишь, в пхп предварительная инициализация делаеться следующей константов "@" к примеру Код (Text): @$_GET['id'] можешь сам попробовать зачем писать еще две строки ?
Какой-то бред несете. Во первых это никакая ни константа, а во вторых это оператор подавления ошибок. А теперь вдумайтесь, прежде, чем его писать. И писать его ради избавления от ошибок не рекомендуется (если вы не делаете свои обработчики). И вот за @$_GET['id'] нужно отрывать руки по плечи и вставлять зубочистки.
Вы курите неправильную траву. Курите вот это - http://goo.gl/gMnT15 Про терминологию я вообще молчу. Уважаемый, вы сами прописываете значение переменной, а потом удивляетесь, почему оно там прописано? А если не прописываете, что удивляетесь, почему пых ругается? Тысячи две лет назад люди придумали конструкцию для обработки вероятно инициализированных переменных: Код (PHP): if (isset($_GET['id'])){ switch ($_GET['id']){ case 'trololo': break; default: echo 'Вы сломали интернет!'; } } И так далее в том же стиле. Иногда вместо isset() разумнее поставить empty(); Но меня empty бесит из-за невозможности отдать ему пачку переменных разом. isset же без проблем жрет переменные пачками через запятую в неограниченных количествах. И в таком случае @ юзать нельзя. Если у тебя свой обработчик собран, то ошибки в браузер тоже не вывалятся, если ты сам того не захочешь. Они полностью уходят тебе под управление. @ - это невероятный костыль, которым надо бить по голове, пока не просияет в глазах озарение. Его можно использовать на стадии разработки как заглушку, не более того. Но и этого следует избегать. Лучше делать заглушки в виде проверок условия. Которые, потом, естественным образом, уйдут в код и будут гарантировать предсказуемое его поведение.