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

Langage PHP Discussion :

Recherche FULLTEXT


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 26
    Par défaut Recherche FULLTEXT
    Re Bonjour tout le monde
    Je reviens encore avec mes problèmes (il y en a un autre et se serra fini )

    J'ai créer une petit moteur de recherche en FULLTEXT (et LIKE si l'on veut rajouter des critères à la recherche)
    Bon bref c'est pas terrible et je suis consient de pas être un pro du PHP.
    MAIS et je dis bien mais, un problème persiste.

    La recherche fonctionne, SAUF sur un client (et seulement 2 caractère je ne sais pourquoi)

    Je vous explique :

    Voici ma table :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    CREATE TABLE `clients` (
      `id` int(10) unsigned NOT NULL auto_increment,
      `categorie` varchar(200) default NULL,
      `nom` varchar(200) default NULL,
      `prenom` varchar(200) default NULL,
      `profession` varchar(200) default NULL,
      `societe` varchar(200) default NULL,
      `adresse` varchar(200) default NULL,
      `adresse2` varchar(200) default NULL,
      `codepostal` varchar(200) default NULL,
      `ville` varchar(200) default NULL,
      `fixe` varchar(200) default NULL,
      `fax` varchar(200) default NULL,
      `portable` varchar(200) default NULL,
      `fonction` varchar(200) default NULL,
      `site` varchar(200) default NULL,
      `mail` varchar(200) default NULL,
      `commentaire` text,
      `idnom` int(11) NOT NULL,
      PRIMARY KEY  (`id`),
      FULLTEXT KEY `nom` (`categorie`,`nom`,`prenom`,`profession`,`societe`,`adresse`,`adresse2`,`codepostal`,`ville`,`fixe`,`fax`,`portable`,`fonction`,`site`,`mail`,`commentaire`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=4267 ;

    Et Voici l'endroit ou ça foire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    (43, 'Particulier', 'Bidddl', 'Mil Ldeuc', NULL, NULL, '2 rue des nouilles patates frite', '', '66600', 'Moulinlaville', '0376564657', NULL, '', NULL, NULL, 'jl.bihll@mangerlesfrite.zo', 'Famille\r\n', 37),
    Lorsque je recherche "jl", il ne me trouve pas l'adresse mail (même si l'on remplace "jl" par "yu" ou n'importe quoi qui à 2 caractère) Par contre si je recherche "bihll" ou "mangerlesfrite" il me retourne bien l'adresse mail....
    Alors que

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    (1, 'Particuliers', 'Badouhe', 'Cladee', NULL, NULL, '21 bis nan tu sauras pas', '', '57950', 'Icibas', '0344444444', NULL, '0666666666', NULL, NULL, 'cl.bau
    zer@free.fr', 'Famille\r\n', 28),
    ici si l'on recherche "cl" il retourne bien l'adresse mail !!!


    Au cas ou voici un bout d'mon code php (la partie requete pour la recherche)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    if ($zcrite=='znom'){
    $requetemysql = "SELECT *  FROM ".$table." WHERE nom LIKE \"%".$recherche."%\"";
    }
    elseif ($zcrite=='zprenom') {
    $requetemysql = "SELECT *  FROM ".$table." WHERE prenom LIKE \"%".$recherche."%\"";
    }
    elseif ($zcrite=='zvillez'){
    $requetemysql = "SELECT *  FROM ".$table." WHERE ville LIKE \"%".$recherche."%\"";
    }
    else{
    $requetemysql = 'SELECT *  FROM '.$table.' WHERE MATCH (categorie,nom,prenom,profession,societe,adresse,adresse2,codepostal,ville,fixe,portable,fonction,mail,commentaire ) AGAINST(\''.$recherche.'*\'IN BOOLEAN MODE)';
    }
    Je n'ai vraiment aucune idée pourquoi il ne veut pas chercher dans cette foutu ligne les 2 caratères avant le point de l'adresse mail...

    Merci beaucoup à vous tous

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2002
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 194
    Par défaut
    extrait du manuel mysql en ligne dans une partie qui parle de MATCH... AGAINST

    MySQL utilise un filtre très simple pour séparer le texte en mots. Un "mot" est n'importe quelle chaîne de caractères constituée de lettres, chiffres, ‘'’ et ‘_’. Tout "mot" présent dans la liste des mots à ignorés ou qui est trop court (3 caractères ou moins) est ignoré.

    cl est trop court je dirais

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 26
    Par défaut
    La recherche est en BOOLEAN donc pas de problème au niveau du nombre de caractère.

    Et si la recherche était trop courte pourquoi alors trouver une autre ligne lorsque je recherche "cl" (regarde mon post de départ tu comprendras mieux)

    Merci quand même

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2002
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 194
    Par défaut
    et il te renvoit autre chose?
    il se pourrait qu'un autre enregistrement corresponde mieux...


    ou alors essaye de mettre dans les autres champs des . histoire de voir si jamais ce ne serait pas le . qui gènerait pour la recherche...

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 26
    Par défaut
    Non le . ne dérange pas puisqu'avec le 2 eme exemple que je vous donne ça marche.
    Et même si je change les 2 caractère du premier exemple ça ne marche pas.

    Et pour reprendre mon premier post :

    (1, 'Particuliers', 'Badouhe', 'Cladee', NULL, NULL, '21 bis nan tu sauras pas', '', '57950', 'Icibas', '0344444444', NULL, '0666666666', NULL, NULL, 'cl.bau
    zer@free.fr', 'Famille\r\n', 28),

    La recherche avec "cl" fonctionne parfaitement

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2004
    Messages
    496
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 496
    Par défaut
    Salut,

    jpose toujours la question au cas où.. est-ce que tu fais des echo de tes requêtes pour les tester directement dans phpMyAdmin?

Discussions similaires

  1. Problème avec la recherche FULLTEXT
    Par izbing dans le forum Requêtes
    Réponses: 6
    Dernier message: 23/01/2008, 22h13
  2. recherche fulltext et "&"
    Par chicobra dans le forum Requêtes
    Réponses: 3
    Dernier message: 27/11/2006, 09h52
  3. 1 base InnoDB et 1 base MyISAM pour recherche fulltext
    Par babarincairo dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 23/06/2006, 09h25
  4. recherche fulltext : mot non trouvé
    Par sam01 dans le forum Requêtes
    Réponses: 1
    Dernier message: 30/05/2006, 14h03
  5. Problème sur la recherche fulltext en v4 !
    Par poppa dans le forum Requêtes
    Réponses: 3
    Dernier message: 13/05/2004, 23h06

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