Bonjour,

j'ai un site de covoiturage, et dans ma table villes j'ai un champs COMMUNE , et plusieurs communes intégrer dans la base de donnée commence par "saint".
cependant plusieurs internautes cherche ses communes avec l'appellation "st".
j'aurai aimé que si l'internaute cherche une commune avec "st" ou "saint" que cela pointe sur la même commune.

Donc, ma demande est comment interroger un champ avec deux valeurs différentes.

j'ai essayer de créer deux champs différents "st laurent" et "saint laurent" mais si quelqu'un fais une recherche avec "st laurent" il trouvera pas les annonces avec "saint laurent".

Doit je comme même faire deux champs par exemple; "st laurent" et "saint laurent" et ...?????
comment faire pour dire que "st laurent" et "saint laurent" sont la même ville.
et que çà ne soit pas dissocier ????.

On m'a conseiller d'utiliser la fonction like mais je ne vois pas comment l'intégrer.
Modérateur
Salut,

En php :
Tu peux utiliser preg_match()

avec une regex

if(preg_match("#(st|saint)#i",$_POST['ville'])){
	$sql = "
		SELECT
			*
		FROM
			maTable
		WHERE
			ville LIKE '%ST%'
		OR
			ville LIKE '%SAINT%'
	";
}


Tu peux également utiliser une RegEx dans Mysql :

SELECT
	*
FROM
	maTable
WHERE
	ville REGEXP '(ST|SAINT)'

Dans Mysql, il y a également une fonction de recherche de texte intéressante :

SELECT
	*
FROM
	maTable
WHERE
	MATCH
		(unChamp,unAutreChamp,etUnAutreChamp)
	AGAINST
		'ST'
OR
	MATCH
		(unChamp,unAutreChamp,etUnAutreChamp)
	AGAINST
		'SAINT'

code fait de tête. Je peux m'être trompé
Modifié par niuxe (29 Oct 2012 - 09:20)