Description: Comment system that uses PHP & Ajax to post and delete comments, jQuery/Javascript to give its special effects, and CSS for the trash can icon.
Create tables for the comments and the content being commented.
CREATE TABLE `content` (
`id` INT NOT NULL ,
`content` VARCHAR( 50 ) NOT NULL
) ENGINE = MYISAM ;
CREATE TABLE `comments` (
`comment_id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`id` INT NOT NULL ,
`ip` VARCHAR( 50 ) NOT NULL ,
`username` VARCHAR( 50 ) NOT NULL ,
`comment` TEXT NOT NULL ,
`date_time` VARCHAR( 100 ) NOT NULL
) ENGINE = MYISAM ;
INSERT INTO content VALUES ('1','Demo'),('2','wcetdesigns.com');
PHP:
settings.php, file where all the important settings will be located and embedded in the other two files.
<?php
//MODIFY TO YOUR OWN SETTINGS
//CONNECTS TO YOUR DATABASE $c = mysql_connect("server", "username", "password"); $db = mysql_select_db("your_database", $c);
//TABLES FOR THE CONTENT AND THE COMMENTS (MODIFY IF TABLE NAMES ARE DIFFERENT) $content_table = 'content'; $comment_table = 'comments';
$ip = $_SERVER["REMOTE_ADDR"]; //IP ADDRESS
?>
view.php, main file where all the functions will take place.
$(function(){
$("#submit").click(function(){ var u =escape($('#u').val()); var c =escape($('#c').val()); var data = 'u='+u+'&c='+c+'&id=<?phpecho$id; ?>';
$(".page").live("click", function(){ var id = $(this).attr("id");
$.get('view-comments.php?id=<?phpecho$id; ?>&page='+id, function(d){
$("#comment_posts").html(d);
});
});
$('.comments').live("mouseover", function(){ var id = $(this).attr("id").substr(1);
$("#d"+id).show();
}).live("mouseout", function(){ var id = $(this).attr("id").substr(1);
$("#d"+id).hide();
});
$('.trash').live("click", function(){ var id = $(this).attr("id").substr(1); var data ='comment_id='+id;
include("settings.php"); //FILE WITH IMPORTANT SETTINGS
$q = mysql_query("SELECT * FROM $content_table WHERE id='$id'"); //FOR THE CONTENT $t = mysql_fetch_assoc($q); $content = $t["content"]; echo $content."<br><br>"; //DISPLAYS CONTENT IN HTML
//PAGINATION PROCESS $q = mysql_query("SELECT * FROM $comment_table WHERE id='$id'"); //FOR COMMENTS FOR THE SPECIFIC CONTENT $n = mysql_num_rows($q); //NUMBER OF COMMENTS $pages = ceil($n/$rrp); //NUMBER OF PAGES $range = 2; //NUMBER OF PAGES TO BE LINKED BEFORE & AFTER THE CURRENTE PAGE NUMBER Ex: If page number is 5 (3, 4, 5, 6, 7)
//IF THERE IS MORE THAN 1 PAGE OF COMMENTS if($pages>1){ //FIRST, PREVIOUS, NEXT, & LAST PAGE LINKS if($page>1){ $first = '<a class="page" id="1">First</a> '; $prev = '<a class="page" id="'.($page-1).'">Prev</a> '; } if($page<$pages){ $next = '<a class="page" id="'.($page+1).'">Next</a> '; $last = '<a class="page" id="'.$pages.'">Last</a> '; } //NUMBERIC PAGINATION (1, 2, 3, 4, 5, etc.) for($p=($page-$range); $p<=($page+$range); $p++){ if($p>=1&&$p<=$pages){ if($p==$page){ $nav .= '<span style="color: #32baed">'.$p.'</span> '; //DOES NOT LINK THE CURRENT PAGE NUMBER } else { $nav .= '<a class="page" id="'.$p.'">'.$p.'</a> '; } } } }
//DISPLAYS THE PAGINATION IN HTML echo $first . $prev . $nav . $next . $last;
?>
post-comment.php, ajax file where comment posts would be processed
<?php
include("settings.php"); //FILE WITH IMPORTANT SETTINGS
$id = $_POST["id"]; //ID OF THE CONTENT $username = $_POST["u"]; $comment = $_POST["c"]; $dateposted = date("D, M j, Y") .' at '.date("h:i A");
//COUNTS THE NUMBER OF SPACE IN BOTH THE USERNAME AND THE COMMENT $sc = substr_count($comment, " "); $su = substr_count($username, " ");
//ONLY POSTS COMMENTS IF BOTH THE USERNAME AND THE COMMENT ARE NOT EMPTY if($sc<strlen($comment)){ if($su<strlen($username)){ mysql_query("INSERT INTO $comment_table VALUES('','$id','$ip','$username','$comment','$dateposted')"); } else { echo 'Please enter a name'; } } else { echo 'Comment cannot be blank'; }
include("settings.php"); //FILE WITH IMPORTANT SETTINGS
$comment_id = $_POST["comment_id"];
//CHECKS IF THE COMMENT STILL EXISTS IN THE DATABASE $q = mysql_query("SELECT * FROM $comment_table WHERE comment_id='$comment_id' AND ip='$ip'"); $n = mysql_num_rows($q);
//IF SO, THE COMMENT WILL BE DELETED if($n){ mysql_query("DELETE FROM $comment_table WHERE comment_id='$comment_id' AND ip='$ip'"); } else { echo 'Error deleting comment'; }