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 libre pour un moteur de recherche


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 57
    Points : 28
    Points
    28
    Par défaut Recherche libre pour un moteur de recherche
    Bonjour,

    J'ai créé un petit moteur de recherche interne à partir d'un formulaire utilisant des champs prédéfinis. Je prévois de créer un champ de recherche "libre" ou l'utilisateur entre les mots qu'il veut.

    Pour l'instant ce champ libre fonctionne mais uniquement à partir d'un champ de la base de donnée.

    Voici ce bout de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (isset($_POST[textfield]) && $_POST[textfield] != "no") { 
    $textfield = "  AND description LIKE '%".mysql_real_escape_string($_POST['textfield'])."%'"; 
    } 
    else { $textfield = ""; }
    Je voudrais rajouter des champs à la requête (en fait mettre tous les champs de ma base de données). J'ai essayé de faire comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $textfield = " AND commune AND description LIKE '%".mysql_real_escape_string
    Lorsque je lance une recherche à partir de cette méthode plus rien ne s'affiche, mais la requête s'effectue normalement.

    Comment faire pour écrire correctement ce code ?

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Bonjour

    Tu veux que la recherche s'effectue sur tous les champs de ta table, c'est bien ça ?
    Moi j'aurais tendance à utiliser la méthode bourrin, mais ce n'est pas franchement optimal :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $textfieldsql = mysql_real_escape_string($_POST['textfield'])
    $textfield = "  AND ( description LIKE '%".$textfieldsql."%' OR commune LIKE '%".$textfieldsql."%' )";

  3. #3
    Membre du Club
    Profil pro
    Webmaster
    Inscrit en
    Mai 2007
    Messages
    52
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mai 2007
    Messages : 52
    Points : 52
    Points
    52
    Par défaut
    Je suppose qu'il y a le début de la requête plus haut dans ton code.

    Il ne faut pas oublier de concaténer $textefield avec le début de ta requête..

    par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $textefield = "SELECT ...";
     
    //...
     
    $textefield .= "  AND ( description LIKE '%".$textfieldsql."%' OR commune LIKE '%".$textfieldsql."%' )";

  4. #4
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 57
    Points : 28
    Points
    28
    Par défaut
    La méthode bourrin fonctione, essayer c'est l'adopter !!!

    Il y a juste un hic : je ne peux rentrer qu'une seule chaine de caractère à la fois. Comment puis-je résoudre ce problème ?

  5. #5
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Une seule chaine de caractères ? C'est-à-dire ? Tu veux que lorsque ton utilisateur tape "chaussette panier", ça renvoie les enregistrements qui ont "chaussette" et "panier" dans le même champ ? "chaussette" et "panier" dans deux champs différents ? au moins un des deux dans un champ ?

  6. #6
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 57
    Points : 28
    Points
    28
    Par défaut
    Oui c'est ça, ça fait pas chaussette panier...du coup je voudrais que ça recherche sur au moins deux champs différents.

Discussions similaires

  1. selection date ou VIDE pour un moteur de recherche
    Par popofpopof dans le forum VBA Access
    Réponses: 4
    Dernier message: 16/05/2007, 08h29
  2. Réponses: 7
    Dernier message: 03/04/2007, 21h57
  3. moteur de recherche libre?
    Par questionneuse dans le forum Développement Web en Java
    Réponses: 5
    Dernier message: 19/05/2006, 12h56
  4. [SQL] Aide pour un moteur de recherche
    Par Death83 dans le forum PHP & Base de données
    Réponses: 15
    Dernier message: 26/10/2005, 15h12
  5. comment faire ma base de donnée pour un moteur de recherche
    Par HoB dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 04/05/2004, 16h07

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