Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Закрытая темаСоздание новой темы Создание опроса
> Ошибка! Notice: Undefined index:... Помогите новичку! Вроди делаю все верно. 
:(
    Опции темы
ivanset
Дата 26.11.2005, 01:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 21.11.2005
Где: Украина, Полтава

Репутация: нет
Всего: нет



Пишу свой первый php-сайт.
При вызове сайта (на локалке через EasyPHP) на месте php-кода:
Код

<?
switch ($_GET['page'])
{
case "about": include("inc/about.php"); break;
case "programming": include("inc/programming.php"); break;
.....................................................
default : include("inc/about.php");
}
?>

выдается ошибка: Notice: Undefined index: page in c:\program files\easyphp1-8\www\set company\index.php on line 203.
Код менюшки:
Код

<A href="index.php?page=about" class="menu">О нас ... </A>
<A href="index.php?page=programming" class="menu">Программирование</A>
.......................................................

Но сразу после перехода по ссылке (в меню) все работает!
Я так понимаю, что по умолчанию значение в переменной $page пустое и поэтому ошибка, а далее, когда там занесено имя страницы, все ок.
Тогда я зделал следующее:
Код

$page="about";

... но всеравно не помогает. smile
Помогите, плиз...
PM MAIL ICQ   Вверх
Mal Hack
Дата 26.11.2005, 01:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Ну дык, когда ты заходишь первый раз ты же не передаешь параметр page, а как следствие скрипт не знает такого элемента !!
PM ICQ   Вверх
R.M.
Дата 26.11.2005, 09:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Анархист
****


Профиль
Группа: Участник
Сообщений: 2164
Регистрация: 8.6.2005
Где: Питер

Репутация: -2
Всего: 30



Mal Hack

Цитата(Mal @ 26.11.2005, 02:44)
Ну дык, когда ты заходишь первый раз ты же не передаешь параметр page, а как следствие скрипт не знает такого элемента !!


Но по дефолту ведь стоит about.php


ivanset
поменяй строку
Код

switch ($_GET['page'])

на
Код

switch (@$_GET['page'])



--------------------
Помнишь как бодрили дискотеки прошлого века? Теперь стул, компьютер и нету человека.

Nokia LifeStyle - Всё для смартфонов Nokia 
PM MAIL WWW ICQ   Вверх
Mal Hack
Дата 26.11.2005, 18:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Цитата
Но по дефолту ведь стоит about.php

Мало ли что по дефолту стоит. Это уже другое дело. Варнинг на строке switch'a вылетает.

Цитата
поменяй строку


Цитата
на

Бред.
Надо условие делать. Пусть в этом конкретном варианте это и не так хорошо видно, но надо сразу учиться обрабатывать все исключения.
PM ICQ   Вверх
-=Ustas=-
Дата 26.11.2005, 19:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: 32
Всего: 69



Цитата
Но по дефолту ведь стоит about.php

При чем здесь по дефолту, если данной переменной не существует... Лучше уж тогда так:
Код

if (isset($_GET['page'])) {
    switch ($_GET['page']) {
        case "about": include("inc/about.php"); break;
        case "programming": include("inc/programming.php"); break;
        .....................................................
        default : include("inc/about.php");
    }
}


Или же так:
Код

$page = (isset($_GET['page']))  ? $_GET['page'] : "inc/about.php";
    switch ($page) {
        case "about": include("inc/about.php"); break;
        case "programming": include("inc/programming.php"); break;
        .....................................................
        default : include("inc/about.php");
    }



--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
R.M.
Дата 27.11.2005, 10:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Анархист
****


Профиль
Группа: Участник
Сообщений: 2164
Регистрация: 8.6.2005
Где: Питер

Репутация: -2
Всего: 30



Цитата(Mal @ 26.11.2005, 19:01)
Мало ли что по дефолту стоит.

Цитата
При чем здесь по дефолту


Если нету $_GET['page'] то он выдаст то что по дефолту в switch и выдаст ошибку што такой переменной нету, так зачем именно в этом случае так заморачиваца когда можно просто поставить @? Объясните



--------------------
Помнишь как бодрили дискотеки прошлого века? Теперь стул, компьютер и нету человека.

Nokia LifeStyle - Всё для смартфонов Nokia 
PM MAIL WWW ICQ   Вверх
-=Ustas=-
Дата 27.11.2005, 11:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: 32
Всего: 69



Куксикус, если переменной $_GET['page'] не существует, то программа в switch даже и не зайдет (пролетит мимо), поэтому, следовательно и дефолта никакого не будет!!! Блок из дефолта выполнится только в том случае, если переменная $_GET['page'] непринимает одно из значений, указанных в case, но значение имеет. Элементарные вещи, надо бы их уже понимать...

Это сообщение отредактировал(а) -=Ustas=- - 27.11.2005, 11:32


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
ivanset
Дата 27.11.2005, 12:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 21.11.2005
Где: Украина, Полтава

Репутация: нет
Всего: нет



Цитата
ivanset
поменяй строку
Код

switch ($_GET['page'])

на
Код

switch (@$_GET['page'])

Куксикус
Спасибо! Все работает!!!
---------------------------------
Кстати, мне тут советовали другой способ:
Вместо switch использовать:
Код

<?
if (!isset($page)){include("inc/about.php");}
else {
include("inc/".$page.".php");
}
?>

Но по каким бы я ссылкам не кликал (менюшка), все равно грузится "inc/about.php" smile
PM MAIL ICQ   Вверх
-=Ustas=-
Дата 27.11.2005, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: 32
Всего: 69



Цитата(ivanset @ 27.11.2005, 12:54)
Но по каким бы я ссылкам не кликал (менюшка), все равно грузится "inc/about.php"

Правильно, так и будет. Чтобы работало, надо:
Код

<?
if (!isset($_GET['page'])){include("inc/about.php");}
else {
include("inc/".$_GET['page'].".php");
}
?>



--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
R.M.
Дата 27.11.2005, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Анархист
****


Профиль
Группа: Участник
Сообщений: 2164
Регистрация: 8.6.2005
Где: Питер

Репутация: -2
Всего: 30



-=Ustas=-

Я делал сайт по такому принципу, проверил прямо на нём, всё ок, даже если нету $_GET['page'] грузится дефолт


--------------------
Помнишь как бодрили дискотеки прошлого века? Теперь стул, компьютер и нету человека.

Nokia LifeStyle - Всё для смартфонов Nokia 
PM MAIL WWW ICQ   Вверх
WhiteSpirit
Дата 27.11.2005, 20:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 242
Регистрация: 1.6.2005
Где: Челябинск

Репутация: нет
Всего: нет



Если я не ошибаюсь @ не всегда хорошо, так как сообщения об ошибках накпливается в логе.

а если использовать isset() то значение переменная устанавливается
--------------------
To beer or no to beer
PM MAIL   Вверх
Mal Hack
Дата 27.11.2005, 20:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Цитата
Я делал сайт по такому принципу, проверил прямо на нём, всё ок, даже если нету $_GET['page'] грузится дефолт


Цитата(Mal @ 26.11.2005, 18:01)
Надо условие делать. Пусть в этом конкретном варианте это и не так хорошо видно, но надо сразу учиться обрабатывать все исключения.


PM ICQ   Вверх
-=Ustas=-
Дата 27.11.2005, 22:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: 32
Всего: 69



Цитата
Я делал сайт по такому принципу, проверил прямо на нём, всё ок

Куксикус, глушить ошибки - это НИ ЕСТЬ ХОРОШО!!! И вообще, подобный стиль программирования, т.е. с применением заглушек, не достоен уважения... Если мне не веришь, то можешь спросить здесь у любого.


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
Mal Hack
Дата 27.11.2005, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Ответ авторы темы был дан. Дабы не разводить флейм считаю дискуссию законченной.
PM ICQ   Вверх
  
Закрытая темаСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0881 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.