Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1719 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Glossaire - Création de liens nom -> définition

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Glossaire - Création de liens nom -> définition

n°709336
Beegee
Posté le 27-04-2004 à 09:29:21  profilanswer
 

Salut à tous :)
 
la question aurait aussi pu être posée dans d'autres catégories (HTML par exemple), mais je pense qu'elle a sa place ici ;)
 
Je suis en train de coder un petit site, utilisant PHP et mySQL.
J'ai une table GLOSSAIRE, dans laquelle j'ai une association entre en terme, et sa définition.
 
La plupart des pages du site sont dynamiques, générées par du PHP.
 
Je voudrais que chaque terme qui apparait dans le glossaire soit 'cliquable' et qu'un clic dessus affiche la définition provenant du glossaire.
 
Pour les quelques pages statiques du site, pas de problème, je code en dur le lien vers la définition.
 
Pour les pages dynamiquement créées par du PHP, c'est plus compliqué ...
Je pense qu'avant d'afficher une page html produite par du PHP, il faut stoquer le résultat (html) produit par le script PHP dans une chaîne, et appeler une fonction PHP qui parse cette chaîne, et pour chaque mot, regarde si le mot est dans le glossaire, et si c'est le cas, remplace <le mot> par <le mot et le lien vers le glossaire>.
 
Bien sûr, il faut mettre le contenu de la table GLOSSAIRE en cache (dans un tableau), pour ne pas faire une requête à chaque mot rencontré ...
 
Est-ce viable ? Trop gourmand ?
 
Quelqu'un a déjà fait quelque chose de ce genre ?
 
Merci d'avance :)

mood
Publicité
Posté le 27-04-2004 à 09:29:21  profilanswer
 

n°709338
dropsy
et bonne chance surtout...
Posté le 27-04-2004 à 09:32:04  profilanswer
 

gourmand, peut-être, faut faire le test
un coup d'ob_start() et Cie pour récupérer la sortie html puis des regexp [:proy]

n°709340
benou
Posté le 27-04-2004 à 09:34:26  profilanswer
 

faudrait peut être faire la liaison avec les définitions au moment de l'ajout en base des cnotenus plutot qu'à l'affichage...

n°709341
Beegee
Posté le 27-04-2004 à 09:35:06  profilanswer
 

ça peut se faire en une grosse expression régulière ?
ou plusieurs (autant que de termes dans le glossaire) ?
 
je vais jeter un coup d'oeil à ob_start() ;)

n°709342
Beegee
Posté le 27-04-2004 à 09:36:01  profilanswer
 

benou a écrit :

faudrait peut être faire la liaison avec les définitions au moment de l'ajout en base des cnotenus plutot qu'à l'affichage...


 
je préfererais éviter ...
Ca deviendrait le souk à maintenir, surtout si on veut changer l'arborescence du site, etc.

n°709353
benou
Posté le 27-04-2004 à 09:42:31  profilanswer
 

Beegee a écrit :

je préfererais éviter ...
Ca deviendrait le souk à maintenir, surtout si on veut changer l'arborescence du site, etc.


faut juste prévoir une fonction de mise à jour des "liens définitions" en base.  
 
Franchement, ca ressemble à une usine à gaz ce que tu es en train de penser ... Rien que la page d'accueil de ton site : pour chaque visite va falloir faire à chaque fois le même traitement, qui génèrera exactement le même contenu ...
 
pour l'histoire de l'arborescence, tu peux ruser : plutot que d'ajouter un lien genre <a href="/def/http.html">HTTP</a>, tu peux plutot faire <a href="javascript: def('http');">HTTP</a>.
Ensuite, libre à toi de mettre ce que tu veux dans la fonction javascript def() ... Et en cas de mise à jour de l'arbo, tu as juste à modifier cette fonction.
 
Si j'étais toi, je mettrai aussi un attribut class="def" de façon à pouvoir facilement repérer les "liens définitions" après coup ...


Message édité par benou le 27-04-2004 à 09:43:49
n°709357
dropsy
et bonne chance surtout...
Posté le 27-04-2004 à 09:48:39  profilanswer
 

benou a écrit :

Franchement, ca ressemble à une usine à gaz ce que tu es en train de penser ... Rien que la page d'accueil de ton site : pour chaque visite va falloir faire à chaque fois le même traitement, qui génèrera exactement le même contenu ...


