Page 1 sur 1

sinthax de LIKE pour un bouton rechercher...

Posté : 11 oct. 2013, 23:36
par wwwbillgates
Bonjour, je souhaiterais faire un bouton rechercher en utilisant LIKE mais je ne connais pas la sinthax pour faire se que je voudrais. Car en effet je souhaiterai que lorsque l'utilisateur tape par exemple une phrase du genre :
"Vêtements pour homme" alors cela devra récupérer dans ma base de donnée les champs qui comportent le mot clé "hom" par exemple ou le mot clé "vetemen" qui sont dans une table "keywords" de ma BDD écrit de cette manière : hom,vetemen,chauss,casquett,adult,pentallon,pentalon..................etc


$sql_situations = $bdd->prepare("
						SELECT titre
						FROM vetements
						WHERE keywords LIKE '%" . $tenue . "%'
						AND afficher = :afficher
						ORDER BY ordre
						");
$sql_situations->execute(array(
						'afficher' => 1
						));
$sql_situations->setFetchMode(PDO::FETCH_ASSOC);

Re: sinthax de LIKE pour un bouton rechercher...

Posté : 11 oct. 2013, 23:50
par damien_55
Salut,

Compliqué ton histoire....

quelqu'un tape => "Vêtements pour homme" et il faut que ça te recherche "hom" dans ta bdd ?

Excuse moi de te dire ça, mais elle est pourrie ta table keyword.

Soit tu prend en consideration tout le mot "homme" et vetement etc... peu de gens vont tapé chauss pour cherché des chaussures quand au reste des mots que tu donnes dans keyword, lorsque on fait des recherches, on met rarement les accents mais de là à écrire chauss, pentallon etc... il faudrait fainéant et vraiment nul en orthographe.

Bref tout ça pour te dire qu'il est largement plus facile d'utiliser le LIKE en "passant" de:
homme à "vetements pour homme" que de "vetements pour homme" à "hom". il va falloir faire un traitement sur la chaine "vetements pour homme" pour extraire que "hom" et le mettre dans ton LIKE.

C'est une usine a gaz ton truc. reprends ta table keyword et fait des vrais mots pour commencer.

Re: sinthax de LIKE pour un bouton rechercher...

Posté : 12 oct. 2013, 00:01
par damien_55
Sinon,

Tu peux utiliser: http://php.net/manual/fr/function.strpos.php
<?php
$mystring = 'abc';
$findme   = 'a';
$pos = strpos($mystring, $findme);

// Notez notre utilisation de ===.  == ne fonctionnerait pas comme attendu
// car la position de 'a' est la 0-ième (premier) caractère.
if ($pos === false) {
    echo "La chaîne '$findme' ne se trouve pas dans la chaîne '$mystring'";
} else {
    echo "La chaine '$findme' a été trouvée dans la chaîne '$mystring'";
    echo " et débute à la position $pos";
}
?>
Tu adaptes pour ton cas, genre $_post['recherche'] qui correspond a ta chaine de recherche.

tu fais un explode sur ton champs keyword, pour chaque mot de ton champ keyword, tu vérifies si il est présent dans la chaine $_post['recherche'] et tu retournes tes résultats.

Re: sinthax de LIKE pour un bouton rechercher...

Posté : 12 oct. 2013, 09:15
par sirakawa
En php, il y a similar_text et levenshtein qui pourraient servir

Re: sinthax de LIKE pour un bouton rechercher...

Posté : 13 oct. 2013, 11:29
par wwwbillgates
Merci pour vos votre aide ca m'a permis de faire ce que je souhaitais, très bonne journée