我有关于使用filterexpression进行分页的问题。 这是用于过滤的代码:
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"><</a></td>];
问题是我想在SORTORDER VARIABLE之后将过滤器表达式放在此HREF中,以便在我进行分页后进行过滤后,只显示限制在过滤器表达式中的那些记录。 我试着以这种方式合并..
print qq[<td><a href="UsersList.cgi?
pageNum=$pageN&limit=$limit&SortBy=$SortBy&SortOrder=$SortOrder
&Filter=$filterexpression"><</a></td>];
但在网址中我得看到类似的内容:
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/;
但是当我尝试打印这个变量时,我什么也没得到。 请帮我解决一下。谢谢。
答案 0 :(得分:1)
我认为你只需要逃避变量的输出。 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"><</a></td>];
答案 1 :(得分:0)
我不确定你是否正确存储你的变量。 这一行是搜索:
$string =~ m/^$Id/;
这是试图在$ string中搜索给定的$ Id。
如果你想像你说的那样“将$ Id值放在变量中”,它将如下所示:
$string = $Id;