Урок7, Работа с формами.
  • Назначение форм.
  • Формы служат для обмена данными между клиентом и веб-сервером по протоколу CGI. Другими словами говоря, вы заполняете форму нажимаете кнопку, и ваши данные уходят на сервер в виде: [имя_переменной]=[значение_переменной].
    CGI - программа на сервере обрабатывает эти данные и выполняет в зависимости от результата какие-либо действия. Это может быть обработка сообщения конференции, подписка на новости сайта, работа с базой данных посетителей сайта и т.д.

    Возникает вопрос, а обязательно ли знать CGI-программирование для того, чтобы применять формы? Отвечу, что CGI знать желательно, но не обязательно. В конце этой статьи я продемонстрирую как без написания обработчика на сервере, заставить форму выполнять некоторые действия.

  • Задание формы.
  • Форма задается тэгами <form></form> и состоит из управляющих элементов (текстовое поле, кнопка, список и т.д.).

    Атрибуты тэга <FORM>:
    action="URL" URL-адрес CGI-программы, выполняющей обработку данных.
    method Способ передачи данных веб-серверу. Может принимать значения:
    • get -программа CGI, указанная в параметре ACTION, получит данные из формы через переменную среды с именем QUERY_STRING;
    • post -программа CGI получит данные из формы через стандартный поток ввода;
    enctype Тип передаваемых данных данных. Значение по умолчанию - application/x-www-form-urlencoded.

  • Создание списка.
  • Список создается тэгом <select></select>

    Атрибуты тэга <SELECT>:
    name имя списка, которое передается веб-серверу в паре с выбранной строкой
    size высота списка в строках. По умолчанию список раскрывающийся т.е. видна только одна строка.

    Для записи строк в список используется тэг <OPTION>.
    Строка, отмеченная параметром selected, будет выбрана в списке по умолчанию.

    Пример:
    Пример списка:
    <select name="months" size="3">
    <option>Январь
    <option>Февраль
    <option selected>Март
    </SELECT>

    Пример раскрывающегося:
    <select name="months">
    <option>Январь
    <option>Февраль
    <option selected>Март
    </SELECT>

  • Поле для ввода многострочного текста.
  • Создается тэгом <textarea></textarea>

    Атрибуты тэга <TEXTAREA>:
    name имя поля
    rows Число строк по вертикали.
    cols Число символов по горизонтали.

    Пример:
    Текст программы:
    <textarea name="multytext" rows="4" cols="50">

    Здесь
      введен
        многострочный
          текст.
     
    <textarea>

    Результат выполнения:

  • Другие элементы управления.
  • Создаются с помощью тэга <input></input>

    Атрибуты тэга <INPUT>:
    type Тип элемента управления.
    name Имя элемента управления.
    value Начальное значение или состояние элемента управления.
    checked Установка начального значения переключателей.
    size Ширина текстового поля в символах. По умолчанию 20 символов.
    maxlenght Максимальное количество символов в текстовом поле.
    align Выравнивание текста, около формы.
    src URL графического изображения, если оно используется в элементе управления

    Параметры атрибута <TYPE>:
    text однострочное поле для ввода текста.
    password аналогичен элементу управления text, но символы, вводимые в этот элемент управления, не отображаются на экране.
    checkbox Элемент управления переключатель.
    radio Элемент управления радиокнопка.
    file Элемент управления для выбора и передачи файлов.
    button Орган управления кнопка.
    submit Кнопка для пересылки данных из заполненной формы веб-серверу.
    reset Кнопка для сброса содержимого формы в начальное значение.
    image Замена кнопки submit графическим изображением.
    hidden Скрытое текстовое поле.

    Примеры:
    Текстовое поле:
    <input name="Text_Exmpl" type="text" value="текстовое поле">

    Поле ввода пароля:
    <input name="Psw_Exmpl" type="password" value="password">

    Переключатель:
    <input name="ChkBox_Checked" type="checkbox" checked>

    <input name="ChkBox_Unchecked" type="checkbox">

    Группа радиокнопок:
    <input name="radio_btn" type="radio" value="rb1">
    <input name="radio_btn" type="radio" value="rb2" checked>
    <input name="radio_btn" type="radio" value="rb3">

    Отдельные радиокнопки:
    <input name="radio_btn1" type="radio" value="rb1">
    <input name="radio_btn2" type="radio" value="rb2" checked>
    <input name="radio_btn3" type="radio" value="rb31">

    Произвольная кнопка:
    <input name="Btn" type="button" value="Кнопка">

    Графическое изображение вместо кнопки:
    <input name="ImgBtn" type="image" src="url" border="0">

    При нажатии мышью на такую кнопку CGI программе будут переданы две переменные : name.x (где name - имя кнопки, а x - x- координата точки нажатия в пикселях), и name.y. Начало координат - левый верхний угол рисунка. Все значения атрибута VALUE игнорируются. Картинка задается тэгом < SRC> и по синтаксису совпадает с тэгом <IMG>.

    Передача файлов:
    Внимание! Поскольку данная возможность требует поддержки получения файлов WEB-сервером, то, соответственно, необходимо, чтобы сервер поддерживал получение файлов! Например:

    <FORM ENCTYPE="multipart/form-data" ACTION="url" METHOD="POST">
    Отправить данный файл: <INPUT NAME="myfile" TYPE="file"> <P>
    <INPUT TYPE="submit" VALUE="Отправить файл">
    </FORM>

    Отправить данный файл:

  • Создание работающих форм без написания CGI-обработчика.
  • HTML имеет механизм пересылки содержимого формы по электронной почте. Для этого в тэге <FORM>, укажем следующие значения атрибутов:
    method="post", action="mailto:adress@domain.ru?subject=Message", enctype="text/plain".
    В этом случае произойдет передача данных формы по электронному адресу "adress@domain.ru" в незакодированном "text/plain" виде. Заметьте, что параметром ?subject можно указать почтовой программе тему (Subject) сообщения

    Пример работающей формы:

    Следующая форма отправит содержимое формы на мой eMail:
    Чтобы не захламлять форму, я не стал указывать в тексте тэги таблицы оставив лишь тэги, относящиеся к форме.
    <form name="sendtome" method="post" action="mailto:valery@ropnet.ru?subject=Message" enctype="text/plain">
    Ваш возраст
    <input style="width:100px;border:2px solid red;"name="old" type="text">
    Откуда Вы узнали про этот сайт
    <select name="Where_You_Find_This_Site" cols="30">
    <option>из поисковой системы
    <option>нашел по ссылкам
    <option>случайно
    </select>
    Следует ли дальше продолжать уроки HTML?
    да
    <input name="To_Continue_Lessons" type="radio" value="yes" checked>
    нет
    <input name="question" type="radio" value="no">
    не знаю
    <input name="question" type="radio" value="hz">
    Какие разделы Вы хотели бы видеть еще?
    JavaScript
    <input name="js" type="checkbox" value="yes">
    MySQL
    <input name="MySQL" type="checkbox" value="yes">
    Perl
    <input name="perl" type="checkbox" value="yes">
    VBScript
    <input name="vbs" type="checkbox">
    DHTML
    <input name="dhtml" type="checkbox" value="yes">
    Никакие
    <input name="no" type="checkbox" value="yes">

    <input type="submit" value="Проголосовать">
    <input type="reset" value="Обнулить">
    </FORM>

    Ваш возраст:
    Откуда Вы узнали
    про этот сайт
    Следует ли дальше продолжать уроки HTML?
    да    
    нет    
    не знаю    
    Какие разделы Вы хотели бы видеть еще?
    JavaScript MySQL
    Perl VBScript
    DHTML Никакие

    Письмо придет приблизительно такого содержания:
    old=33
    Where_You_Find_This_Site=из поисковой системы
    To_Continue_Lessons=yes
    js=yes

    Еще один способ заставить форму работать - применить к ней обработку событий JavaScript. При нажатии на кнопку в ней возникает событие "OnClick", которое можно обработать написав функцию-обработчик.
    Например, создадим простейшую форму, складывающую два числа по нажатию кнопки.
    Создадим форму для ввода чисел:
    <FORM name="calc">
    <input name="val1" type="text" value="0" size="4">+
    <input name="val2" type="text" value="0" size="4">
    <input type="button" value="  +  " onclick="adding(val1, val2)">
    <input name="is" type="text" value="0">
    </FORM>

    И напишем функцию, получающую аргументы из полей val1 и val2 и выводящую результат в поле is:
    <script language="JavaScript"> function adding(val1, val2)
    {
    document.calc.is.value=eval(parseFloat(document.calc.val1.value)+parseFloat(document.calc.val2.value));
    }
    </script>

    Теперь попробуйте сложить два числа используя эту форму.

    +

    Урок6.Графика и звук в документах HTML. |Продолжение следует...


    -------------------------------------------------------------------------------------
    Мой Email: the_thing@rbcmail.ru

     
    Используются технологии uCoz