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

Requêtes MySQL Discussion :

Une chaîne, une requête, des résultats...


Sujet :

Requêtes MySQL

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 114
    Points : 73
    Points
    73
    Par défaut Une chaîne, une requête, des résultats...
    Bonsoir à tous,

    J'ai dans ma page un formulaire de recherche classique avec une entrée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="text" name="mot_cle" />
    On peut y taper une chaîne de caractères, voire plusieurs. Lorsqu’on l'envoie, $mot_cle est alors comparé avec les valeurs d'un champ pseudonyme dans une table liste. Voici la requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM liste WHERE pseudonyme LIKE '%$pseudo_professionnel%'
    Comme vous le voyez, cette requête fonctionne très bien lorsque $mot_cle contient :
    -> soit exactement les mêmes caractères dans le même ordre qu’une ou plusieurs valeurs du champ pseudonyme dans la base
    -> soit une sous chaîne d'une chaîne contenue dans le champ pseudonyme dans la base

    En revanche, si par malheur $mot_cle contient une sous chaîne ou une chaîne (qui est égale à une chaîne ou une sous chaîne d’une ou plusieurs valeurs du champ pseudonyme dans la base) mais que que cette variable contient en outre d'autres caractères, l’occurrence est considérée comme fausse et il n’y a pas de résultat le cas échéant

    Concrètement, si :

    $mot_cle="luc programmation"

    …et que dans la base à une certaine ligne j’ai :

    pseudonyme="luc"

    Eh bien aucun résultats n’en résulte malgré la présence de la sous chaîne "luc" dans $mot_cle.

    Vous l’avez compris, je souhaiterais augmenter un peu la tolérance de sélection en modifiant par exemple la requête… même si avec mes maigres connaissances ça n’est pas chose aisé

    Merci pour votre aide

  2. #2
    Membre expert
    Avatar de Alexandre T
    Homme Profil pro
    Chef de projets AMO
    Inscrit en
    Mai 2002
    Messages
    1 213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets AMO
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 213
    Points : 3 001
    Points
    3 001
    Par défaut
    Je t'invite à lire la documentation sur les index de type FULL TEXT. (C'est vrai que quand on ne connait pas la nom de ce type d'index, il est difficile de trouver )

    Tu trouveras tout à l'endroit indiqué ci dessous. Je n'explique pas plus car la documentation française est excellente. Même un tutoriel ferait double emploi.

    http://dev.mysql.com/doc/mysql/fr/fulltext-search.html

    Bonne lecture.
    Alexandre Tranchant
    Chef de projet AMO pour le Cerema.
    Retrouvez mes articles sur PHP et Symfony

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 114
    Points : 73
    Points
    73
    Par défaut
    Merci pour l'info

    Je bloque encore sur un obstacle : MySQL ne << veut >> pas m'ajouter la fonction fulltext

    Concretement, dans ma base j'ai une table. Dans cette table, j'ai ajouté le texte en gras ci-dessous :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    CREATE TABLE `liste` (
      `numero_id` smallint(6) unsigned NOT NULL auto_increment,
      `numero_siret` bigint(20) default NULL,
      `statut_exercice` text,
      `date_debut_exercice` date default NULL,
      `pseudonyme` text NOT NULL,
      PRIMARY KEY  (`numero_id`)
      [b]FULLTEXT (pseudonyme)[/b]
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=137 ;
    Le problème est le suivant : lorsque je chage ces lignes dans MySQL phpMyAdmin, une erreur s'urvient et MySQL me répond :

    #1064 - Erreur de syntaxe pr�s de 'FULLTEXT (pseudonyme)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AU'


    Merci pour votre aide !!

  4. #4
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    tu as oublié la virgule à la fin de la ligne "PRIMARY KEY"

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 24/10/2013, 15h44
  2. Une même variable donne des résultats différents
    Par profilien dans le forum Langage
    Réponses: 5
    Dernier message: 23/04/2013, 09h14
  3. Procédure SQL : Ajout d'une chaîne à une autre
    Par Yakaldir dans le forum DB2
    Réponses: 5
    Dernier message: 10/03/2007, 15h54
  4. [SQL2K]Une même requête des résultats différents
    Par jeeerome dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 11/07/2006, 14h20
  5. remplir une table en fonction des résultats
    Par Psychomantis dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 19/10/2004, 12h22

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