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 sur mots-clés par expression régulière [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 16
    Points : 13
    Points
    13
    Par défaut Recherche sur mots-clés par expression régulière
    Bonjour,

    Et bien voilà ce code affiche qu'un seul enregistrement...

    voir exemple sur mon site, et taper pour mot clef "test" et cocher "article" :

    http://www.france-webmaster.fr

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    //-->> RECEPTION de $expression
    //...POST...
     
    $expression = sql_regcase("$expression");
     
    		//-->> REQUETE
    		$req_resultat_article = "SELECT auteur,nom_article,code_article,mot_clef FROM article WHERE mot_clef REGEXP '".$expression."' OR contenu REGEXP '".$expression."'";
     
    		//-->> EXECUTION DE LA REQUETE
    		$selection_resultat_article_req = mysql_query($req_resultat_article) or die (''.mysql_error());
     
    		//-->> ADAPTATEUR DE VARIABLE EN BOUCLE
    		$resultat_article_1 = '
    		<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber2" height="28">
    		<tr>
    		<td width="5%" height="12" align="center"><font color="#808080" face="Verdana" size="2"></font></td>
    		<td width="15%" height="12" align="center"><font color="#808080" face="Verdana" size="2">Auteur</font></td>
    		<td width="15%" height="12" align="center"><font color="#808080" face="Verdana" size="2">Code article</font></td>
    		<td width="30%" height="12" align="center"><font color="#808080" face="Verdana" size="2">Nom de l\'article</font></td>
    		<td width="35%" height="12" align="center"><font color="#808080" face="Verdana" size="2">Mot clef</font></td>
    		</tr>
    		<tr>
    		';
     
    		//-->> GENERATEUR DE VARIABLE
    		while($data_resultat_article_req = mysql_fetch_array($selection_resultat_article_req)) 
    		{
    			$resultat_article_2 = '
    			<td width="5%" height="12" align="center"><p align="center"><img border="0" src="design/image/ICONES/moderna/(24).gif"></p></td>
    			<td width="15%" height="12" align="center"><font color="'.$couleur_text.'" size="'.$taille_text.'" face="'.$police_text.'">'.stripslashes($data_resultat_article_req["auteur"]).' </font></td>
    			<td width="15%" height="12" align="center"><font color="'.$couleur_text.'" size="'.$taille_text.'" face="'.$police_text.'">'.stripslashes($data_resultat_article_req["code_article"]).' </font></td>
    			<td width="30%" height="12" align="center"><font color="'.$couleur_text.'" size="'.$taille_text.'" face="'.$police_text.'">'.stripslashes($data_resultat_article_req["nom_article"]).' </font></td>
    			<td width="30%" height="12" align="center"><font color="'.$couleur_text.'" size="'.$taille_text.'" face="'.$police_text.'">'.stripslashes($data_resultat_article_req["mot_clef"]).' </font></td>
    			';
    		}
     
    		$resultat_article_3 = '
    		</tr>
    		</table>
    		';

    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
    16
    17
    18
    19
    20
    21
     
    -- 
    -- Structure de la table `article`
    -- 
     
    CREATE TABLE `article` (
      `auteur` varchar(20) collate latin1_german2_ci NOT NULL,
      `contenu` longtext collate latin1_german2_ci NOT NULL,
      `nom_article` varchar(255) collate latin1_german2_ci NOT NULL,
      `code_article` varchar(255) collate latin1_german2_ci NOT NULL,
      `mot_clef` varchar(255) collate latin1_german2_ci NOT NULL,
      PRIMARY KEY  (`nom_article`,`code_article`),
      UNIQUE KEY `nom_article` (`nom_article`,`code_article`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_german2_ci;
     
    -- 
    -- Contenu de la table `article`
    -- 
     
    INSERT INTO `article` VALUES ('moi', 'Article de test xxxxxxxxxxxxxx', 'Article de test 2', '1556488', 'test');
    INSERT INTO `article` VALUES ('moi', 'Article de test xxxxxxxxxxxxxx', 'Article de test 1', '1556487', 'test');
    Il devrait y avoir Article de test 1 ET Article de test 2

    Merci.

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 497
    Points : 12 600
    Points
    12 600
    Par défaut
    et un LIKE ne serait pas suffisant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "SELECT auteur,nom_article,code_article,mot_clef FROM article WHERE mot_clef LIKE '%".$expression."%' OR contenu LIKE '%".$expression."%'";

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 16
    Points : 13
    Points
    13
    Par défaut
    Et bien j'obteint exactement le même résultat (affiche q'un seul enregistrement) voir sur le site à présent.

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    //-->> REQUETE
    		$req_resultat_article = "SELECT auteur,nom_article,code_article,mot_clef FROM article WHERE mot_clef LIKE '%".$expression."%' OR contenu LIKE '%".$expression."%'";
     
    		//-->> EXECUTION DE LA REQUETE
    		$selection_resultat_article_req = mysql_query($req_resultat_article) or die (''.mysql_error());
     
    		//-->> ADAPTATEUR DE VARIABLE EN BOUCLE
    		$resultat_article_1 = '
    		<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber2" height="28">
    		<tr>
    		<td width="5%" align="center"><font color="#808080" face="Verdana" size="2"></font></td>
    		<td width="15%" align="center"><font color="#808080" face="Verdana" size="2">Auteur</font></td>
    		<td width="15%" align="center"><font color="#808080" face="Verdana" size="2">Code article</font></td>
    		<td width="30%" align="center"><font color="#808080" face="Verdana" size="2">Nom de l\'article</font></td>
    		<td width="35%" align="center"><font color="#808080" face="Verdana" size="2">Mot clef</font></td>
    		</tr>
    		';
     
    		//-->> AFFICHAGE
    		while($data_resultat_article_req = mysql_fetch_array($selection_resultat_article_req)) 
    		{
    			$resultat_article_2 = '
    			<tr>
    			<td width="5%" align="center"><p align="center"><img border="0" src="design/image/ICONES/moderna/(24).gif"></p></td>
    			<td width="15%" align="center"><font color="'.$couleur_text.'" size="'.$taille_text.'" face="'.$police_text.'">'.stripslashes($data_resultat_article_req["auteur"]).' </font></td>
    			<td width="15%" align="center"><font color="'.$couleur_text.'" size="'.$taille_text.'" face="'.$police_text.'">'.stripslashes($data_resultat_article_req["code_article"]).' </font></td>
    			<td width="30%" align="center"><font color="'.$couleur_text.'" size="'.$taille_text.'" face="'.$police_text.'">'.stripslashes($data_resultat_article_req["nom_article"]).' </font></td>
    			<td width="35%" align="center"><font color="'.$couleur_text.'" size="'.$taille_text.'" face="'.$police_text.'">'.stripslashes($data_resultat_article_req["mot_clef"]).' </font></td>
    			</tr>
    			';
    		}
     
    		$resultat_article_3 = '
    		</table>
    		';
    merci, quand même pour la tentative, y a t-il d'autres possibilités ?

  4. #4
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 497
    Points : 12 600
    Points
    12 600
    Par défaut
    Donc, si je comprend bien ton code, quelque part tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo $resultat_article_2;
    dans ce cas, c'est normale que tu n'affiches qu'une seule ligne puisque tu ne concatènes pas ton code.

    tu as ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $resultat_article_2 = '
    et tu devrais avoir ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $resultat_article_2 .= '
    remarque le point avant le signe "=", dans ton code à toi tu affectes toujours le résultats de la dernière boucle, or en concaténant avec le point tu ajouteras le code à ta variable.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 16
    Points : 13
    Points
    13
    Par défaut
    Ah !! Merci cela fonctionne correctement. Merci

    Et bonne journée.

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

Discussions similaires

  1. [MySQL] Recherche de mots-clés sur plusieurs champs
    Par Berpj dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 09/07/2012, 20h23
  2. Colorer les mots clés via expression régulière
    Par Fikou-Sama dans le forum VB.NET
    Réponses: 0
    Dernier message: 15/09/2009, 22h05
  3. recherche par expression régulière
    Par guiyomh dans le forum C++
    Réponses: 2
    Dernier message: 29/06/2008, 12h14
  4. Formulaire de recherche sur mots clés
    Par Tharsis dans le forum IHM
    Réponses: 5
    Dernier message: 25/08/2007, 00h16
  5. Recherche sur mots de 3 lettres
    Par mamizo dans le forum Bases de données
    Réponses: 7
    Dernier message: 16/02/2005, 14h59

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