| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > Обработать нажатие кнопки |
| Автор: xTr1m 13.7.2009, 10:58 |
| Здравствуйте, вопрос у меня такой. Есть страничка с текстовыми полями и кнопкой отправить. Есть php, который обрабатывает нажатие этой кнопки. Проблема в том, что по нажатию кнопки страница перегружается, мне этого не нужно сразу, так как необходимо выполнить проверку заполненности полей. Я почитал и понял, что php тут не поможет, чем можно обработать нажатие кнопки (проверить заполненность полей, вывести какой-нибудь messagebox)? Заранее спасибо. |
| Автор: Leoo 13.7.2009, 11:03 |
| Поможет JavaScript. Т.е. делаешь кнопку не сабмит, а просто обычную, на onClick вешаешь функцию, которая проверить заполненность полей, а после отсабмитит форму. Правда такой метод не поможет тем у кого отключен JavaScript. |
| Автор: lelik133 13.7.2009, 11:10 |
| обработать можно javascript`ом. Вариант первый вся логика по проверки реализуется на js. если введено корректно форма отправляется на сервер. Второй вариант AJAX, данные формы отправляются на сервер незаметно для пользователя, проверяются там php скриптом, результат проверки возвращается обратно на страницу. |
| Автор: xTr1m 13.7.2009, 11:13 |
| Спасибо. А вот javascript обычно включен? Просто пользователи сайта - люди не особо сведующие в таких делах и если им высветится сообщение аля у вас не включен javascript - они выпадут в осадок и с сайта уйдут )) То есть мне нужен 100% способ =)) JS или AJAX? |
| Автор: Ипатьев 13.7.2009, 11:17 |
| Уточнение. Проверка на стороне клиента удобна, но недостаточна. На сервере данные следует проверять в любом случае. Как правильно тут заметили, яваскрипт можно элементарно отключить. Пооэтому лично я бы сделал сначала на стороне сервера, с перезагрузкой, а потом уже делал украшения на яваскрипте. Добавлено через 1 минуту и 37 секунд AJAX - это и есть JS. Это одно и то же. |
| Автор: xTr1m 13.7.2009, 11:19 |
| Ну или как вариант мне подойдет, если будет произведена проверка на сервере, а потом вернется страница с ранее введенными данными (чтобы вновь не вбивать) Такое возможно? |
| Автор: Leoo 13.7.2009, 11:40 |
| Если JS отключен, то можно сделать проверку заполненности формы на сервере. |
| Автор: xTr1m 13.7.2009, 11:57 |
| такая проверка на сервере делается, но при этом страница перегружается, все исчезает и неопытный пользователь входит в ступор. Остается только текст "мол вы забыли заполнить то-то, то-то". Я могу добавить кнопку (типа "назад" или "вернуться"), а какой (и как это сделать) будет обработчик возврата (причем, чтобы все поля были заполнены старыми значениями) |
| Автор: Leoo 13.7.2009, 12:19 |
| так передай все старый значения через GET и все. Т.е. пришли данные от формы, проверил их, если есть ошибка, то сформировал URL с сообщением об ошибке и заполненными данными. |
| Автор: icewind 13.7.2009, 12:29 |
| А в чем проблема в случае ошибки валидации забить все данные назад в форму? На js валидация делается лишь в дополнение к серверной для удобства не более. |
| Автор: ZTI831 13.7.2009, 12:41 | ||
Подобный вопрос обсуждался http://forum.vingrad.ru/forum/topic-263166.html . |
| Автор: xTr1m 13.7.2009, 12:43 | ||
Проблема в том, что пхп вижу почти впервые. Направление дайте плз =)) Вот у меня есть форма с кнопкой submit, есть пхп файл, который обрабатывает переданные значения.
что значит сформировал и как вернуть страницу |
| Автор: xTr1m 13.7.2009, 13:03 | ||
То есть. как я понял, в пхп файле при неправильно заполненных данных создается точно такая же форма? |
| Автор: icewind 13.7.2009, 14:24 |
| Нет. Как ты генеришь страницу с формой при первом посещении? Или она статична? |
| Автор: Ипатьев 13.7.2009, 14:35 |
| icewind, почему нет? xTr1m, если и форму, и обработчик сделать в одном файле, то будет совсем просто. Но можно и в разных. Главная идея в том, что при ошибках выводится та же самая форма, но заполненная. у полей input есть параметр value вот в него и вписывается введенное ранее значение. только его надо обработать перед этим функцией htmlspecialchars |
| Автор: xTr1m 13.7.2009, 14:35 |
| Я так понимаю, что статична, так как имею файл form2.html и пхп mail2.php |
| Автор: icewind 13.7.2009, 14:47 | ||
Ипатьев, потому что из фразы
я понял что в добавок к статичной он хочет выводить другую форму при возникновении ошибки |
| Автор: xTr1m 13.7.2009, 14:53 | ||
| Нет, мне всего то и нужно, что после нажатия кнопки submit пользователю выдавалось сообщение, а потом возвращало его на предыдущую страницу (где все что он заполнял до этого осталось)
Вот такое вот пробовал использовать, но весь введенный текст пропадает при этом |
| Автор: icewind 13.7.2009, 15:07 | ||||||
Можно сделать быстро, но очень не красиво...
и все поля сделай такого вида
а в обработчике сделай если ошибка
Правда если есть селекты, то придется их отдельно подпилить, но тоже очень просто... |
| Автор: xTr1m 13.7.2009, 15:14 | ||
Спасибо, попробую. Но хотелось бы знать почему
|
| Автор: Zzet 13.7.2009, 19:37 |
| можно еще попробовать if isset() {} |