Bonsoir à tous,
J'essaye actuellement de mettre en place un système de commentaires sur mon site réalisé en html, css et php. Ne connaissant pas grand chose en php j'ai un peu triché en reprenant le code de cette page : http://www.roytuts.com/nested-commen...m-in-php-ajax/.
Comme vous pourrez le constater le système fonctionne bien j'ai mis en place deux pages fictives pour le tester ici et ici.
Le problème est le suivant : je n'arrive pas à seulement afficher les commentaires postés sur la page en question (current page). Avec l'aide d'un ami développeur j'ai réussi à mettre en place un code permettant de récupérer l'url de la "current page" voici une capture d'écran de la base de données dans phpmyadmin :
Pour le fonctionnement du système 3 fichiers semblent être déterminants :
Le premier concerne le code des pages comtest.php et test. php:
Le deuxième concerne le code du fichier add_comments qui comme son nom l'indique sert à ajouter des commentaires :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Nested or hierarchical comment system in PHP, AJAX, Jquery</title> <link rel="stylesheet" href="comments.css"> <script src="jquery-1.9.1.min.js"></script> <script src="jquery-ui-1.10.3-custom.min.js"></script> <script src="jquery-migrate-1.2.1.js"></script> <script src="jquery.blockUI.js"></script> <script src="comments_blog.js"></script> <meta name="robots" content="noindex"> </head> <body> <?php $current_page = $_SERVER['REQUEST_URI']; require("comments.php"); ?> <div style="width: 600px;"> <div id="comment_wrapper"> <div id="comment_form_wrapper"> <div id="comment_resp"></div> <h4>Laissez votre commentaire ci-dessous<a href="javascript:void(0);" id="cancel-comment-reply-link">Effacer</a></h4> <form id="comment_form" name="comment_form" action="" method="post"> <div> Name<input type="text" name="comment_name" id="comment_name" size="54"/> </div> <div> Email<input type="text" name="comment_email" id="comment_email" size="54"/> </div> <div> Website<input type="text" name="comment_web" id="comment_web" size="54"/> </div> <div> Comment<textarea name="comment_text" id="comment_text" rows="6"></textarea> </div> <div> <input type="hidden" name="reply_id" id="reply_id" value=""/> <input type="hidden" name="current_page" value="<?=$current_page?>"> <input type="hidden" name="depth_level" id="depth_level" value=""/> <input type="submit" name="comment_submit" id="comment_submit" value="Post Comment" class="button"/> </div> </form> </div> <?php echo $comments; ?> </div> </div> </body> </html>
Enfin le dernier concerne le fichier comments.php qui gère l'affichage des commentaires. Je pense que c'est grâce à lui que je parviendrai à résoudre mon problème :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 <?php require("config.php"); require("helper.php"); if (isset($_POST)) { $parent_id = ($_POST['reply_id'] == NULL || $_POST['reply_id'] == '') ? 0 : $_POST['reply_id']; $email = $_POST['comment_email']; $name = $_POST['comment_name']; $web = $_POST['comment_web']; $comment_text = $_POST['comment_text']; $depth_level = $_POST['depth_level']; $page_comment = $_POST['current_page']; $sql = "INSERT INTO comment(comment_text, parent_id, ip_address, email_address, web_address, created_by, current_page) VALUES('$comment_text', $parent_id, '" . $_SERVER['REMOTE_ADDR'] . "', '$email', '$web', '$name', '$page_comment')"; $query = dbQuery($sql); $inserted_id = dbInsertId(); $sql = "SELECT * FROM comment WHERE current_page='$page_comment'"; $results = dbQuery($sql); if ($results) { while ($row = dbFetchAssoc($results)) { if ($depth_level < 3) { $reply_link = "<a href=\"#\" class=\"reply_button\" id=\"{$row['comment_id']}\">reply</a><br/>"; } else { $reply_link = ''; } $depth = $depth_level + 1; $name = strlen($row['created_by']) ? $row['created_by'] : 'anonymous user'; echo "<li id=\"li_comment_{$row['comment_id']}\" data-depth-level=\"{$depth}\">" . "<div><span class=\"commenter\">{$name} says</span> <span class=\"comment_date\">, {$row['created_date']}</span></div>" . "<div style=\"margin-top:4px;\">{$row['comment_text']}</div>" . $reply_link . "</li>"; } echo '<div class="success">Comment successfully posted</div>'; } else { echo '<div class="error">Error in adding comment</div>'; } } else { echo '<div class="error">Please enter required fields</div>'; } /* * End of add_comment.php */
Il y a aussi un fichier javascript mais je ne pense pas que le modfier aura un impact.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 <?php require("config.php"); require("helper.php"); $sql = 'SELECT * FROM comment' ; $results = dbQuery($sql); $items = array(); while ($row = dbFetchAssoc($results)) { $items[] = $row; } $comments = format_comments($items); /* * End of comments.php */
Voilà. Donc pour rappel je cherche à afficher les commentaires uniquement postés sur les pages où ils ont été postés
Merci par avance de votre aide
Romain
Partager