recherche plusieurs mots dans un champs

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Bonsoir,

je viens à vous avec un petit soucis. Sur mon site j'affiche des chronologies par mois via la boucle while ci-dessous. Dans cette chronologie il peut y avoir et même presque tout le temps plusieurs événements par jour d'où l'utilisation d'une petite fonction qui me permet de fermer mon cadre DIV selon quel'on passe ou pas au jour suivant. Tout fonctionne à merveille dans le code ci-dessous :

 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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
$old = "";
$i = 0;

while($row = $requete->fetch(PDO::FETCH_OBJ))
{

if($row->jour != $old){

   if($i != 0){echo "</div>";} // fermeture cadre

    echo "<div class='cadre_chronologie'>";
    echo "<h1>";
    //Affichage de la date
    echo $row->jour;
    echo " ".$row->mois." ";
    echo $row->annee." ";
  echo "</h1>";

   $old = $row->jour;

   //affichage du drapeau + pays si plusieurs pays
    if (!empty($row->code_html))
    {
echo $row->code_html."<br />";
//affichage du texte
echo $row->texte."<br /><br />";
    }

    else
    {
        //affichage du drapeau + pays
        echo "<img src='http://www.seconde-guerre.com/images/drapeaux/".$row->drapeau.".gif' alt='".$row->pays."' class='drapeaux' /> <i><b>".$row->pays."</b></i><br />";
        //affichage du texte
        echo $row->texte."<br /><br />";
    }
}
else
{

   //affichage du drapeau + pays si plusieurs pays
    if (!empty($row->code_html))
    {
echo $row->code_html."<br />";
//affichage du texte
echo $row->texte."<br /><br />";
    }

    else
    {
        //affichage du drapeau + pays
        echo "<img src='http://www.seconde-guerre.com/images/drapeaux/".$row->drapeau.".gif' alt='".$row->pays."' class='drapeaux' /> <i><b>".$row->pays."</b></i><br />";
        //affichage du texte
        echo $row->texte."<br /><br />";
    }
}
$i++;
}
echo "</div>"; // fermeture cadre

J'ai une autre table dans ma BDD "glossaire" qui contient des mots et une définition de celui-ci (83 mots pour le moment).

Je voudrais rechercher les mots de ce glossaire dans le champs texte ($row->texte) de ma table qui contient les dates et événements.

J'ai bien essayé via une boucle, mais soit cela ne donnait rien ou alors des erreurs partout …

J'ai donc repris mon code original car avec tous mes essais je ne m'y retrouvais plus

Pourriez-vous m'aider ?

D'avance je vous remercie de me lire et pour vos futures réponses.

ci-dessous ma fonction qui prend le mot du glossaire et le cherche dans mon champs

1
2
3
4
5
6
7
8
//--------------------------------------------------------------------------------------
//Recherche des mots du glossaire
//--------------------------------------------------------------------------------------
function glossaire($mots,$chaine)
//met un lien sur les mots trouvés
{
    return preg_replace("#$mots#","<a href='http://www.seconde-guerre.com/glossaire-$0.html' class='lien'>$0</a>",$chaine);
}
+0 -0

Hello fdac6154,

Si j'ai bien compris, tu as 2 tables et tu ne fais qu'une seule requête SQL dans ton code PHP. Les 2 tables sont en relations entre elles via une clef étrangère ou non ?

HTTP/1.1 418 I'm a teapot

+0 -0

Tant mieux si tu as trouvé la réponse à ton problème, est-ce-que tu peux l'indiquer dans un message stp, histoire que si quelqu'un se pose la même question que toi et fais une recherche, il ait une réponse, pour éviter cet effet là :

Wisdom of the Ancients

Merci à toi !

Happiness is a warm puppy

+0 -0
Auteur du sujet

J'ai récupérer les mots à rechercher dans un tableau avec fetch_column et j'utilise une petite fonction qui cherche les mots dans le texte :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
function glossaire($mots,$chaine)
//met un lien sur les mots trouvés
{

$motif='#\b('.implode('|',$mots).')s?\b#';

$sortie="<a href='http://www.seconde-guerre.com/glossaire-$0.html' class='lien'>$0</a>";
echo preg_replace($motif,$sortie,$chaine);

}
+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte