-
ne pas respecter la case
Bonjour à tous,
je suis entrain de développer une testothèque, et j'aimerai que lorsque l'on fait une recherche la personne ne doit pas taper le nom du test tel qu'il est écrit dans la base .
Auriez-vous une idée de la manière de procéder?
pour le moment j'utilise un select basé sur la valeur entrée dans un champ texte.
Merci d'avance pour votre aide
-
Tu peux faire un like pour tester des parties de chaine mais les requêtes vont être considérablement ralenties. Le mieux à faire est de mettre des tags sur les tests et faire les recherches dessus (avec un petit coup d'autocomplétion Ajax et hop - un exemple ici). Sinon, tu peux également obtenir tous les labels de tes items et déterminer lequel est le plus proche de la chaine de recherche avec un algo de levenshtein par exemple.
-
merci de ta réponse je vais essayer tes propositions
-
A mon avis tu devrais le faire graduellement, si tu as un index sur le champ sur lequel portera la requête c'est mieux. On peut le faire par étapes:
1 - vérifier à tout hasard si la chaine de recherche existe directement (avec un =)
2 - vérifier si on trouve la chaine de recherche en tant que sous chaine (avec un like '%$recherche%' par exemple)
3 - obtenir tous les noms (ou seulement les plus utilisés) et boucler dessus en calculant la distance de levenstein avec la chaine de recherche, trier le tableau produit et afficher les n premier résultats
Avec ça tu aura un algo pas trop mal ;)