Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Как вы реализуете вывод ошибок
Покинул форум
Сообщений всего: 160
Дата рег-ции: Март 2011
Помог: 0 раз(а)
Ребят, всем привет. Сложилась такая ситуация, что я всё не могу никак подойти к тому, как же лучше всё-таки делать ошибочки при тех или иных ситуациях. Вот остановлся на таком варианте:
mb_strlen($_POST['title'])< 3 ||mb_strlen($_POST['title'])> 50 ? $err[]='Заголовок должен быть не меньше 3 символов и не больше 50 символов.':NULL;//Проверяем на кол-во знаков.
mb_strlen($_POST['text'])< 50 ||mb_strlen($_POST['text'])> 2000 ? $err[]='Текст новости должен быть не меньше 50 символов и не больше 2000 символов.':NULL;//Проверяем на кол-во знаков.
Но в этом варианте есть недостаток, что если например много отправляешь по форме, и потом их надо занести в базу, то если где-то вот проходит ошибка, то можно сказать весь скрипт ступориться. А если ты начинаешь мудрить с проверкой для каждого раза, типа count($err) == 0 то продолжаем, то получается, если честно, бред.
Подскажите, как лучше это всё реализовать, как вы это реализовываете.
LIME
Отправлено: 28 Января, 2012 - 16:37:01
Активный участник
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
Помог: 322 раз(а)
n1k86 пишет:
то если где-то вот проходит ошибка, то можно сказать весь скрипт ступориться
имеется ввиду необходимость снова заполнять форму?
n1k86
Отправлено: 28 Января, 2012 - 16:40:31
Частый гость
Покинул форум
Сообщений всего: 160
Дата рег-ции: Март 2011
Помог: 0 раз(а)
Нет. Смотри, вот у меня есть страница. В ней есть форма с полями: имя, фамилия, возраст.
Дальше я вот беру обрабатываю всё, заношу как бы эти ошибки в массив $error, если они будут. Ну вдруг он введет имя меньшего размера или в Фамилию не укажет. Так вот. В моём коде получается, что если вдруг будет ошибка хоть где-то, и count($error) покажет значение не равное 0 (т.е. будут ошибки), то скрипт остальные данные не хочет обрабатывать. Т.е. сразу тормозит и показывает, вот мол, вы в имени ошиблись. Хотя возможно, что фамилия и возраст то были указаны верно, и их можно было и сохранить, и написать, мол:
!Ваше имя короче 3 символов.
Фамилия успешно сохранена.
Возвраст успешно сохранён.
Ну вот так, как-то....думаю сейчас понятно объяснил?
n1k86
Отправлено: 28 Января, 2012 - 18:40:52
Частый гость
Покинул форум
Сообщений всего: 160
Дата рег-ции: Март 2011
Помог: 0 раз(а)
Добился нужного мне результата с помощью того, что при проверке на ошибки каждого ПОЛЯ из формы, я создаю массив, а потом его убиваю. И вот так для каждого поля...это вообще нормально такой подход??
LIME
Отправлено: 28 Января, 2012 - 20:04:36
Активный участник
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
Помог: 322 раз(а)
n1k86 ну я так и думал вобщем
проще помещать в форму при выводе значения из GET
если их нет то форма пуста
если ошибка в каком-то значении то вместе с ошибкой unset($_GET['это_значение'])
следовательно у вас появится форма с правильно заполнеными полями и пустотой в полях с ошибкой
а в базу всеже заносить только при отсутствии ошибок все сразу
n1k86
Отправлено: 28 Января, 2012 - 20:07:09
Частый гость
Покинул форум
Сообщений всего: 160
Дата рег-ции: Март 2011
Помог: 0 раз(а)
По реализации это сложнее. Так я просто делаю как у меня было, но каждую проверочку инпута обрамляю в так сказать массив. (Союзаю -> Проверяю -> Убиваю)*n-раз. Т.е. сколько принимаю - столько и проверяю. По сути своего добился...спасибо большое!) Я тебе Спасибо нажал;)
LIME
Отправлено: 28 Января, 2012 - 20:17:38
Активный участник
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
Помог: 322 раз(а)
n1k86 пишет:
Я тебе Спасибо нажал;)
видимо не за что
значит отработаю спасибку ))
во пример
Куда проще, ведь правда? Кстати, если есть замечания по коду какие-нибудь, т.к. я думаю ты опытнее меня куда больше, подскажи, пожалуйста!)
sKaa
Отправлено: 29 Января, 2012 - 00:07:48
Частый посетитель
Покинул форум
Сообщений всего: 979
Дата рег-ции: Окт. 2011 Откуда: Россия г. Нижний Новгород
Помог: 25 раз(а)
[+]
n1k86 пишет:
Ну вот смотри код мой(весь файл):
Жесть ваще)))))
n1k86
Отправлено: 29 Января, 2012 - 06:52:44
Частый гость
Покинул форум
Сообщений всего: 160
Дата рег-ции: Март 2011
Помог: 0 раз(а)
sKaa пишет:
n1k86 пишет:
Ну вот смотри код мой(весь файл):
Жесть ваще)))))
Ээээ...ну я как бы только учусь....поэтому, может ты лучше подскажешь что-то полезное, а не эмоции выражать будешь???)))
Slesher
Отправлено: 29 Января, 2012 - 14:36:46
Гость
Покинул форум
Сообщений всего: 69
Дата рег-ции: Дек. 2011
Помог: 0 раз(а)
весь код не смотрел что в последнем варианте не смотрел, но могу посоветовать использовать класс Exception, а также try{}, catch {}. можно много автоматизации и упрощения ними сделать.
n1k86
Отправлено: 29 Января, 2012 - 14:38:12
Частый гость
Покинул форум
Сообщений всего: 160
Дата рег-ции: Март 2011
Помог: 0 раз(а)
В принципи вопрос исчерпан, хотя мне предлагал друг сделать тру и кэтч. Но это же для ооп, так ведь? Или нет?
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.