Mysql_query remonte plus de résultats que nécessaire.
Calypdoso
Messages postés18Date d'inscriptionmardi 18 octobre 2005StatutMembreDernière intervention 3 juillet 2009
-
17 juin 2009 à 22:31
kohntark
Messages postés3705Date d'inscriptionlundi 5 juillet 2004StatutMembreDernière intervention27 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
A voir également:
Mysql_query remonte plus de résultats que nécessaire.
Calypdoso
Messages postés18Date d'inscriptionmardi 18 octobre 2005StatutMembreDerniè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.
syndrael
Messages postés2378Date d'inscriptionlundi 4 février 2002StatutMembreDernière intervention29 décembre 201220 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 "
Calypdoso
Messages postés18Date d'inscriptionmardi 18 octobre 2005StatutMembreDerniè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.