Приветствую всех, есть форма, в заголовке:
< form action="script.cgi" method="POST" >
< table >
далее в цикле табличка (выводятся данные из базы) :
< tr > < td > < input type=checkbox > < /td > < td >тут текст из базы< /td > < /tr >
и низ:
< tr >< td > < input type=sybmit value="ok" > < /td >< /tr >
< /table >
< /form >
как считывать данные их checkbox, чтобы получать после submit ID записи и его состояние "чекед" он или нет.
PS: Надеюсь понятно расписал что именно требуется.. уже неделю голову ломаю - немогу понять как это делается на PERL/CGI. Отсюда становится понятно почему большинство любит PHP - там гораздо удобнее обрабатывать формы.

Получаем отмеченные checkbox
Уважаемый fu7ur3!
Вместо "< input type=checkbox >" пишем <input type="checkbox" name="checkbox_01" value="checked"> и в скрипте получаем для отмеченных checkbox'ов значения checkbox_01 == checked. Если имена checkbox'ов заранее неизвестны, то получаем имена всех переданных скрипту параметров и выбираем из них checkbox'ы по шаблону.
Иногда нужно узнать, какие checkbox'ы были выключены. Для этого я либо передаю id включенных checkbox'ов в специальном hidden-поле, либо храню на стороне сервера.
P.S. Старый уже стал, забыл еще вариант попроще и, наверное, побыстрее: у checkbox'ов указываем одинаковый name, а в value указываем некий id. В скрипте для указанного name получаем массив отмеченных id.
...
Вместо "< input type=checkbox >" пишем
Пишу с пробелами, потому что в друпале почему-то в теге [ quote ] не отображается html код.
...и в скрипте получаем для отмеченных checkbox'ов значения checkbox_01 == checked.
вот например у меня в форме нарисовалось 5 пунктов и напротив каждого стоит < input type="checkbox" name="checkbox_01">
я выделяю нужные флажки, жму submit.
print param('checkbox_01'); #выводится on если отметил, но как получать ID ?Чтобы получить ID сделал так:
т.е. так получается что у каждого checkbox имя соответствует иду из базы..
Вопрос, как получать и обрабатывать эти данные из другово блока ?
------------------
use Source();В продолжение...
Уважаемый fu7ur3!
Как я написал в первом сообщении, лучше использовать второй метод: <input type="checkbox" name="ids" value="$quotes[0]">
Кроме этого, советую начать пользоваться шаблонами. Посмотрите HTML::Template.
Спасибо за ответы.
ginnie, спасибо за помощь. Потихоньку начал разбираться, и о шаблонах давно уже подумывал, не знал только как модуль называется.
Еще вопрос появился:
------------------
use Source();Совет...
Уважаемый fu7ur3!
У меня тоже бывают ситуации, когда что-то работает не так, как задумывалось. Почти всегда помогает отладочная информация. В Вашем случае, необходимо воспользоваться модулем Data::Dumper:
В результате выведется содержимое массива @ids.
глюк
ginnie, сделал как ты написал, получилось следующее:
В Web'е:
В консоле:
еще один вопрос получается..
------------------
use Source();=)
Все просто до безобразия:
my @var = param('quote');------------------
use Source();Пояснение...
warn() на страницу выводить не умеет, т.к. это функция для вывода сообщений в STDERR (стандартный поток ошибок, обычно файл error.log web-сервера). Я обычно вывожу сообщения об ошибках и отладочную информацию в STDERR, а не на страницу.
как например
часто тож приходится ковыряться с чекбоксами, делаю следующее:
для чекбокса name="какаято_фраза_$id_from_DB"
а далее в скрипте перебираю по всем id в цикле
print ((param("какаято_фраза_$id_from_DB" eq 'on') ? "OK" : "NO");