CHAMP MYSQL

deewayne
Invité n'ayant pas de compte PHPfrance

27 oct. 2012, 10:57

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

Mammouth du PHP | 19672 Messages

28 oct. 2012, 12:34

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

04 nov. 2012, 12:05

:!: 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: