Recherche multicritères

Eléphanteau du PHP | 44 Messages

11 juin 2005, 11:52

Bonjour,

Je souhaiterais récupérer le résultat d'une recherche multicritères.
Cumulé une recherche par mots clés à une sélection de case à cocher.
Je parviens à obtenir l'un où l'autre résultat, mais pas le cumul des 2 critères de recherche.
Voici le code de ma page "résultat".

<?php
$criteres=implode(",",$_POST["VARCase"]);
mysql_select_db($database_InFolio, $InFolio);
$request="select * from educa where id_fiche_doc in ($criteres) AND mot_cle LIKE '%VARCle%'";
$request = mysql_query($request, $InFolio) or die(mysql_error());
$row_request = mysql_fetch_assoc($request);
$totalRows_request = mysql_num_rows($request);
?>


Quelqu'un peut-il m'aider?

Merci

Mammouth du PHP | 1776 Messages

11 juin 2005, 15:09

:?
Pas tout pigé sur ce coup là :roll:

Mammouth du PHP | 19672 Messages

11 juin 2005, 15:14

Si tu as un nombre variable de critères de recherche, il faut construire dynamiquement ta requête pour ajuster le nombre de clauses WHERE au nombre de cases cochées.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Invité
Invité n'ayant pas de compte PHPfrance

11 juin 2005, 16:45

Il s'agit d'une bibliothèque où j'ai un module de recherche avec un champ pour faire une recherche par mot clé et des cases à cocher pour restreindre la recherche sur un certain type de document (ex.: livres, brochures, rapport,...).

Je parviens soit à faire une recherche par mot clé soit une recherche sur les cases cochées.

Si j'utilese :
"select * from educa where id_fiche_doc in ($criteres)";
ou
"select * from educa mot_cle LIKE '%VARCle%'";

c'est ok, cependant si j'associe les deux comme dans mon 1er message, ça foire!

Y a-t-il une possibilité de compiler les deux?
Merci de votre patience

Mammouth du PHP | 19672 Messages

11 juin 2005, 17:26

Code : Tout sélectionner

select * from educa where id_fiche_doc in ($criteres) OR mot_cle LIKE '%VARCle%';
Essaye avec ça :)
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Invité
Invité n'ayant pas de compte PHPfrance

11 juin 2005, 17:41

Marche pô :?
Il ne tiens pas compte du mot clé. Seules les cases cochées sont prises en compte dans les résultats de la recherche.

Et si j'écris juste un mot clé et que je coche aucune case, j'obtien un message d'erreur du genre :
Warning: implode(): Bad arguments. in c:\.... on line 3
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ') OR mot_cle LIKE '%VARCle%'' at line 1
voici la ligne 3 : $criteres=implode(",",$_POST["VARCase"]);

Pierre

Mammouth du PHP | 19672 Messages

11 juin 2005, 17:48

ta variable $critere est un tableau ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Invité
Invité n'ayant pas de compte PHPfrance

15 juin 2005, 16:15

Non, pas à ce que je sache.



Pierre