Trouver un mot et le rendre en lien

Sinistrus Messages postés 1010 Date d'inscription   Statut Membre Dernière intervention   -  
Sinistrus Messages postés 1010 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à tous !

Voilà, je souhaite que dans le texte qui s'affiche, mon script puisse détecter une chaîne de caractère et le transformer en lien hypertexte.

Je récupère la liste de mes mots:
$stat_p = $pdo->query("SELECT * FROM ".$TB_PRODUITS." "); while($data = $stat_p->fetch(PDO::FETCH_ASSOC)){
$Le_produit	= array($data["Libelle"].','); };


Et là j'ai essayé un
str_replace
mais me suis rendu compte que ça serait trop long à coder étant donné que j'ai plus de 900 mots à gérer... et en plus le remplacement est compliqué... en bref, j'ai merdé :\

J'ai des conseils à faire afficher et lorsque le texte contient le nom d'un produit, celui ci est automatiquement transformé en lien hypertexte avec une redirection vers son ID.

Pouvez-vous m'orienter svp ?
Merci d'avance


A voir également:

5 réponses

Sinistrus Messages postés 1010 Date d'inscription   Statut Membre Dernière intervention   17
 
Merci Pitet ! T'est mon héro !

Ca marche impec comme je voulais !
1
Pitet Messages postés 2845 Statut Membre 527
 
Salut,

Un exemple de solution possible :
$texte = 'Lorem ipsum dolor sit amet, Produit 1 consectetur adipiscing elit. Produit 2 laoreet nisi erat, eget Produit 3 viverra magna consectetur sagittis.';

$produits = array(
 array('id' => 1, 'Libelle' => 'Produit 1'),
 array('id' => 2, 'Libelle' => 'Produit 2'),
 array('id' => 3, 'Libelle' => 'Produit 3')
);

foreach ($produits as $produit) {
 $lien = '<a href="/produit.php?id=' . $produit['id'] . '">' . $produit['Libelle'] . '</a>';
 $texte = str_replace($produit['Libelle'], $lien, $texte);
}

echo $texte;


N'ayant pas accès à ta bdd, j'ai créé un tableau $produits correspondant aux données récupérées depuis la base.

Bonne journée
0
Sinistrus Messages postés 1010 Date d'inscription   Statut Membre Dernière intervention   17
 
Merci Pitet ! C'est exactement ça ! maintenant je vais l'adapter et voir ce que ça donne.

Merci infiniment !
ps: je ne met pas résolu maintenant :D
0
Sinistrus Messages postés 1010 Date d'inscription   Statut Membre Dernière intervention   17
 
J'avoue que je suis perdu sur cette partie là:
$produits = array(
 array('id' => 1, 'Libelle' => 'Produit 1'),
 array('id' => 2, 'Libelle' => 'Produit 2'),
 array('id' => 3, 'Libelle' => 'Produit 3')
);


Je sais que ma tentative est idiote mais voilà :
$stat_p = $pdo->query("SELECT * FROM ".$TB_PRODUITS); while($dataa = $stat_p->fetch(PDO::FETCH_ASSOC))
{
$produits = array('id' => $dataa["NumId"], 'Libelle' => $dataa["Libelle"]);
}


Et voici ma table :
CREATE TABLE IF NOT EXISTS `tb_produits` (
  `NumId` int(11) NOT NULL,
  `Libelle` varchar(255) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
0
Pitet Messages postés 2845 Statut Membre 527
 
Plus simple en utilisant fetchAll :
$stat_p = $pdo->query("SELECT NumId AS id, Libelle FROM ".$TB_PRODUITS);
$produits = $stat_p->fetchAll(PDO::FETCH_ASSOC);
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Sinistrus Messages postés 1010 Date d'inscription   Statut Membre Dernière intervention   17
 
Bonjour Pitet et désolé de re-ouvrir ce sujet.

Je rencontre un soucis, le code se perd en lui même.

<?php
$Sujet = $data["Sujet"];

$stat_p = $pdo->query("SELECT * FROM ".$TB_PRODUITS);
$produits = $stat_p->fetchAll(PDO::FETCH_ASSOC);

foreach ($produits as $produit) {
$img_ok = "../images/produits/".$produit['Code'].".png";

$lien = '<a class="Lien_souligne_point tooltip" href="'.URL_RACINE.'/produits/item.php?p='.$produit['NumId'].'">'.$produit['Libelle'].'<span>
<div class="div_conseil_1"><img src="'.$img_ok.'" alt="'.$produit['Libelle'].'" class="div_conseil_2"/></div>
<div class="Justifier div_conseil_3">'.$produit['Description'].'<br><br><div class="Font_Gris div_conseil_4">'.$produit['Contenance'].'</div></div></span></a>';

$Libelle = $produit["Libelle"];
$Sujet = str_replace($Libelle, $lien, $Sujet);}

echo nl2br($Sujet);
?>
Je voudrais savoir si tu pouvais m'aider une fois encore à trouver d'où vient cette erreur.

Cordialement.
0
Pitet Messages postés 2845 Statut Membre 527
 
Ton code semble correct. Quelle est l'erreur que tu rencontres ? As tu des données d'exemples pour les variable $Sujet et $produits ?
0
Sinistrus Messages postés 1010 Date d'inscription   Statut Membre Dernière intervention   17
 
Merci Pitet, je t'ai envoyé le lien en MP.
Je ne comprends pas pourquoi il affiche certains et "mélange d'autres".
0