Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013
Помог: 91 раз(а)
Доброй ночи. Возникла проблема с использованием switch. Хочу выводить ошибки неверно заполненных полей с помощью него т.к засорять код if-ами считаю неправильным в случае если проверок много.
$e_login="Поле логин обязательно для заполнения";break;
default:
echo"Ничего не найдено";
}
Не получаю то, что хочу. Тоесть в данном случае я рассмариваю кейсы так:
case = if - так я понимаю конструкцию т.е исходя из кода я пишу
if(strlen($login)<3) $e_login = "Вы ввели слишком короткий ник"; и так далее с остальными кейсами, по одному нормально все работает, а когда кейсов много ошибки уже выводятся не в том порядке(не соответствуют условию)... Почему так? (Добавление)
Последний кейс запрещает оставлять поле пустым, но мне почему то вываливается ошибка: Слишком длинный ник. Каким боком она к пустому полю?
teddy
Отправлено: 11 Апреля, 2013 - 01:19:59
Участник
Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013
Помог: 91 раз(а)
Так я же поставил break; не помогает
LIME
Отправлено: 11 Апреля, 2013 - 01:24:25
Активный участник
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
Помог: 322 раз(а)
switch( true ){
teddy
Отправлено: 11 Апреля, 2013 - 01:28:12
Участник
Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013
Помог: 91 раз(а)
Спасибо, сработало! Только вот прегматч тупит... при if-e работает, а в кейсе что бы не ввел блокирует... надо чтоб только цифры и буквы пропускал если можно помогите плз буду благодарен
Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013
Помог: 91 раз(а)
LIME пишет:
case preg_match ( "/^[-\w\s]$/" , $login ):
Не работает ( вообще все блокирует, даже буквы
LIME
Отправлено: 11 Апреля, 2013 - 01:54:40
Активный участник
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
Помог: 322 раз(а)
case preg_match ( "/^[^-\w\s]$/" , $login ):
teddy
Отправлено: 11 Апреля, 2013 - 12:55:00
Участник
Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013
Помог: 91 раз(а)
Ничего не помогает Может я что то записываю не так? И ещё одну ошибку заметил, данный код считает ЛЮБОЙ введенный символ как "Неверный", но при этом если вводить "кол-во" неверных символов более 12, то почему то выдает ошибку "Слишком длинный ник" хотя должно все равно выводить "Вы используете запрещенные символы"...
И ещё, когда меняю расположение кейсов, то вообще все становится очень плохо... Тоесть если поставить регулярку в самый верх, то кроме того как "Вы используете запрещенные символы" я ничего не получаю... Почему? Я даже ничего не вводил, а нажал submit, по идее должно было выдать ". Главное что интересно, if-ами точно такой же код нормально работает, а вот с кейсами нет...
LIME
Отправлено: 11 Апреля, 2013 - 13:00:25
Активный участник
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013
Помог: 91 раз(а)
DelphinPRO пишет:
т.е. вы серьезно считаете, что описали свою проблему так, что все всё поняли, что у вас там случилось?
Да... если изначально прочитать тему, то вполне понятен каждый момент, даже более чем... А дальше я уже отвечал на сообщения LIME
IllusionMH
Отправлено: 11 Апреля, 2013 - 20:59:05
Активный участник
Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011 Откуда: .kh.ua
Помог: 242 раз(а)
teddy, вы хоть понимаете что в case должны стоять значения, а не выражения?
В данном случае лучше переписать через набор if т.к. это не сравнение переменной/результата выражения с набором значений.
LIME
Отправлено: 11 Апреля, 2013 - 21:35:28
Активный участник
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.