2010-10-06 5 views
0

J'ai un problème concernant la pagination en utilisant l'expression de filtre. est ici le morceau de code pour le filtrage:Comment mettre une expression de filtre dans l'URL en utilisant Perl?

 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" 

et est ici morceau du code d'appel:

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

LA QUESTION I EST VEUX METTRE LA NOTION DE FILTRE DANS CE HREF APRÈS VARIABLE SortOrder, de sorte que après le filtrage lorsque je pars pour la pagination, seuls les enregistrements confinés à l'expression du filtre doivent être affichés. J'ai essayé de fusionner cette façon ..

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

mais url je suis arrivé à voir quelque chose comme ceci:

  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 

Plus tard j'ai essayé de mettre la valeur « $ Id » dans un varible comme: Mais quand j'ai essayé d'imprimer cette variable, je n'ai rien reçu. S'il vous plaît, aidez-moi avec une solution. Merci.

Répondre

1

Je pense que vous avez juste besoin d'échapper à la sortie de vos variables. Les URLs réservent desvariables% étant l'une d'entre elles, vous finissez par demander quelque chose de différent de ce que vous attendez. changez votre code de sortie de lien pour être le suivant:

$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

I modifié le code, mais dès que je donne le exprssion filtre le son don moi cette erreur "sous-routine Undefined & main :: urlencode appelé à la ligne 277." – SUSH

+1

Il est épelé ['uri_escape'] (http://p3rl.org/URI::Escape). – daxim

0

Je ne suis pas sûr si vous stockez votre variable droite. Cette ligne est une recherche:

$string =~ m/^$Id/; 

Cette tente de rechercher la chaîne de $ pour le $ Id donné.

Si vous vouliez « mettre la valeur Id $ dans un varible » comme vous l'avez dit, il ressemblerait à ceci:

$string = $Id; 
+0

Mais si je mets cette valeur alors je vais obtenir l'enregistrement limité à cette valeur. Je veux dire "si je donne 1 alors selon la syntaxe ci-dessus je vais obtenir les enregistrements confinés à userId 1, MAIS JE VEUX LE ENREGISTREMENTS DONT L'UTILISATEUR COMMENCE DE 1 (COMME 1,10,11,12..SOUS). – SUSH

Questions connexes