Nous sommes actuellement le 01 Juil 2026, 12:49

Le fuseau horaire est UTC-5 heures [Heure d’été]




Publier un nouveau sujet Répondre au sujet  [ 4 message(s) ] 
Auteur Message
MessagePublié: 23 Nov 2006, 14:46 
Hors-ligne
Régulier
Régulier

Inscription : 05 Fév 2002, 22:00
Message(s) : 489
Bonjour,

Je suis en train de mettre un champs recherche sur un site.

Je veux qu'on puisse trouver un string dans un champs de ma db.

Donc, si qqun écrit "Lecteur de CD" et qu'un produit a "Lecteur de CD" dans son nom, je veux que ce produit soit affiché.

Ma query est déjà fait et fonctionne à merveille.
Code :
$query_products = "SELECT * FROM products WHERE name_0 LIKE '%".addslashes($search_field)."%' ORDER BY name_0";



Par contre, j'aimerais que si qqun écris "Lecteur CD", les produits comprenant ces deux mots soient écris (donc, logiquement, les mêmes résultats qu'avec l'autre query.

Comment est-ce que je peux faire ?

Merci

Mathieu ;)

_________________
-------------------
Mathieu Lessard

"Toute grande guerre se gagne d'abord par de petits coups d'épée"


Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 23 Nov 2006, 15:16 
Hors-ligne
Fidèle
Fidèle

Inscription : 06 Jan 2003, 19:14
Message(s) : 689
Je ne sais pas s'il existe une fonction préfaite pour ça, mais moi je le fais d'une manière qui ressemble à ça :
Code :
$query = "1=1"

$mots = explode( $search )

foreach( $mots as $mot )
$query .= " AND produit LIKE '%$mot%'"


Tu peux jouer avec AND / OR, et gérer les tirets devant les mots si tu veux :P (pour exclure)

_________________
Comparateur de prix informatique - InfoPrix.ca


Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 23 Nov 2006, 22:07 
Hors-ligne
Fidèle
Fidèle
Avatar de l’utilisateur

Inscription : 22 Jan 2002, 18:33
Message(s) : 823
Localisation : Montréal
Ou si c'est des catégories précises, tu fais un ComboBox au lieu d'un champ texte libre.

_________________
PentiumIV 2,4GHz (533 FSB) <-> Asus P4S8X <-> 512Mo DDR333 Samsung <-> Radeon 9500Pro (Built by ATI) <-> SoundBlaster Audigy Gamer <-> DVD-ROM LG 16x <-> Graveur LG 32x10x40x <-> Enermax 350W <-> Boîtier custom <-> Samsung SyncMaster 955DF 19" <-> Windows XP Édition Familiale


Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 24 Nov 2006, 01:32 
Hors-ligne
Référence
Référence
Avatar de l’utilisateur

Inscription : 07 Jan 2002, 00:24
Message(s) : 5834
Au lieu de faire des addslashes vous devriez apprendre à utiliser les requêtes paramétrées. C'est beaucoup plus sécuritaire.

Sans oublier, si c'est ce que vous faites dans votre vrai code, de nommer les champs voulu au lieu d'utiliser l'*. Comme ça, si vous ajoutez ou enlevez des champs dans la table ça fera sortir les erreurs/modifications à faire plus rapidement.

Pour la requête, tu peux remplacer les espaces par des %
Comme ça le Like sera "%lecteur%cd%" et des trucs comme "lecteur de Cd" devraient sortir dans les résultats. Faut voir le % comme un wildcat/joker (communément un * dans la recherche de fichiers par exemple).

Cependant, si tu veux des OR je crois que tu devras faire comme l'exemple ci-dessus. Soit séparer chaque éléments et en faire une suite de OR.

_________________
This posting is provided "AS IS" with no warranties, and confers no rights!
©2006 - 2014 Jump


Haut
 Profil  
Répondre en citant  
Afficher les messages publiés depuis :  Trier par  
Publier un nouveau sujet Répondre au sujet  [ 4 message(s) ] 

Le fuseau horaire est UTC-5 heures [Heure d’été]


Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 2 invité(s)


Vous ne pouvez pas publier de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum

Recherche de:
Aller vers :  
cron
Propulsé par phpBB® Forum Software © phpBB Group
Traduction et support en françaisHébergement de site