IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Recherche FULL TEXT IN BOOLEAN MODE et les Quotes [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre régulier Avatar de GarGamel55
    Profil pro
    Inscrit en
    Août 2005
    Messages
    154
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 154
    Points : 106
    Points
    106
    Par défaut Recherche FULL TEXT IN BOOLEAN MODE et les Quotes
    Bonjour,

    Sur mon site je mets à disposition un moteur de recherche par mots clés grâce à la recherche fulltext de mysql.

    Via un formulaire je récupère le mot clé Ex : orient

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    $recup= trim(addslashes($_POST['nom']));
    	if(empty($recup)) 
    	{ 
    	echo '</br><span class="texteSOUSTITRE"><center><b>Veuillez entrer au moins un mot clé</center></b></span>'; 
    	exit(); 
    	}
    puis la base de données me retourne le texte concerné.

    Extrait de mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    $req=mysql_query ("SELECT titre, id FROM fiche WHERE MATCH (titre, panier) AGAINST ('%$recup%' IN BOOLEAN MODE)" )or die (mysql_error());
    $nb=mysql_num_rows($req);
     
    	...
     
    	{
    	while($donnees=mysql_fetch_array($req))
    	echo '<li><a href="../mig/fiche.php?id='.$donnees['id'].'" class="menu">'.stripslashes(($donnees['titre'])).'</a></li><br>';
    	}
    Cela marche bien sauf si dans le texte il y a une quote ex : L'orient, dans ce cas il me trouve bien,

    sauf si je mets dans ma bdd un \ ex : L\'orient

    Comment résoudre ce problème sans a voir à chaque fois mettre un \ devant les quotes dans ma bdd?

    Merci

    Garg
    né le 14/12/2006 pis un autre le 25/05/2010

  2. #2
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Si tu fais un Qu'est-ce que ça dit ?

  3. #3
    Membre régulier Avatar de GarGamel55
    Profil pro
    Inscrit en
    Août 2005
    Messages
    154
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 154
    Points : 106
    Points
    106
    Par défaut
    ça me retourne :

    string(6) "orient"

    donc il me prend bien le mot, mais il ne me retourne pas le texte si y a pas un \ avant la quote.

    je sèche là ....
    né le 14/12/2006 pis un autre le 25/05/2010

  4. #4
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    euh... tu as tapé L'orient et il ne te récupère que orient ???
    Autre test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var_dump($_POST['nom']);
    :

  5. #5
    Membre régulier Avatar de GarGamel55
    Profil pro
    Inscrit en
    Août 2005
    Messages
    154
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 154
    Points : 106
    Points
    106
    Par défaut
    euh non j'ai tapé que orient est mon objectif est qu'il me retourne le texte contenant l'orient

    et avec var_dump($_POST['nom']); il me retourne string(6) "orient"

    et si je tape l'orient il me retourne bien le texte, du coup si je mets un espace entre la quote et le mot dans ma bdd, il me retourne aussi le texte, mais du coup la mise en forme n'est pas agréable.

    Y a t il un moyen pourqu'il dissocie la quote du mot qui le suit ? :
    né le 14/12/2006 pis un autre le 25/05/2010

  6. #6
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Bon ben j'ai relu et j'ai pas compris le problème. Tu peux donner des exemples plus explicite ? Pour chaque :
    - Phrase dans la bd
    - mot recherché
    - resultat attendu
    - resultat obtenu
    - erreurs obtenues

  7. #7
    Membre régulier Avatar de GarGamel55
    Profil pro
    Inscrit en
    Août 2005
    Messages
    154
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 154
    Points : 106
    Points
    106
    Par défaut
    ok et merci de ta patience surtout

    Phrase dans la bd
    > M'avertir lorsqu'une réponse est postée

    mot recherché (entré depuis le formulaire)
    >avertir

    resultat attendu
    > M'avertir lorsqu'une réponse est postée

    resultat obtenu
    > Aucune réponse trouvée
    (message qui s'affiche si pas de résultat)

    erreurs obtenues
    >aucune

    Mais si je tape : M'avertir là il me retourne bien : M'avertir lorsqu'une réponse est postée.
    né le 14/12/2006 pis un autre le 25/05/2010

  8. #8
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Ok, c'est soudainement plus clair, je comprends maintenant le problème, mais je sais pas le résoudre. Vachement avancé hein ?

    Si tu executes cette requête directement sous phpMyAdmin, ca te retournes le résultat attendu ?

  9. #9
    Membre régulier Avatar de GarGamel55
    Profil pro
    Inscrit en
    Août 2005
    Messages
    154
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 154
    Points : 106
    Points
    106
    Par défaut
    désolé d'avoir mal motcalisé

    sous phpMyAdmin c'est exactement la même chose.

    Merci quand même
    né le 14/12/2006 pis un autre le 25/05/2010

  10. #10
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Alors c'est un soucis avec mysql. Essaie de demander dans le forum dédié à MySql, il y a des pros qui trainent dessus de temps en temps

  11. #11
    Membre régulier Avatar de GarGamel55
    Profil pro
    Inscrit en
    Août 2005
    Messages
    154
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 154
    Points : 106
    Points
    106
    Par défaut
    J'ai pris le problème en amont plutôt qu'en aval

    désormais j'utilise htmlentities() lorsque j'alimente ma bdd comme ca je n'ai plus à me poser de question

    Idem dans mon moteur de recherche et voilà !

    Bye

    et encore Merci à toi :

    Garg
    né le 14/12/2006 pis un autre le 25/05/2010

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Recherche Full-text: performance
    Par billoum dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 15/12/2006, 16h11
  2. Recherche Full Text
    Par fadeninev dans le forum SQLite
    Réponses: 1
    Dernier message: 20/10/2006, 10h21
  3. [recherche FULL TEXT ]
    Par viny dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 20/09/2006, 17h08
  4. [Info]moteur de recherche full text en environnement j2ee
    Par ddams dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 03/11/2004, 19h39
  5. Recherche FULL Text existe que dans MySql ?
    Par seb.49 dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 01/06/2004, 22h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo