|
|
|
Supreme Being
      
участник
Last Login: 07.03.2006 18:34
Сообщ.: 328,
Visits: 3 642
|
|
Делаю Гуэст бук, создал две страницы: с демонстрацией всех сообщений и с вводом сообщения. На странице ввода сообщения форма которая отправляет инфу в БД, а страница демонстрации сообщений вытаскивает всю инфу из БД. Когда заполняешь форму проигнорировав (не заполнив) какое-либо поле и жмешь сабмит выскакивает следующее:
Microsoft OLE DB Provider for ODBC Drivers error ''80004005''
[Microsoft][ODBC Microsoft Access Driver] Field ''GuestBook.Email'' cannot be a zero-length string.
about_gb-form.asp, line 49
Как сделать, что бы гость не мог проигнорировать не все поля формы, а только некоторые, при этом происходил бы редирект на отдельную страницу (скажем, error.html) ?
|
|
|
|
|
Supreme Being
      
администратор
Last Login: 13.11.2007 13:41
Сообщ.: 4 421,
Visits: 49 251
|
|
Для этого сделай проверку перед тем, как сделать запись в БД:
email = Request.Form("email")
if email="" then Response.redirect ("error.html")
где "email" - это имя <input> в форме.
|
|
|
|
|
Supreme Being
      
участник
Last Login: 03.03.2006 19:03
Сообщ.: 1 908,
Visits: 21 011
|
|
Можно сделать на стороне сервера, а можно и на стороне клиента, пример:
-------------
<form action="add.asp" method="post">
<input type="text" name="FIO">
<input type="text" name="Email">
<input type="button" onclick="if (FIO.value=='''' || Email.value=='''') {alert(''Заполните обязательные поля'')} else {form.submit()}">
</form>
При таком варианте пользователь нажмет на ОК в окошке предупреждения и продолжит заполнение формы, причем все уже введенные значения сохранятся и перезагрузки страницы не произойдет. Хотя сразу же оговорюсь, что если клиент отключил JavaScript, то это не сработает, но я, например, не обращаю на это внимание, так как без JS все равно ничего путного не напишешь. Вариант, предложенный ранее это ограничение обходит, но там теряются все значения, и происходит перезагрузка страницы, так что выбирайте!
(можно и при отключенном JS такую проверку "рабочей" сделать, для этого надо и на стороне сервера и на стороне клиента проверку делать, а еще использовать input type="submit)
|
|
|
|
|
Supreme Being
      
администратор
Last Login: 13.11.2007 13:41
Сообщ.: 4 421,
Visits: 49 251
|
|
Sergik, ты безусловно прав. Как прав и я :)
Действительно, можно (и нужно, наверно, см. http://www.relib.com/asp/asp_tip19.asp) сделать проверку "на клиенте", но и на сервере тоже нужно, потому как если у поддержка скриптов отключена, то с неправильными данными возникнет ошибка.
|
|
|
|
|
Supreme Being
      
участник
Last Login: 07.03.2006 18:34
Сообщ.: 328,
Visits: 3 642
|
|
| А что сделать, чтобы некоторые поля можно было бы проигнорировать? То есть, чтобы их можно было бы не заполнять и соответственно на стр. демонстрации сообщений они бы не выводились?
|
|
|
|
|
Supreme Being
      
администратор
Last Login: 13.11.2007 13:41
Сообщ.: 4 421,
Visits: 49 251
|
|
Так просто не проверяй их и все. А если получаешь ошибку
Field ''GuestBook.Email'' cannot be a zero-length string
то надо изменить таблицу GuestBook и установить свойство Allow Zero Length поля Email в "No", т.е. разрешить добавлять пустые значения.
|
|
|
|
|
Supreme Being
      
участник
Last Login: 07.03.2006 18:34
Сообщ.: 328,
Visits: 3 642
|
|
Просто нужно изменить свойство?! Все это до того поразительно просто, что мне даже как то неловко :|
В любом случае огромное вам СПАСИБО за помощь!
|
|
|
|
|
Supreme Being
      
администратор
Last Login: 13.11.2007 13:41
Сообщ.: 4 421,
Visits: 49 251
|
|
> В любом случае огромное вам СПАСИБО за помощь!
Так как помощь бесплатная, то при возможности на вашем веб-сайте (для которого guestbook) разместите ссылку "Зроблено при помощи Relib.com" :)
|
|
|
| | |