Page 1 sur 1

CHAMP MYSQL

Posté : 27 oct. 2012, 10:57
par deewayne
Bonjour,

j'ai une site de covoiturage, et dans mon champs villes, plusieurs villes commence par "saint".
cependant plusieurs internautes cherche ses villes avec l'appellation "st".
j'aurai aimé que si l'internaute cherche une ville avec "st" ou "saint" que cela pointe sur la même ville.

Doit je 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 ????.

Re: CHAMP MYSQL

Posté : 28 oct. 2012, 12:34
par Cyrano
Non, simplifie lors de la construction de ta requête. Détecte la présente de « saint » ou de « st » dans la donnée envoyée et adapte la clause WHERE en mettant quelque chose du genre
...
WHERE ville = 'saint laurent'
   OR ville = 'st laurent'
Tu peux faire ça avec deux petites expressions régulières, exemple :
$ville = $_POST['ville'];
$masque1 = "#^(saint)(e?\s.*)#i";
$masque2 = "#^(st)(e?\s.*)#i";
if(preg_match($masque1, $ville))
{
    $sWhere = "WHERE ville = '". $ville ."' OR ville = '". preg_replace($ville, "st$2") ."'";
}
elseif(preg_match($masque2, $ville))
{
    $sWhere = "WHERE ville = '". $ville ."' OR ville = '". preg_replace($ville, "saint$2") ."'";
}
else
{
    $sWhere = "WHERE ville = '". $ville ."'";
}
Adapte en fonction de la manière dont du construis ta requête SQL.

Re: CHAMP MYSQL

Posté : 04 nov. 2012, 12:05
par albat
:!: Attention !
Si tu envisages de faire un remplacement automatique de "St" en "Saint", ça ne marchera pas.
il te faudra en effet prévoir plusieurs cas de figures.

exemples possibles :
- St Étienne
- St Etienne
- St-Étienne
- St-Etienne
- Saint Étienne
- Saint Etienne
- Saint-Étienne
- Saint-Etienne

sans oublier ces dames :
- Ste Menehould
- Ste-Menehould
- Sainte Menehould
- Sainte-Menehould

Il y a aussi :
- Saintes (en Saintonge)

et tous les "ST" ne sont pas des saints :
- St Genest Lerpt
- St Genest Malifaux
- St Just St Rambert (un best of à lui tout seul !) :lol:

42 powaaaa ! :mrgreen: