![]() |
|
Модераторы: korob2001, ginnie |
![]()
|
|
| sergeyda |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 6.2.2010 Репутация: нет Всего: нет |
Проблема такая. Я загружаю данные из формы. К основной записи, "приклеиваются" несколько (заранее неизвестно, сколько) других записей. Они все (и основная и дополнительные) выводятся в форме и задается вопрос: "оставить запись "прикрепленной" или нет. Соответственно - чекбокс сделан на каждой дополнительной записи. NAME сделан плавающим ( $bm = "block".$i; NAME = \"$bm\"), в VALUE - id прикрепленного блока. После нажатия кнопки "Сохранить", Мне при помощи вот такой фигни: $info = checkValue($Q::$bm); надо вытащить ид прирепленного материала. А не получается!
Как сделать, чтобы все-таки заработало? Да. Забыл сказать (хотя, наверное, и так понятно) - я очень любитель и с терминологией у меня напряг. Вы уж меня простите. Вот кусок, который загружает данные: my $bm = ''; $queryS = "SELECT id, type, title, body, blockImage from Materials WHERE idExb=$Id ORDER BY id ASC"; $qS = &executeQuery($dbh, $queryS); while ($refS = $qS->fetch()) { $bm = "block".$i; $info .= "<table border=0 CELLPADDING=\"5\" CELLSPACING=\"5\" width=\"100%\"><tr><td><img src=\"/img/programs/$$refS[4]\" border=0></td><td CLASS=\"grey8\" ><p align=\"left\"><font size=2><b>$$refS[2]</b></font><br>$$refS[3]<br><p align=\"right\"><b>Оставить текстовый блок прикрепленным к выставке? </b><INPUT TYPE=\"checkbox\" NAME=\"$bm\" VALUE=\"$$refS[0]\" checked></td></tr></table>"; $i++; } if ($info) { print "<TR><TD VALIGN=\"middle\" CLASS=\"grey8\" colspan=\"2\"><INPUT TYPE=\"hidden\" NAME=\"qtymat\" VALUE=\"$i\">$info</td></tr>"; print "<TR><TD VALIGN=\"middle\" BGCOLOR=\"#E5E5E5\" CLASS=\"grey8\" ALIGN=\"right\"><B>Прикрепить еще блок материалов?</B></TD><TD VALIGN=\"middle\" BGCOLOR=\"#E5E5E5\" CLASS=\"grey8\" ALIGN=\"left\"><INPUT TYPE=\"checkbox\" NAME=\"blocks\" VALUE=\"1\" checked></TD></TR>"; } Вот кусок, который их должен вытащить из буфера: if ($qtymat ne 0) { for ($i=0; $i<$qtymat; $i++) { $b = "block".$i; $info = ($Q::{$b}); if ($info) { $materials .= "$info,"; } } Но он не вытаскивает! Он пишет: *Q::block0,*Q::block1,*Q::block2, Это сообщение отредактировал(а) sergeyda - 6.2.2010, 22:08 |
|||
|
||||
| sergeyda |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 6.2.2010 Репутация: нет Всего: нет |
Все. разобрался.
if ($qtymat ne 0) { $info = &readFromForm(); if ($info) { $materials = $info; } } а подпрограмма вот: sub readFromForm { my %FORM; use CGI qw/:standard/; my $info = ''; my $info1 = ''; my $q = new CGI; if ($q) { foreach my $key (keys %$q) { if ($key =~ /^\.\w+/) { next; } if ($key =~ /keywords/) { next; } if ($key =~ /\.x$/i) { next; } if ($key =~ /\.y$/i) { next; } if ($key =~ /^x$/i) { next; } if ($key =~ /^y$/i) { next; } if ($key !~ /block\d+/) { next; } if ($key =~ /block\d+/) { my $value = $q->{$key}; my $ref = ref($value); if ($ref eq "ARRAY") { $FORM{$key} = join(" ", @$value); } elsif ($ref eq "HASH") { my @values; foreach my $foo (keys %$value) { push (@values, $value->{$foo}); } $FORM{$key} = join(" ", @$values); } else { $FORM{$key} = $value; } $info .= "$FORM{$key},"; } } } return $info; } |
|||
|
||||
![]()
|
| Правила форума "Perl: CGI программирование" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: разработка для Web | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |