Форум программистов
 
Регистрация на форуме тут, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Как купить рекламу на форуме


Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме 40000 рублей в месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.07.2019, 15:04   #1
ROM710
Форумчанин
 
Регистрация: 24.02.2014
Сообщений: 117
По умолчанию Опять переменная буксует.

Здравствуйте форумчане, продолжаю исправлять ошибки и в основном это переменные не определяются. Сейчас вот такая ситуация
Код:
if($u!=1)
выдает ошибку - Notice: Undefined variable: u in .....
Я предлагаю такой вариант -
Код:
if(isset($u)  && $u ==1)
но большая часть страницы просто исчезает. Это самый лучший вариант, остальные просто ломают страницу полностью. Что здесь еще можно предложить, кто видит проблему, подскажите пожалуйста.
ROM710 вне форума Ответить с цитированием
Старый 28.07.2019, 15:14   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,103
По умолчанию

Так вы же не исправляете ошибки, а городите костыли. Если ваши скрипты вызываются без кучи требуемых переменных, то надо исправлять того, кто их так вызывает. Или предусматривать вариант без этих переменных, например, с возвратом страницы с ошибкой.
p51x вне форума Ответить с цитированием
Старый 28.07.2019, 15:31   #3
ROM710
Форумчанин
 
Регистрация: 24.02.2014
Сообщений: 117
По умолчанию

Честно говоря не совсем понял, но вот такой вариант
Код:
if($u=1)
убрал ошибку , правильно ли будет ?
ROM710 вне форума Ответить с цитированием
Старый 28.07.2019, 15:37   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,103
По умолчанию

Конечно, нет. Вместо того, чтобы проверить равно ли 2*2 пяти, вы сказали 2*2 теперь равно 5.
p51x вне форума Ответить с цитированием
Старый 28.07.2019, 15:49   #5
ROM710
Форумчанин
 
Регистрация: 24.02.2014
Сообщений: 117
По умолчанию

Понял спасибо.
ROM710 вне форума Ответить с цитированием
Старый 28.07.2019, 16:25   #6
web-coder
Пользователь
 
Аватар для web-coder
 
Регистрация: 27.05.2019
Сообщений: 70
По умолчанию

И обратите внимание, что в 1 и 2 примерах у вас идет противоположное сравнение
Цитата:
Сообщение от ROM710 Посмотреть сообщение
if($u!=1)
- здесь условие сработает, если переменная НЕ равна 1
Цитата:
Сообщение от ROM710 Посмотреть сообщение
if(isset($u) && $u ==1)
- а здесь, наоборот, если равна 1

Чтобы не было подобных ошибок, для всех переменных, которые создаются по условию, проверяйте isset(). Или, чтобы не делать это каждый раз, можно задавать значение по умолчанию.
Например
Код:
if (!isset($u)) $u = NULL;
Лучший сервис выбора хостинга по параметрам.
Более 600 тарифов. Есть промокоды!
web-coder вне форума Ответить с цитированием
Старый 28.07.2019, 16:41   #7
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,503
По умолчанию

Цитата:
Сообщение от web-coder Посмотреть сообщение
Чтобы не было подобных ошибок, для всех переменных, которые создаются по условию, проверяйте isset()
зачем такие костыли?
isset конечно бывает полезен, но не особо часто. Скорее для проверки того, что не зависит от вас, типа $_GET/$_POST (и то $_GET/$_POST не нужны в 2019 году, возьмите хоть микрофреймворк какой-нибудь).

А в своем коде обычно лучше просто инициализировать всё, что надо.
Цитата:
Сообщение от ROM710 Посмотреть сообщение
Что здесь еще можно предложить
разберитесь что это за переменная, откуда она, какие и когда значения у нее должны быть, а не пишите всякую фигню наугад.

И давайте переменным нормальные имена, не экономьте символы.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 28.07.2019 в 16:46.
Alex11223 вне форума Ответить с цитированием
Старый 28.07.2019, 17:06   #8
web-coder
Пользователь
 
Аватар для web-coder
 
Регистрация: 27.05.2019
Сообщений: 70
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
зачем такие костыли?
isset конечно бывает полезен, но не особо часто.
Я так понимаю, что у ТС многие переменные создаются по условию, и если условие не выполняется, то дальше по коду начинают сыпаться ошибки...
Ну или в таком случае нужно писать else и создавать переменную.
Лучший сервис выбора хостинга по параметрам.
Более 600 тарифов. Есть промокоды!
web-coder вне форума Ответить с цитированием
Старый 28.07.2019, 17:11   #9
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,503
По умолчанию

Дык лучше просто инициализировать до этого без else.

А в случае доставания опциональных значений из запросов сделать функцию, которой передается значение по умолчанию. (ну а еще лучше взять фреймворк/микрофреймворк, где подобные штуки уже есть)

Код:
$pageNumber = getParam('page', 1);
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 28.07.2019 в 17:13.
Alex11223 вне форума Ответить с цитированием
Старый 29.07.2019, 16:12   #10
ROM710
Форумчанин
 
Регистрация: 24.02.2014
Сообщений: 117
По умолчанию

Спасибо web-coder разъяснил понятно, ошибку исправил. Дальше читал внимательно и понял, что не все правильно делаю ? Я сейчас все ошибки исправляю при помощи ,,isset,,
Цитата:
Сообщение от Alex11223 Посмотреть сообщение
И давайте переменным нормальные имена, не экономьте символы.
Где почитать ?
ROM710 вне форума Ответить с цитированием
Ответ
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Опять MDI и опять нет активной формы. Neon-z Общие вопросы Delphi 2 25.10.2014 11:20
опять я опять мемо nyasha2013 Помощь студентам 2 19.05.2011 20:09
...... и опять С++ Chaynik011091 Помощь студентам 5 24.06.2009 19:46
И опять мэйлы.. Опять... Pusher PHP 6 28.06.2008 02:08