1. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление

Помогите разобраться!

Тема в разделе "Web - программирование", создана пользователем sergeyda, 7 фев 2010.

  1. sergeyda

    sergeyda Гость

    Репутация:
    0
    Я пытаюсь загрузить данные из формы. Там такая задача: к основной записи "приклеиваются" несколько (заранее неизвестно, сколько) других записей. Они все (и основная и дополнительные) выводятся в форме и задается вопрос: "оставить запись "прикрепленной" или нет. Соответственно - чекбокс сделан на каждой дополнительной записи. NAME сделан плавающим ( $bm = "block".$i; NAME = \"$bm\"), в VALUE - id прикрепленного блока. После нажатия кнопки "Сохранить", Мне при помощи вот такой примерно фигни: $info = checkValue($Q::$bm); надо вытащить ид прикрепленного материала. А не получается!

    Как сделать, чтобы все-таки заработало?

    Да. Забыл сказать (хотя, наверное, и так понятно) - я очень любитель и с терминологией у меня напряг. Вы уж меня простите.

    Вот кусок, который загружает данные:
    PHP:
    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>";
    }
    Вот кусок, который их должен вытащить из буфера:

    PHP:
    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,
     
  2. sergeyda

    sergeyda Гость

    Репутация:
    0
    Все. разобрался.

    PHP:
    if ($qtymat ne 0) {
    $info = &readFromForm();
    if (
    $info) { 
    $materials $info;
    }
    }
    а подпрограмма вот:

    PHP:
    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;
    }
     
Загрузка...

Поделиться этой страницей