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 :

Comment comparer plusieurs mots à un champ ?


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 185
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 185
    Par défaut Comment comparer plusieurs mots à un champ ?
    Bonjour,
    J'ai un petit problème. J'essaye de faire une petit moteur de recherche pour chercher des mots dans une table de ma base de donnée.

    Si je cherche un mots, ca marche, mais si je mets deux mots ou plus, ca me retourne rien du tout.

    Voivi 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
    14
    15
     
    $this->Page->find('all', array(
    	        	'conditions' => array(
    	        		'online'=>'1',
    	        		'type'=>'page',
    	        		'created <= NOW()',
    	        		'id > 1',
    	        		'OR' => array(
    	        			//implode(' AND ', $searchTermBits)
    	        			'Page.name LIKE'=>'%'.$search.'%',
    	        			'Page.content LIKE'=>'%'.$search.'%'
    	        			)
    	        		),
    	        	'fields' => array('name','content','created','id','type')
    	       	));
    le ou les mots se trouvent dans la variable $search
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    // Table.field LIKE =>
    'Page.name LIKE'=>'%'.$search.'%',
    Je ne sais pas comment faire pour que plusieur mots soit considéré dans que Page.name

    Mon code est équivalent à
    $substring = 'WHERE (fd_name LIKE "%'.$_POST['search_'].'%")';

    Mais comment puis-je faire pour oavoir plusieurs mots considérés?

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 185
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 185
    Par défaut
    J'ai trouvé cette solution,mais y a encore un petit problème. Il ne teins pas en compte les mots avec accent, comme "défis".

    La solutions est la suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $conditions = array();
    			$search_terms = explode(' ', $this->request->data['Search']['key']);
        		$search_terms = array_diff($search_terms,array(''));
     
       			foreach($search_terms as $search_term){
            		$conditions[] = array('Page.name Like' =>'%'.$search_term.'%');
            		$conditions[] = array('Page.content Like' =>'%'.$search_term.'%');
        		}
    puis, j'utilise ¨condition dans mon where.

    Mais savez-vous comment "ignorer" les accents?

  3. #3
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 324
    Par défaut
    Bonjour, cela dépend de la collation
    COLLATE utf8_general_ci par défaut ?
    alors la pas de problème : "é"=="e" pour sql (_general) et "e"=="E" (_ci)

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 185
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 185
    Par défaut
    Ben c'est ce que j'ai pas defaut

Discussions similaires

  1. Comment comparer plusieurs tableaux entre eux ?
    Par djibril dans le forum Téléchargez
    Réponses: 2
    Dernier message: 21/08/2012, 13h14
  2. Comment extraire plusieurs mots d'un fichier ?
    Par OzGuillaume dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 04/02/2012, 13h43
  3. Réponses: 4
    Dernier message: 15/04/2011, 17h13
  4. comment concatener plusieurs champs?
    Par polianita dans le forum Access
    Réponses: 1
    Dernier message: 07/07/2006, 16h46
  5. Comment comparer un texte avec plusieurs apostrophes
    Par electrosat03 dans le forum Access
    Réponses: 2
    Dernier message: 13/02/2006, 12h46

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