Site icon T4Tutorials.com

PHP Comments Source Code in AJAX and PHP

PHP Comments Source Code in AJAX and PHP

In this tutorial, we will be teaching you how to make comments system using PHP and ajax.

Each comment will have a unique id. You can add comments in the database with the senders’ name.

HTML Code of Comments

<html>
<head>
<style>
body {
	font-family: calibri;
}
ul {
    list-style-type: none;
}
.CommentForm {
	background: #756767;
	border: #e0dfdf 1px solid;
	padding: 20px 25px 30px 20px;
	border-radius: 2px;
	width: 550px;
}
.Input_F {
    width: 100%;
    border-radius: 2px;
    padding: 10px;
    border: #e0dfdf 1px solid;
}
.inputarea {
	margin-bottom: 20px;
}
.Input_F1 {
	width: 100%;
	border-radius: 2px;
	padding: 10px;
	border: #e0dfdf 1px solid;
	height: 90px;
}
.row_comment {
    border-bottom: #e0dfdf 1px solid;
    margin-bottom: 15px;
    padding: 15px;
}
.button_S {
	padding: 10px 20px;
	background: #e8dcdc;
	border: #1d1d1d 1px solid;
	color: #756767;
	font-size: 0.9em;
	width: 100px;
	border-radius: 2px;
    cursor:pointer;
}
span.com_row_l {
	font-style: italic;
}
.c_ot {
    background: #756767;
    padding: 20px;
    border: #dedddd 1px solid;
}
span.sender {
	color: #09F;
}
.text_com {
    margin: 10px 0px;
}
.rply_button {
    font-size: 0.8em;
    text-decoration: underline;
    color: #888787;
    cursor:pointer;
}
.com_info {
	font-size: 0.8em;
}
#c_message {
    margin-left: 20px;
    color: #189a18;
    display: none;
}
</style>
<title>Comments using AJAX and PHP</title>
<script src="jquery-3.2.1.min.js"></script>
<body>
    <h1 style="text-align: center;">Comments using AJAX and PHP.</h1>
    <center><div class="CommentForm">
        <form id="form1">
            <div class="inputarea">
                <input type="hidden" name="c_id" id="CID"
                    placeholder="Name" /> <input class="Input_F"
                    type="text" name="name" id="name" placeholder="Name" />
            </div>
            <div class="inputarea">
                <textarea class="Input_F1" type="text" name="comment"
                    id="comment" placeholder="Add a Comment">  </textarea>
            </div>
            <div>
                <input type="button" class="button_S" id="submitButton"
                    value="Publish" /><div id="c_message">Successfully! Added a Comment.</div>
            </div>
        </form>
    </div></center>
    <div id="output"></div>
    <script>
            function postReply(CID) {
                $('#CID').val(CID);
                $("#name").focus();
            }
            $("#submitButton").click(function () {
            	   $("#c_message").css('display', 'none');
                var str = $("#form1").serialize();
                $.ajax({
                    url: "add_comment.php",
                    data: str,
                    type: 'post',
                    success: function (response)
                    {
                        var result = eval('(' + response + ')');
                        if (response)
                        {
                        	$("#c_message").css('display', 'inline-block');
                            $("#name").val("");
                            $("#comment").val("");
                            $("#CID").val("");
                     	   comment_list();
                        } else
                        {
                            alert("Error in adding comments !");
                            return false;
                        }
                    }
                });
            });         
            $(document).ready(function () {
            	   comment_list();
            });
            function comment_list() {
                $.post("ListOfComment.php",
                        function (data) {
                            var data = JSON.parse(data);                         
                            var comments = "";
                            var replies = "";
                            var item = "";
                            var parent = -1;
                            var results = new Array();
                            var list = $("<ul class='c_ot'>");
                            var item = $("<li>").html(comments);
                            for (var i = 0; (i < data.length); i++)
                            {
                                var CID = data[i]['c_id'];
                                parent = data[i]['parent_c_id'];
                                if (parent == "0")
                                {
                                    comments = "<div class='row_comment'>"+
                                    "<div class='com_info'><span class='com_row_l'>from</span> <span class='sender'>" + data[i]['comment_sender_name'] + " </span> <span class='com_row_l'>at</span> <span class='posted-at'>" + data[i]['date'] + "</span></div>" + 
                                    "<div class='text_com'>" + data[i]['comment'] + "</div>"+
                                    "<div><a class='rply_button' onClick='postReply(" + CID + ")'>Reply</a></div>"+
                                    "</div>";

                                    var item = $("<li>").html(comments);
                                    list.append(item);
                                    var reply_list = $('<ul>');
                                    item.append(reply_list);
                                    listReplies(CID, data, reply_list);
                                }
                            }
                            $("#output").html(list);
                        });
            }
            function listReplies(CID, data, list) {
                for (var i = 0; (i < data.length); i++)
                {
                    if (CID == data[i].parent_c_id)
                    {
                        var comments = "<div class='row_comment'>"+
                        " <div class='com_info'><span class='com_row_l'>from</span> <span class='sender'>" + data[i]['comment_sender_name'] + " </span> <span class='com_row_l'>at</span> <span class='posted-at'>" + data[i]['date'] + "</span></div>" + 
                        "<div class='text_com'>" + data[i]['comment'] + "</div>"+
                        "<div><a class='rply_button' onClick='postReply(" + data[i]['c_id'] + ")'>Reply</a></div>"+
                        "</div>";
                        var item = $("<li>").html(comments);
                        var reply_list = $('<ul>');
                        list.append(item);
                        item.append(reply_list);
                        listReplies(data[i].c_id, data, reply_list);
                    }
                }
            }
        </script>
</body>
</html>

Publishing Comments (PHP Code)

ListOfComment.php

<?php
require_once ("database.php");
$sql = "SELECT * FROM comment_table ORDER BY parent_c_id asc, comment_id asc";
$result = mysqli_query($conn, $sql);
$record_set = array();
while ($row = mysqli_fetch_assoc($result)) {
    array_push($record_set, $row);
}
mysqli_free_result($result);
mysqli_close($conn);
echo json_encode($record_set);
?>

add_comment.php

<?php
require_once ("database.php");
$cId = isset($_POST['c_id']) ? $_POST['c_id'] : "";
$comment = isset($_POST['comment']) ? $_POST['comment'] : "";
$C_sender_name = isset($_POST['name']) ? $_POST['name'] : "";
$date = date('Y-m-d H:i:s');
$sql = "INSERT INTO comment_table(parent_c_id,comment,name_of_sender,date) VALUES ('" . $cId . "','" . $comment . "','" . $C_sender_name . "','" . $date . "')";
$result = mysqli_query($conn, $sql);
if (! $result) {
    $result = mysqli_error($conn);
}
echo $result;
?>

Database of Comments

You will have to create a database named “comments” and create a table “comment_table”.

Add attributes:

Code to create tables in the database:

comment_table.sql

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET AUTOCOMMIT = 0;
START TRANSACTION;
SET time_zone = "+00:00";
CREATE TABLE `comment_table` (
  `c_id` int(11) NOT NULL,
  `parent_c_id` int(11) DEFAULT NULL,
  `comment` varchar(200) NOT NULL,
  `name_of_sender` varchar(40) NOT NULL,
  `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `comment_table` (`c_id`, `parent_c_id`, `comment`, `name_of_sender`, `date`) VALUES
(1, 0, '  visit t4tutorials', 'George', '2019-02-14 02:54:57'),
(2, 0, ' something ', 'Mike', '2018-12-12 12:56:01'),
(3, 2, '  www.t4tutorials.com', 'Drake', '2019-01-01 10:56:12');
ALTER TABLE `comment_table`
  ADD PRIMARY KEY (`c_id`);
ALTER TABLE `comment_table`
  MODIFY `c_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=27;
COMMIT;

 

Your database will look like this:

Output Comment System:

Download Comments System Code in PHP and MySQL

Download Code – PHPAJAXCommentsSystem

Exit mobile version