Titre: Commentaires sans bases de données
Posté par: Flomaluso le le 26-11-2012 a 18:28:55
Bonsoir tout le monde,
Voila, je vous expose mon problème, j'ai commencé il y a quelque temps mon premier site, mais n'étant vraiment qu'un débutant, j'ai vraiment beaucoup de mal. Et je voulais mettre un système de commentaire sur mon site, mais je n'ai jamais réussi a utiliser ou a programmer comme il le faut, je ne sais pas, une base de donnée. J'ai donc utilisée un script en PHP qui enregistre les commentaires dans un fichier .txt. Le problème et que je voudrais maintenant mettre un deuxième et par la suite, plusieurs systeme de commentaires sur la même page.
Voici le script :
<?php //************************* //Définitions des variables //************************* $debug = 1; //0=off / 1=on $notification_mail = 1; //0=non / 1=oui $adresse_mail = "monadressemail@live.fr"; $provenance_mail = "From: lenomquonveut@live.fr"; //**** //Main //**** //Récupère le commentaire $commentaire = $_POST['commentaire']; //Extrait le nom de la page et l'utilise pour le nom du fichier de sauvegarde en ".txt" $script_name = $_SERVER['SCRIPT_NAME']; $pos = strrpos($script_name, "/"); $path = 'vacancesaintaygulf.txt'; if($debug == 1) //Gestion du cookies if(!isset($pseudo)) { $pseudo = $_POST['pseudo']; if($pseudo == "")$pseudo = "Votre prénom = )"; if($debug == 1) echo ""; } else if($debug == 1) echo $pseudo; //Enregistre et affiche les commentaires if(isset($_POST['submit'])) save_comment($path,$pseudo,$commentaire); else //Affiche les commentaires if(file_exists($path)) echo affiche_commentaires($path); //Affichage du formulaire echo ' <form enctype="multipart/form-data" name="comment_form" action="'.$_SERVER['PHP_SELF'].'" method="POST"> <br />Votre Prénom<br /> <input name="pseudo" type="text" value="'.$pseudo.'" size="20" > <br />Ajouter votre commentaire ici = ):<br /> <textarea name="commentaire" cols="70" rows="5"></textarea><br /> <input type="submit" name="submit" value="Envoyer le commentaire" /> <br /><br /> </form> '; //********* //Fonctions //********* function affiche_commentaires($path) { global $debug; if($debug == 1) $handletmp = fopen($path,"r"); $tableau_content = file($path); fclose($handletmp); //Affichage des commmentaires //*************************** // boucle sur tous les elements $HTML = '<style>.font_tableau{color: black; font-size: 10pt;}</style><br /><br />'; $HTML .= '<table width="550">'; $HTML .= '<tr><td align="center" bgcolor="#BEBEBE"><b>Vos impressions</b></td></tr>'; for($i=0; $i < count($tableau_content); $i++) { if($i%2==0) { $HTML .= '<tr><td class="font_tableau" valign="left" align="left" bgcolor="#FFFFFF">'; $HTML .= $tableau_content[$i].'</td></tr>'; } else { $HTML .= '<tr><td class="font_tableau" valign="center" align="left" bgcolor="#BEBEBE">'; $HTML .= $tableau_content[$i].'</td></tr>'; } } $HTML .= '</table>'; return $HTML; } function save_comment($path,$pseudo,$commentaire) { //Enregistrement du commentaire //***************************** global $debug; global $notification_mail; if($debug == 1) echo ""; global $adresse_mail; global $provenance_mail; if(file_exists($path)) { $handle = fopen($path,"r"); $tableau_content = file($path); fclose($handle); } //remplace le retour à la ligne par <br /> et le \' par ' $commentaire=eregi_replace("\r\n","<br />",$commentaire); $commentaire=eregi_replace("\\\'","'",$commentaire); if(($commentaire != "")&&(($commentaire . "\r\n") != $tableau_content[count($tableau_content)-1])) { $handle = fopen($path,"w"); for($i=0;$i < count($tableau_content); $i++) { if(($tableau_content[$i] != "")&&($tableau_content[$i] != "\r\n")) fwrite($handle,$tableau_content[$i]); } $str_out = $pseudo." le ".date('d.m.y à H:i:s')."\r\n".$commentaire."\r\n"; fwrite($handle,$str_out); fclose($handle); if($notification_mail == 1) { $message = $pseudo." le ".date('d.m.y à H:i:s')."\r\n".$commentaire."\r\nhttp://".$_SERVER['HTTP_HOST'].$_SERVER['SCRIPT_NAME']; mail($adresse_mail,"Nouveau commentaire de ".$pseudo,$message,$provenance_mail); } } else { if($debug == 1) echo "<br /><br />Désolé, mais votre commentaire est vide<br />"; } echo Affiche_commentaires($path); } ?>
Lorsque j'ai voulu rajouter un système de commentaires, j'ai tout simplement changé le nom du fichier texte sur cette ligne : $path = 'vacancesaintaygulf.txt'; (sur le début du script) en prenant soin bien sur d'uploader sur le serveur un fichier texte vierge portant le même nom, mais cela ne marche pas, lorsque j’essaye d’accéder à la page depuis mon navigateur, ceci me met une erreur.
Alors voila, j'aimerais savoir si l'un d'entre vous pouvais m'aider en m'expliquant comment modifier le script pour que cela marche.
Merci par avance, A bientôt Flomaluso
|
Titre: Re:Commentaires sans bases de données
Posté par: WebD le le 27-11-2012 a 03:19:47
Salut, Quel est le message d'erreur qui s'affiche? Tu devrait passer par une base de données, ce serait vraiment plus simple, peut être 10 lignes de code pour l'ajout et deux lignes pour l'affichage.
Olivier. |
Titre: Re:Commentaires sans bases de données
Posté par: Chriss le le 27-11-2012 a 07:21:11
| Il existe aussi des scripts prêts à l'utilisation qui font celà : http://www.scriptol.fr/cms/commentaires.php |
Titre: Re:Commentaires sans bases de données
Posté par: Flomaluso le le 28-11-2012 a 18:25:15
Bonsoir,
Tout dabord, merci pour vos réponses.
Olivier, cela me marque qu'il y a une erreur sur la ligne ou il y a le deuxième " }" dans : $HTML .= '<tr><td class="font_tableau" valign="center" align="left" bgcolor="#BEBEBE">'; $HTML .= $tableau_content[$i].'</td></tr>'; } } Si je supprime ce deuxième "crochet", l’erreur affiche maintenant que c'est ma dernière ligne de code qui fait défaut, hors, c'est la balise </html>
Pour ce qui est d'utiliser une base de donnée, je ne sais pas du tout comment faire, si vous accepter de me l'expliquer simplement, je suis tout a fait ouvert a toute proposition = )
Chriss, merci beaucoup pour se lien = ) Mais, et oui, je suis désolé, il y a encore un mais, comme je vous l'ai dis je ne suis vraiment pas doué. En effet, je peut mettre plusieurs scripts sur une même page, le problème, est que les commentaires du deuxième script n'apparaissent pas sur la page. Le "demo-comment2.xml" étant pourtant bien incrémenter. Pour le deuxième script, j'ai remplacé "<FORM name="ajax" method="POST" action="commentlib.php"" par : <FORM name="ajax" method="POST" action="commentlib2.php"" Dans commentlib2.php, j'ai remplacé $fname="demo-comment.xml"; par $fname="demo-comment2.xml"; Tous sa en créent bien sur les fichier commentlib2.php et demo-comment2.xml, mais les commentaires envoyé avec le premier script s'affiche et ceux sur le deuxième non. Voila, je ne sais pas si j'ai été assez clair = )
A bientôt, Flomaluso. |
Forum-webmaster | Actionné par YaBB SE
© 2001-2003, YaBB SE Dev Team. Tous droits réservés.
|