Glossaire - Création de liens nom -> définition - PHP - Programmation
Marsh Posté le 27-04-2004 à 09:32:04
gourmand, peut-être, faut faire le test
un coup d'ob_start() et Cie pour récupérer la sortie html puis des regexp
Marsh Posté le 27-04-2004 à 09:34:26
faudrait peut être faire la liaison avec les définitions au moment de l'ajout en base des cnotenus plutot qu'à l'affichage...
Marsh Posté le 27-04-2004 à 09:35:06
ç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()
Marsh Posté le 27-04-2004 à 09:36:01
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.
Marsh Posté le 27-04-2004 à 09:42:31
Beegee a écrit : je préfererais éviter ... |
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 ...
Marsh Posté le 27-04-2004 à 09:48:39
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
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
Marsh Posté le 27-04-2004 à 09:50:46
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 ...
Marsh Posté le 27-04-2004 à 09:51:45
dropsy a écrit : faut voir, avec un petit système de cache associé, ça peut le faire |
ç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 ).
Marsh Posté le 27-04-2004 à 10:08:23
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
Marsh Posté le 27-04-2004 à 10:49:18
c'est une possibilité, oui ...
faut voir si c'est viable, je vais faire quelques essais
Marsh Posté le 27-04-2004 à 16:26:04
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 :
|
(ça ne marche pas puisque ça remplace 'blancs' par 'blanc' à l'affichage ...)
Des idées ?
Marsh Posté le 27-04-2004 à 09:29:21
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