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 par mots clés


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé Avatar de Angelik
    Profil pro
    Inscrit en
    Août 2006
    Messages
    253
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 253
    Par défaut recherche par mots clés
    Bonjour tout le monde!

    J'ai mis en place un petit moteur de recherche pour mon application qui se présente de la façon suivante :

    Rechercher par [menu déroulant] [mots clés]

    Concrètement on rentre le mot clé (ou valeur) associé aux données du menu déroulant. Voici le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <form action="resultats.php" method="post" target="main">
    <td valign=top>Recherche sur <SELECT name='choix'> 
    <OPTION value='nom'>Nom</OPTION>
    <OPTION value='prix' selected>Prix</OPTION>
    <OPTION value='desc' selected>Description</OPTION>
    </select>
    <input type='text' size="10" name='word'>
    <input type='submit' value='OK'>
    </form>
    Quand je choisis dans le menu déroulant 'prix' , je rentre dans le champ texte correspondant la valeur de mon choix [exemple : 100]

    Actuellement l'application est configurée de telle sorte que tous les résultats égaux, et uniquement égaux à 100, s'affichent. Or je souhaiterais, afficher tous les résultats inférieurs ou égaux à 100.

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    if (!empty($word)) {
     
     
    		$search = mysql_query("SELECT id,nom,prix,desc FROM $mbmembre WHERE nom LIKE '%$word%' OR prix LIKE '%$word%' OR desc LIKE '%$word%'") or die ("ERROR:" . mysql_error());
    		$num = mysql_num_rows($search);
     
    if ($num == 0) {
     
    echo ''
     
    }
    }
    La solution devrait tourner autour de :
    WHERE prix LIKE '<=$word'

    Merci d'avance

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 28
    Par défaut
    Salut,

    Je pense qu'il faut que tu fasse deux requêtes. Si la valeur de la liste déroulante est 'nom' ou 'desc', tu utilises la requête que tu a écrit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE nom LIKE '%$word%' OR desc LIKE '%$word%'
    .
    Si c'est 'prix', tu fais un truc du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE prix LIKE <= '$word'
    Un dernier conseil écrit $_POST['$word'] au lieu de $word quand tu récupères les infos d'un formulaire passé par la méthode post, ça t'évitera des bugs .Si c'est par l'url, utilises $_GET['$word'].

    A+

  3. #3
    Membre éclairé Avatar de Angelik
    Profil pro
    Inscrit en
    Août 2006
    Messages
    253
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 253
    Par défaut
    Salut

    J'ai essayé de faire comme tu me suggérais ci dessus avec cette requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $search = mysql_query("SELECT id,nom,prix,desc FROM $mbmembre WHERE prix LIKE <='$word' ") or die ("ERROR:" . mysql_error());
    mais le message d'erreur apparaît que que je sollicite la recherche avec '100'

    ERROR:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '<='100'' at line 1
    Peut être que cette méthode n'est pas adaptée à mon application... Aussi comment puis-je réaliser un formulaire qui afficherait les résultats inférieurs ou égaux à ...

    merci d'avance

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 28
    Par défaut
    Salut,

    Désolé pour le temps de réponse

    Encore désolé c'est moi qui est fait une énorme boulette
    Il ne faut pas faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    WHERE prix LIKE <= '$word'
    mais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    WHERE prix <= '$word'
    Par contre tu devrais utilisé $_POST['$word'] au lieu de '$word'. C'est plus propre, ca t'évitera des erreurs si tu as un gros script et ce sera plus lisible si tu dois modifer ton script dans 1 ou 2 ans. Mais ça n'engage que moi

    Citation Envoyé par Angelik
    Aussi comment puis-je réaliser un formulaire qui afficherait les résultats inférieurs ou égaux à ...
    Ca dépend comment tu choisis la comparaison. Si c'est l'utilisateur, il faut que tu mettes une liste dans ton formulaire et en fonction de l

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 28
    Par défaut
    Salut,

    Désolé pour le temps de réponse

    Encore désolé c'est moi qui est fait une énorme boulette
    Il ne faut pas faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    WHERE prix LIKE <= '$word'
    mais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    WHERE prix <= '$word'
    Par contre tu devrais utilisé $_POST['$word'] au lieu de '$word'. C'est plus propre, ca t'évitera des erreurs si tu as un gros script et ce sera plus lisible si tu dois modifer ton script dans 1 ou 2 ans. Mais ça n'engage que moi

    Citation Envoyé par Angelik
    Aussi comment puis-je réaliser un formulaire qui afficherait les résultats inférieurs ou égaux à ...
    Ca dépend comment tu choisis la comparaison. Si c'est l'utilisateur, il faut que tu mettes une liste dans ton formulaire et en fonction de cette valeur tu choisis la requète à faire (comme avec le menu que tu as déjà fais desc, prix...). Il suffit donc de changer le signe de la comparaison dans la requète.

    A+

  6. #6
    Membre Expert

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Par défaut
    Je vais rabacher un peu, mais n'oublie pas de valider les données POST avant de faire une requête. Sinon tu risques l'injection SQL.

  7. #7
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 931
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 931
    Par défaut
    T'as de la chance que MySQL ne te fasse pas plus chier que ça avec un nom de champ tel que "desc".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT ...
    ...
    ORDER BY nom DESC

Discussions similaires

  1. Recherche par mot clés - Php -Mysql
    Par pod1978 dans le forum Requêtes
    Réponses: 8
    Dernier message: 22/09/2006, 13h01
  2. recherche par mots-clés dans base access
    Par syber72 dans le forum Access
    Réponses: 2
    Dernier message: 07/03/2006, 13h53
  3. [MySQL] recherche par mots clés
    Par spartan dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 16/02/2006, 16h11
  4. [Tableaux] Moteur de recherche par mot clés
    Par Nee dans le forum Langage
    Réponses: 4
    Dernier message: 20/01/2006, 11h30
  5. Recherche par mots clés
    Par legillou dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 17/06/2005, 10h56

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