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 :

Mettre plusieurs mots différents en évidence [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 41
    Par défaut Mettre plusieurs mots différents en évidence
    bonjour,
    dans mon moteur de recherche, je souhaite mettre en évidence tous les mots recherchés.
    j'ai un comportement bizarre avec le <span>
    en effet si ma chaine de recherche contient une des lettres du code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <span style="background-color:#ffcc00">
    alors je retrouverai ce paramètre dans ma recherche ???
    ex : si ma chaine vaut : recherche color
    je vais retouver en résultat :
    recherchecolor:#ffcc00">recherchecolor:#ffcc00">recherchecolor:#ffcc00">recherchecolor:#ffcc00...

    si je retire du code l'attribut donné à span alors je n'ai plus de problème.
    comment faire pour que ma variable sortie accepte le <span style...>

    voici le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    $description=mysql_result($selection_recherche,$i,"description" );
        $titre=mysql_result($selection_recherche,$i,"titre" );
    	$titre = "<b><FONT color = blue>$titre</FONT></b>";
        $mots[$nombre_mots_boucle]= $recherche;
        $rech[0]= "/($mots[0])/i"; // i permet de conserver la casse
    	$rech[1]= "/($mots[1])/i"; // i permet de conserver la casse
    	$sortie[0]='<span style="background-color:#ffcc00"><b>$1</b></span>';
    	$sortie[1]='<span style="background-color:#ffcc00"><b>$1</b></span>';
    echo preg_replace($rech,$sortie,$titre);
    	echo "<br>";
    	echo preg_replace($rech,$sortie,$description);
        echo"<br>";

  2. #2
    Membre Expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Par défaut
    Il suffit de décomposer la recherche en mots, enlève tous les caractères spéciaux (sauf les tirets) et remplace les par des + par exemple dans ta recherche.

    Ensuite pour chaque mot tu effectue une requête SQL qui va voir si ce mot correspond à des résultats dans la recherche.

    Pour chaque résultat trouvé tu remplace le mot par <strong>mot</strong> (<strong> représentant sémantiquement la force d'un mot, il est mis en exergue en quelques sortes).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    // str_replace des caractères spéciaux par des +
    $mots = str_replace(' ','+',$_POST['input']);
    $mots = explode('+',$mots);
    foreach($mots as $mot)
       {
       $sql = mysql_query("SELECT * FROM table WHERE champ='%".$mot."%'");
       while($res = mysql_fetch_array($sql))
          {
           echo str_replace($mot,'<strong>'.$mot.'</strong>',$res['champ']);
          }
       }

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

Discussions similaires

  1. find + grep recherche de plusieurs mots dans des fichiers différents
    Par sakura.haruno dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 27/04/2010, 22h58
  2. Réponses: 3
    Dernier message: 13/08/2008, 08h54
  3. mettre un ou plusieurs mot en gras et selectionnez une partie
    Par Iria77 dans le forum Général Python
    Réponses: 5
    Dernier message: 19/07/2007, 09h34
  4. [bit]Mettre un mot de 16 bits (string) en short
    Par -=Spoon=- dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 27/03/2004, 21h07
  5. Comment mettre plusieurs objets ds un composant ?
    Par Fleury dans le forum Composants VCL
    Réponses: 7
    Dernier message: 24/05/2003, 17h34

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