Mysql_query remonte plus de résultats que nécessaire.

Calypdoso Messages postés 18 Date d'inscription mardi 18 octobre 2005 Statut Membre Dernière intervention 3 juillet 2009 - 17 juin 2009 à 22:31
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 - 19 juin 2009 à 16:41
Bonjour,

Pour commancer en une phrase, j'ai demandé de l'aide sur ce site il y a quelques semaines. Problème espaces dans des immatriculations.
Je remercie tout le monde et désolé que le sujet se soit mal passé. En faite les testes étaient réalisé par une autre personne que moi et il testait autre chose que le sujet souhaité.
Je me suis monté une copie de son serveur chez moi.
Le code frounit est bon.
--------------------------
//---------------------------------------------------
function avecespace($str) {
return preg_replace('/^([[:digit:]]{2,4})(\s?)([[:alpha:]]{2,4})(\s?)([[:digit:]]{2})$/', '\\1 \\3 \\5', $str);
}

function sansespace($str){
return str_replace(' ','', $str);
}

$req = mysql_query("SELECT * FROM $table WHERE FA_Prenom LIKE '%".$_POST['info']."%' AND FA_Nom LIKE '%".$_POST['info2']."%' AND Immat LIKE '%".avecespace($_POST['info3'])."%' OR Immat LIKE '%".sansespace($_POST['info3'])."%' AND DtValid LIKE '%".$_POST['info4']."%' Order by DtValid Desc ");

//---------------------------------------------------

**********************************
Maintenant que je peux tout tester ici directement, je vois un autre problème.
Le demande une recherche de 141fg02, le résulat affiche bien avec le code ci-dessus 141fg02 et 141 fg 02.
Mais aussi 9141fg02. Ces dernier ne doit pas être compris dans le résultat attendu. Il y a un 9 et derrière 141fg02. Mais avec ce 9 c'est une autre immat donc ne doit pas s'afficher.

Avez-vous une solution à me proposer.
Merci.
Calypdoso

6 réponses

syndrael Messages postés 2378 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 29 décembre 2012 20
18 juin 2009 à 12:08
Ca ne vient pas de la priorité du AND sur le OR ?  Les parenthèses seraient surements utiles non ??
S.
0
Calypdoso Messages postés 18 Date d'inscription mardi 18 octobre 2005 Statut Membre Dernière intervention 3 juillet 2009
18 juin 2009 à 14:30
Bonjour et merci pour votre aide.
Si je place des parenthèses, plus rien remonte en résultat.
---------------------
$req = mysql_query("SELECT * FROM $table WHERE FA_Prenom LIKE '%".($_POST['info'])."%' AND FA_Nom LIKE '%".($_POST['info2'])."%' AND Immat LIKE '%".avecespace($_POST['info3']).("%' OR Immat LIKE '%".sansespace($_POST['info3'])."%') AND DtValid LIKE '%".($_POST['info4'])."%' Order by DtValid Desc ");
----------------------
Pas de message d'erreur, simplement le message qui indique "désolé, rien de correspond à votre recherche"
Je retire les parenthèses, c'est ok mais avec l'immat. qui ne doit pas être 9141fg02.

Merci
0
syndrael Messages postés 2378 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 29 décembre 2012 20
18 juin 2009 à 15:22
Non je pense plutot à ça:

"SELECT * FROM $table WHERE FA_Prenom LIKE '%".$_POST['info']."%' AND
FA_Nom LIKE '%".$_POST['info2']."%' AND (Immat LIKE
'%".avecespace($_POST['info3'])."%' OR Immat LIKE
'%".sansespace($_POST['info3'])."%') AND DtValid LIKE
'%".$_POST['info4']."%' Order by DtValid Desc "
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
18 juin 2009 à 16:34
Salut,

... le grand retour !!!!

Il suffit de virer les %  autour des $_POST['info3']

Cordialement,

NB : please lis bien !!! et si tu ne comprends pas ne le dis pas dans 6 mois.

Kohntark -
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Calypdoso Messages postés 18 Date d'inscription mardi 18 octobre 2005 Statut Membre Dernière intervention 3 juillet 2009
18 juin 2009 à 17:58
Bonjour Kohntark,

Ca ne risque plus d'attendre 1 mois avant une réponse. J'ai une copie du serveur en atelier et donc la correction et la vérification sont faites.

Et......
Ca ....


Fonctionne !

Bon, donc les % indiquent qu'il faut rechercher tout ce qui comporte les éléments recherchés.
Sans les % alors la recherche est stritement les éléments recherchés.

Je peux donc retirer aussi les % des autres POST.

Merci
Cordialement
Calypdoso
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
19 juin 2009 à 16:41
on va finir par se comprendre .... tout est bien qui finit bien !!!

Bonne continuation,

Kohntark -
0
Rejoignez-nous