Ignorer un critère de recherche

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

Ignorer un critère de recherche

Pierre Dittgen
Bonjour,

Je me suis posé un problème dernièrement avec SDX et j'ai trouvé une
solution de contournement, cependant je serai bien intéressé de savoir
s'il existe une solution plus "propre".

J'ai un formulaire de recherche contenant deux critères, appelons les
couleur et forme. Au départ dans mon formulaire de recherche j'avais
qqchose comme :
<select name="couleur">
<option value="">-- Choisissez une couleur --</option>
<option>rouge</option>
<option>vert</option>
<option>bleu</option>
</select>
et
<select name="forme">
<option value="">-- Choisissez une forme --</option>
<option>carré</option>
<option>triangle</option>
<option>rectangle</option>
</select>

et une XSP de traitement contenant :
<executeComplexQuery complexop="and">
    <linearQuery field="couleur" valueParam="couleur"/>
    <linearQuery field="forme" valueParam="forme"/>
</executeComplexQuery>

Le problème est le suivant :
Si je sélectionne une couleur et pas de forme, je n'obtiens aucun
résultat, même chose si je choisis une forme et pas de couleur. Le
problème vient du fait que ne pas sélectionner une valeur dans une combo
revient à sélectionner une valeur vide "" qui est prise en compte dans
la recherche.
Pour résoudre mon problème, j'ai essayé de faire un pré-traitement de
mes paramètres avec de lancer la requete, qqchose comme :

<xsp:logic>
     String[] maCouleur = request.getParameterValues("couleur");
     if (maCouleur != null &amp;&amp; "".equals(maCouleur[0])) {
         maCouleur = new String[0];
     }
     String[] maForme = request.getParameterValues("forme");
     if (maForme != null &amp;&amp; "".equals(maForme[0])) {
         maForme = new String[0];
     }
</xsp:logic>
<executeComplexQuery complexop="and">
    <linearQuery field="couleur" valueString="maCouleur"/>
    <linearQuery field="forme" valueString="maForme"/>
</executeComplexQuery>

mais ça ne marche pas mieux :-(

Finalement, j'ai opté pour des checkboxes mais j'aimerai bien savoir
s'il y a moyen programmatiquement d'indiquer à SDX de ne pas prendre en
compte un critère (valeur neutre) dans une requete complexe.

Merci d'avance
Pierre
--
Pierre Dittgen
Tél/Fax 01 49 60 10 23
PASS Technologie http://www.pass-tech.fr
23, rue Pierre et Marie Curie / 94200 Ivry sur Seine



_______________________________________________
sdx-users mailing list
[hidden email]
http://lists.nongnu.org/mailman/listinfo/sdx-users
Reply | Threaded
Open this post in threaded view
|

Re: Ignorer un critère de recherche

Malo Pichot
Salut,

   Peut-être un réponse :

Pierre Dittgen a écrit :
[snip]

> <xsp:logic>
>     String[] maCouleur = request.getParameterValues("couleur");
>     if (maCouleur != null &amp;&amp; "".equals(maCouleur[0])) {
>         maCouleur = new String[0];
>     }
>     String[] maForme = request.getParameterValues("forme");
>     if (maForme != null &amp;&amp; "".equals(maForme[0])) {
>         maForme = new String[0];
>     }
> </xsp:logic>
> <executeComplexQuery complexop="and">
>    <linearQuery field="couleur" valueString="maCouleur"/>
>    <linearQuery field="forme" valueString="maForme"/>  
> </executeComplexQuery>

maForme et et maCouleur sont des String[], pas des String. Essaie :
<linearQuery field="couleur" valueStrings="maCouleur"/>
<linearQuery field="forme" valueStrings="maForme"/>
--
Malo


_______________________________________________
sdx-users mailing list
[hidden email]
http://lists.nongnu.org/mailman/listinfo/sdx-users
Reply | Threaded
Open this post in threaded view
|

Re: Ignorer un critère de recherche

Pierre Dittgen
>
> maForme et et maCouleur sont des String[], pas des String. Essaie :
> <linearQuery field="couleur" valueStrings="maCouleur"/>
> <linearQuery field="forme" valueStrings="maForme"/>

Effectivement, je viens de retester et ça fonctionne. Merci !

Pierre
--
Pierre Dittgen
Tél/Fax 01 49 60 10 23
PASS Technologie http://www.pass-tech.fr
23, rue Pierre et Marie Curie / 94200 Ivry sur Seine



_______________________________________________
sdx-users mailing list
[hidden email]
http://lists.nongnu.org/mailman/listinfo/sdx-users