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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как "вытащить" переменные из буфера? 
V
    Опции темы
sergeyda
Дата 6.2.2010, 20:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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
PM MAIL   Вверх
sergeyda
Дата 7.2.2010, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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;
}
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: CGI программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к CGI программированию
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", качать здесь


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

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


 




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


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

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