faut voir, avec un petit système de cache associé, ça peut le faire [:proy]
 
c'est plus au niveau de la recherche des mots à définir qu'il risque d'avoir un problème... par exemple, si un des mots est "body", il faudrait pas flinguer le code html :D

n°709360
Beegee
Posté le 27-04-2004 à 09:50:46  profilanswer
 

Je peux pas trop mettre à jour le contenu des tables en fait, j'en ai plus de 80 à me taper, ce serait vraiment trop lourd à faire ...
 
Si vraiment j'arrive pas à faire les liens dynamiquement (ou si c'est trop coûteux), tant pis, je ferai un glossaire statique, sans lien pointant dessus ...

n°709362
Beegee
Posté le 27-04-2004 à 09:51:45  profilanswer
 

dropsy a écrit :

faut voir, avec un petit système de cache associé, ça peut le faire [:proy]
 
c'est plus au niveau de la recherche des mots à définir qu'il risque d'avoir un problème... par exemple, si un des mots est "body", il faudrait pas flinguer le code html :D


 
ça c'est ok, les termes apparaissant dans le glossaire sont assez scientifiques (le site parle de champignon et emploie des termes assez incompréhensibles pour un néophyte ;) ).

n°709380
benou
Posté le 27-04-2004 à 10:08:23  profilanswer
 

autre solution : faire le traitement de recherche des mots et d'ajout des liens côté client en javascript ...
 
avantage : tu ne modifies pas tes données en base, et le cout du traitement à la volée n'est pas payé par ton serveur mais est réparti sur les postes clients


Message édité par benou le 27-04-2004 à 10:08:38
mood
Publicité
Posté le 27-04-2004 à 10:08:23  profilanswer
 

n°709432
Beegee
Posté le 27-04-2004 à 10:49:18  profilanswer
 

c'est une possibilité, oui ...
 
faut voir si c'est viable, je vais faire quelques essais ;)

n°709901
Beegee
Posté le 27-04-2004 à 16:26:04  profilanswer
 

une autre question, maintenant que je commence à implanter un appel à ereg_replace :)
 
J'aimerais remplacer par exemple :
- les occurences du mot 'blanc' par '<a href=...>blanc</a>'
- mais aussi les occurences du mot 'blancs' par '<a href=...>blancs</a>'
 
etc. (en réalité tous les mots 'blanc[ .,;s]' par eux-mêmes entourés du lien html :) )
 
Mais le problème c'est que j'arrive pas à récupérer la chaîne 'blancs' par exemple, pour la mettre au milieu des balises <a> ...
 
Exemple de code qui ne marche pas :

Code :
  1. function creerLiensGlossaire($buffer)
  2. {
  3.  // Parcours des données de la table GLOSSAIRE.
  4. $res = mysql_query("SELECT  GLOSSAIRE.TERME, GLOSSAIRE.DEFINITION
  5.      FROM  GLOSSAIRE;" );
  6. while ($row = mysql_fetch_array($res))
  7. {
  8.  $terme = $row['TERME']."[ .,;s]";
  9.  $remplacant = "<a target=\"_blank\" href=\"../script/glossaire.php?terme=".$row['TERME']."\" >".$row['TERME']."</a>";
  10.  // Création d'un lien vers le glossaire pour chaque terme y apparaissant
  11.  $buffer = ereg_replace($terme, $remplacant, $buffer);
  12. }
  13.  return $buffer;
  14. }


 
(ça ne marche pas puisque ça remplace 'blancs' par 'blanc' à l'affichage ...)
 
Des idées ?


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Glossaire - Création de liens nom -> définition

 

Sujets relatifs
[Assembleur] Problème de définition de variable ?[STRUTS] Creation de menu avec struts-menu
[JAVA] Creation de Jar Executable ???Création d'une appli pour Palm + base MySQL
Cherche soft pour affichage BDD avec liens entre tableBesoin d'aide pour la creation de *.bat !!!
création d'un fichier excel en html (ancre nommé en bas de page??)Creation de JButton avec une boucle for
A propos des liens... DreamweaverPb programme de création d'IHM
Plus de sujets relatifs à : Glossaire - Création de liens nom -> définition


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR