Ajouter des commentaires aux pages Web statiques

Vous aimeriez savoir ce que les lecteurs pensent de votre article? Vous pouvez installer un système de gestion de contenu complet, et passer quelques semaines à déplacer vos pages et vous efforcer d'obtenir que le système ait le look qu'avait votre site jusque là, ou sinon utiliser un outil spécialisé facile à installer et fonctionnant seul.

Le système de commentaires est très simple:
- chaque page qui doit être commentée aura un fichier d'accompagnement XML qui contiendra tous les commentaires pour cette page.
- quand l'article est affiché, le contenu du fichier XML est chargé dynamiquement par un script Ajax et les commentaires sont affichés en bas de page.
- un script d'authentification est utilisé en outre pour stocker les logins, mot de passe, adresses e-mail, etc... cela dans un autre fichier XML.

Pour la première démonstration, un simple commentaire peut être entré par le lecteur et il est sauvé dans le fichier demo-comment.xml, puis la présente page est rechargée, le fichier XML est chargé par un script Ajax et le contenu est parsé et affiché en bas de page.

Voici le code qui scanne le fichier XML en utilisant les méthodes de DOM getElementByTagName() et getElementById().

function processData(doc)
{ 
  var element = doc.getElementsByTagName('login').item(0);
  document.getElementById("login").innerHTML= element.firstChild.data; 
  document.getElementById("comment").innerHTML= 
doc.getElementsByTagName('comment').item(0).firstChild.data; }

Ajouter un commentaire à une page, démo

Dans l'application réelle, un login et un mot de passe sont d'abord demandés, le commentaire sera ajouté dans un fichier XML avec les précédents commentaires et le contenu de ce fichier est ajouté dynamiquement à la page Web lorsqu'elle est chargée. Des cadres sont créés pour chaque commentaire.
Un gestionnaire complet permettant de voir et effacer les commentaires sera plus tard disponible pour compléter l'outil.
Le template de vos pages doit inclure le script JavaScript.

  1. Entrer un login (taper n'importe quoi) et ajouter un commentaire dans le formulaire.
    Cliquer sur le bouton "Ajouter Commentaire".
  2. La page est rechargée et le login et le commentaire sont insérés dans le cadre en bas de page.

Télécharger la démonstration

Les codes sources de la démonstration:

Commentaires et utilisateurs multiples

L'étape suivante est le support de commentaires multiples par des utilisateurs différents. Le fichier XML pour stocker les commentaires a le format suivant:

<comments>
  <comment login="" post=""/>
  ...
</comments>

La génération du fichier utilise les fonctions de l'objet DOMDocument de PHP 5:

$fname="demo-comment.xml";

$doc = new DOMDocument("1.0", "UTF-8");
$doc->load($fname);
$list=$doc->getElementsByTagName("comments")->item(0);
$comtag= $doc->createElement("comment");
$list->appendChild($comtag);
$comtag->setAttribute("login", $login);
$comtag->setAttribute("post", $comment);

$doc->save($fname);

Le fichier JavaScript récupère le contenu au chargement de la page avec une fonction Ajax et transfère les données XML dans un tableau.

function checkComments(xcontent)
{
  var dnl = xcontent.getElementsByTagName("comment");
  var arr = new Array();
  for(i=0;i< dnl.length;i++)
  {
    var e = dnl.item(i);
    var login = unescape(e.getAttribute("login"));
    var comment = unescape(e.getAttribute("post"));
    arr[i] = new Array(login, comment);
  }
  return arr;
}

Le code source complet est dans l'archive.

Forum

Problème pour ajouter des commentaires aux pages Web

19-12-2011 20:52:12

adamian

Bonjour, Je suis en train de mettre un encart, sur mon site, pour permettre aux lecteurs de laisser un message ou un commentaire. Sur le site de Scriptol, j'ai trouvé ce que je cherchai, voir : [url]https://www.scriptol.fr/cms/commentaires.php[/url] ça fonctionne, mais on ne peut laisser q'un seul message alors qu'il est dit qu'ils s'additionnent. De plus, le message affiché est à chaque fois remplacé par le suivant. J'ai cherché l'erreur sans succès. Je ne suis pas programmateur, alors si quelqu'un peut me venir en aide ! Il y a 4 fichiers à télecharger en format zipé. Merci.

20-12-2011 20:24:16

webmaster

Bonjour L'article ne dit pas vraiment cela: "Pour la démonstration, un simple commentaire peut être entré par le lecteur et il est sauvé dans le fichier demo-comment.xml". Mais je vais mettre en ligne demain une démonstration qui ajoute plusieurs commentaires. Il s'agit dans tous les cas d'un simple exemple, sans contrôle des utilisateurs, ce qui est absolument nécessaire, cela ne peut être utilisé en production.

20-12-2011 21:11:11

adamian

Bonjour, Merci pour la réponse, je galère. J'ai bien lu et relu et rerelu tout ce qui y était écrit mais comme je le dis les commentaires ne restent pas en mémoire dans le fichier xhtml. C'est le seul truc qui me reste à faire pour finaliser mon site internet, le seul. Mon serveur est chez free et il accepte le php car tout fonctionne bien en php sur mon site. Si vous avez la gentillesse de regarder où se situe le problème, dans le script ou dans le code. Merci beaucoup. Phil

21-12-2011 10:59:57

webmaster

Un nouveau script a été mis en ligne.

21-12-2011 16:13:08

adamian

Bonjour, Sympa, j'ai essayé de suite mais il y a une erreur qui s'affiche qand j'envoi : Parse error: syntax error, unexpected T_OBJECT_OPERATOR in /mnt/151/sdb/d/1/monsite/commentlib.php on line 25 J'ai trouvé un oubli dans le fichier xhtml et l'ai corrigé mais ça fonctionne pas et le message d'erreur indique le fichier lib.php. Mystère ?!!! Phil

21-12-2011 19:36:49

webmaster

J'ai essayé sur un hébergement en PHP 4.4.9 et je reçois le même message d'erreur. Cela fonctionne parfaitement sous PHP 5. En l'occurence 5.3. Essayez de configurer le répertoire pour PHP 5 avec un fichier .htaccess. C'est possible avec la plupart des hébergeurs.

21-12-2011 19:39:37

adamian

Houla c'est pas gagné je me renseigne, autant vous dire que je trépigne d'impatience pour que ça marche.

21-12-2011 21:53:25

adamian

Je crois que ça ne marchera jamais ! J'ai activé le PHP5 de free en mettant le fichier .htaccess avec PHP 1 dedans et maintenant il n'y a plus de message d'erreur. Cependant les commentaires ne s'enregistrent pas ni ne s'affichent. J'ai essayé des mix avec les fichiers demo et multi sans succès. J'ai cru trouver des oublis et les ai comblé sans succès. Je pense que le problème vient du serveur de Free. Merci pour votre aide qui aidera peut être ceux qui comme moi galèrent. Phil

22-12-2011 17:09:27

webmaster

Il paraît que .htaccess doit être au format UTF-8 chez Free pour être pris en compte. Un appel à phpinfo(INFO_GENERAL); permet de vérifier la version et le fonctionnement. Si rien ne s'affiche, on peut aussi placer des points d'arrêt tels que echo "ici"; pour localiser l'erreur.