Partage
  • Partager sur Facebook
  • Partager sur Twitter

[MySql] comportement bizare à l'extraction

...problème de syntaxe requette?

Sujet résolu
    20 décembre 2011 à 19:48:03

    Bonjour,

    Débutant, j'ai adapté le code d'un système de recherche dans une BDD MySql. Cette BDD contient une table "id","nom_fichier", "description", "mot_clef", "repertoire".

    Actuellement, un formulaire simple (1 champs) me permet de rechercher 1 ou plusieurs mots dans les 3 champs "nom_fichier", "description", "mot_clef". Tous fonctionne bien.

    Maintenant, je souhaiterai pourvoir faire cette recherche par répertoire. J'ai donc ajouté un menu déroulant qui permet de choisir un répertoire et là suivant dans quel ordre je saisie les mots recherchés, le nombre de résultats est différent .... je ne comprend pas pourquoi. SI vous pouviez m’aiguiller vers une solution.

    Voici la requette :

    $selection_recherche = 
    mysql_query("
    SELECT * 
    FROM faq 
    WHERE $valeur_requete AND faq_repertoire = '$choix_dir' 
    ORDER BY faq_id DESC");
    


    $valeur_requete contient une concaténation de OR LIKE réalisé par 2 boucles for:

    faq_description LIKE '%gif%'OR 
    faq_description LIKE '%soleil%'OR
     
    faq_mots_clef LIKE '%gif%'OR 
    faq_mots_clef LIKE '%soleil%'OR
     
    faq_nom_fichier LIKE '%gif%'OR 
    faq_nom_fichier LIKE '%soleil%'
    


    et $choix_dir contient le répertoire choisi.

    Par exemple, si je saisie "gif soleil" dans un répertoire donné qui devrait retourner 6 résultats, 8 sont retournés dont 2 dans un répertoire voisin.
    Si je saisie "soleil gif" dans ce même répertoire, le résultat retourné est correct (6). J'ai testé d'autres combinaisons me donnant des résultats inexplicables.

    Merci d'avoir prix le temps de me lire.
    En attente de vos réflexions, Cordialement.
    • Partager sur Facebook
    • Partager sur Twitter
      20 décembre 2011 à 21:05:34

      Rajoute des () autour de $valeur_requete car AND a priorité sur OR.
      • Partager sur Facebook
      • Partager sur Twitter
        20 décembre 2011 à 22:17:37

        Merci Lord Casque noir, effectivement ça fonctionne maintenant.
        Dernier petit prob, que doit contenir la variable $choix_dir dans le cas ou je souhaite effectuer une recherche dans tous les répertoires.
        n'ayant trouvé de solution, j'imaginais une condition IF ELSE avec une seconde requette sans le AND.
        serait ce la solution?
        • Partager sur Facebook
        • Partager sur Twitter
          20 décembre 2011 à 22:23:33

          Oui (construis ta requête par morceaux).
          • Partager sur Facebook
          • Partager sur Twitter

          [MySql] comportement bizare à l'extraction

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown