Как поместить выражение фильтра в URL с помощью Perl? - PullRequest
0 голосов
/ 06 октября 2010

У меня есть проблема, связанная с пейджингом с использованием фильтроэкспрессии. Вот фрагмент кода для фильтрации:

     if ( $q->param("Filter") )
        {
        $Id=$q->param('User_Id');
        $Name=$q->param('User_Name');

       if ($Id ne "" )
            {
          $filterexpression= $filterexpression." UserId like '" .$Id. "%' and " ;
             }
        if ($Name ne "" )
          {
        $filterexpression= $filterexpression." UserName like '" .$Name. "%' and " ;
           }
          }
        $filterexpression= $filterexpression. " UserId > 0"  

и вот фрагмент кода подкачки:

    print qq[<td><a href="UsersList.cgi?
     pageNum=$pageN&limit=$limit&SortBy=$SortBy&SortOrder=$SortOrder">&lt;</a></td>];

ВОПРОС Я ХОЧУ ПОСТАВИТЬ ВЫРАЖЕНИЕ ФИЛЬТРА В ЭТОМ HREF ПОСЛЕ ПЕРЕМЕННОЙ SORTORDER, чтобы после фильтрации, когда я отправлялся на подкачку страниц, отображались только те записи, которые были ограничены выражением фильтра. Я пытался слить таким образом ..

           print qq[<td><a href="UsersList.cgi?
            pageNum=$pageN&limit=$limit&SortBy=$SortBy&SortOrder=$SortOrder
             &Filter=$filterexpression">&lt;</a></td>];

но в URL я увидел что-то вроде этого:

            http://localhost/cgi-bin/UsersList.cgi?
              pageNum=1&limit=3&SortBy=UserId&SortOrder=Asc&filter=%20%20UserId%20like%
              20'1%'%20and%20%20UserId%20>%200

Позже я попытался поместить значение «$ Id» в переменную типа:

             $string =~ m/^$Id/;  

но когда я попытался напечатать эту переменную, я ничего не получил. Пожалуйста, помогите мне с решением. Спасибо.

Ответы [ 2 ]

1 голос
/ 06 октября 2010

Я думаю, вам просто нужно избежать вывода ваших переменных.URL-адреса оставляют за собой определенные переменные%, поэтому вы в конечном итоге запрашиваете что-то отличное от ожидаемого.измените код вывода ссылки на следующий:

$limitEnc = urlencode($limit);
$pageNEnc = urlencode($pageN);
$SortByEnc = urlencode($SortBy);
$SortOrderEnc = urlencode($SortOrder);
$filterexpressionEnc = urlencode($filterexpression);
print qq[<td><a href="UsersList.cgi?
            pageNum=$pageNEnc&limit=$limitEnc&SortBy=$SortByEnc&SortOrder=$SortOrderEnc&Filter=$filterexpressionEnc">&lt;</a></td>];
0 голосов
/ 07 октября 2010

Я не уверен, правильно ли вы сохраняете свою переменную. Эта строка поиска:

$string =~ m/^$Id/;

Это попытка найти строку $ для заданного идентификатора $.

Если вы хотите «поместить значение $ Id в переменную», как вы сказали, это будет выглядеть так:

$string = $Id;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...