Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Perl. Как проверить состояние checkbox? Каков синтаксис? 
V
    Опции темы
DimaS
Дата 3.7.2006, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 3.7.2006

Репутация: нет
Всего: нет



Добрый день!
Помогите разобраться.

Такая задача -

Имеется форма, в которой с помощью checkbox выбирается группа крови (по умолчанию "не знаю")-
<tr>
    <td colspan="2"><font color="#FFFFFF"><b><span lang="ru">Ваша группа крови:&nbsp;&nbsp;&nbsp;
    </span>&nbsp;I<span lang="ru"><input type="radio" value="V1" name="R1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    </span>II<span lang="ru"><input type="radio" name="R1" value="V2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    </span>III<span lang="ru"><input type="radio" name="R1" value="V3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    </span>IV<span lang="ru"><input type="radio" name="R1" value="V4"></span>
    <span lang="ru">&nbsp;&nbsp; </span>&nbsp; <span lang="ru">не знаю</span><input type="radio" name="R1" value="V5" checked></b></font></td>
</tr>

В .pl мне надо определить какой checkbox выбран и, скажем, выдать "Группа крови - такая-то".


Пытаюсь изобразить что-то типа (при нажатом первом checkbox'е) -

if ( $FORM{"R1" "V1" checked} ){
            print "<font size=3> Группа крови - I, </font>";}

Понимаю, синтаксис должен быть не такой. Подскажите. Спасибо.

Дмитрий 
PM MAIL   Вверх
Throne
Дата 3.7.2006, 18:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 147
Регистрация: 10.5.2006

Репутация: нет
Всего: 2



вобщем всё просто.
Вот что должно быть в хтмл-странице:
Код

<html>

<head>
<meta http-equiv="Content-Language" content="en-us">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Форма</title>
</head>

<body>

<form method="POST" action='cgi-bin/programma.pl'>
<p><input type="radio" value="" checked name="R1">не знаю</p>
<p><input type="radio" value="I" name="R1">I</p>
<p><input type="radio" value="II" name="R1">II</p>
<p><input type="radio" value="III" name="R1">III</p>
<p><input type="radio" value="IV" name="R1">IV</p>
<p><input type="submit" value="OK" name="B1"></p>
</form>

</body>

</html>

А вот что в программе:
Код

#!/usr/bin/perl
print "Content-Type: text/html\n\n";
print "<html><head>\n";
print "<meta http-equiv='Content-Type' content='text/html; charset=windows-1251'>\n";
print "<title>Ãðóïïà êðîâè</title></head><body>\n";
###############################################################################
################################декодер_формы##################################
###############################################################################
$method = $ENV{'REQUEST_METHOD'};
if ($method eq "GET") {
    $form_data = $ENV{'QUERY_STRING'};
}
else {
    read(STDIN,$form_data,$ENV{'CONTENT_LENGTH'});
}
$form_data =~ s/%(..)/pack ("C", hex ($1))/eg;
$form_data =~ tr/+/ /;
@pairs = split (/&/, $form_data);
foreach $pair (@pairs) {
    ($name, $value)=split(/=/, $pair);
        $form{$name}=$value;
}
###############################################################################
################################декодер_формы##################################
###############################################################################
if (!$form{'R1'}) {
print "<h3>О Боже! Вы не знаете свою группу крови!</h3>\n";
}
else {
chomp ($form{'R1'});
print "<h3>Ваша группа крови: $form{'R1'}</h3>\n";
}


Добавлено @ 18:37 
Кстати, а почему в предоставленном вами коде нет:
1. тега <form></form>?
2. кнопки SUBMIT?
без этих двух вещей ворма даже пытаться работать не будет. 
--------------------
Компьютер — это наредкость тупая вещь, но считает с феноменальной скоростью. 
PM MAIL   Вверх
DimaS
Дата 4.7.2006, 09:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 3.7.2006

Репутация: нет
Всего: нет



Спасибо за помощь.
Но, что-то не до конца срабатывает.
Все время выдается - Вы не знаете свою группу....

А разве не проще в html в строке
<p><input type="radio" value="" checked name="R1">не знаю</p>
сделать value="не знаю" или value="0",
а в программе оставить только строку -
print "<h3>Ваша группа крови: $form{'R1'}</h3>\n";

Только тоже не работает... Текст пишет, значение не подставляет.
 
PM MAIL   Вверх
Throne
Дата 4.7.2006, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 147
Регистрация: 10.5.2006

Репутация: нет
Всего: 2



А где вы проверяете результаты? Я проверил у себя и в инете и там и там работало.

Цитата
А разве не проще в html в строке
<p><input type="radio" value="" checked name="R1">не знаю</p>
сделать value="не знаю" или value="0",
а в программе оставить только строку -
print "<h3>Ваша группа крови: $form{'R1'}</h3>\n";

Не проще. Разве приятно юзеру будет увидеть: "Ваша группа крови: не знаю" или "Ваша группа крови: 0"?

Добавлено @ 14:35 
Вот пример:http://www.dinasco.ru/programma.htm 
--------------------
Компьютер — это наредкость тупая вещь, но считает с феноменальной скоростью. 
PM MAIL   Вверх
DimaS
Дата 4.7.2006, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 3.7.2006

Репутация: нет
Всего: нет



Посмотрел, буду еще разбираться.
Юзер этого и не увидет, он только отвечает, ответ ему придет совсем другой. 
PM MAIL   Вверх
rcdimon
Дата 9.7.2006, 11:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 766
Регистрация: 12.7.2004
Где: Москва

Репутация: 1
Всего: 2



У радиобоксов должно быть одинаковое имя в пределах одной группы радиобоксов. А значение у каждого бокса уникальное.

например

<input type="radio" name="name1" value="value1">
<input type="radio" name="name1" value="value2">
<input type="radio" name="name1" value="value3">

Значение получать так:

my $value = param('name1');

print 'Ваша группа крови: ' . $value;


И нечего тут париться 
PM MAIL ICQ   Вверх
Throne
Дата 9.7.2006, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 147
Регистрация: 10.5.2006

Репутация: нет
Всего: 2



А никто уже и не парится... 
--------------------
Компьютер — это наредкость тупая вещь, но считает с феноменальной скоростью. 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0447 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.