We have created a like and unlike script on our readers request we received many users feedback they face problems in counter etc. Now I have fixed all bugs and created its improved version with multiple like unlike on single page and for products and improve some JavaScript and CSS so I hope you like it.
Database Details:
database name => phpgang
table name => products
table name => like
db.sql
Database file run in your MySQL to create database and add data in table.
--
-- Table structure for table `likes`
--
CREATE TABLE `likes` (
`id` int(5) NOT NULL AUTO_INCREMENT,
`pid` int(10) NOT NULL,
`like` int(10) NOT NULL,
`unlike` int(10) NOT NULL,
`uid` varchar(100) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=1;
-- --------------------------------------------------------
--
-- Table structure for table `products`
--
CREATE TABLE `products` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`product_name` varchar(255) NOT NULL,
`price` double(10,2) NOT NULL DEFAULT '0.00',
`image` varchar(255) NOT NULL,
`status` int(2) NOT NULL DEFAULT '1',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4;
--
-- Dumping data for table `products`
--
INSERT INTO `products` VALUES (1, 'PHP Books', 20.00, '1.jpg', 1);
INSERT INTO `products` VALUES (2, 'RestAPI Code', 10.00, '2.jpg', 1);
INSERT INTO `products` VALUES (3, 'PHPGang Annual Subscription', 100.00, '3.jpg', 1);
db.php
Edit this file as per your database credentials.
<?php
define('DB_SERVER', 'localhost');
define('DB_USERNAME', 'username');
define('DB_PASSWORD', 'password');
define('DB_DATABASE', 'database');
$connection = mysqli_connect(DB_SERVER,DB_USERNAME,DB_PASSWORD,DB_DATABASE);
?>
index.php
Contains PHP code to update table records and show the current number in the file, in this file we used cookie to skip invalid likes and un-likes.
Main file show products list and and like buttons:
<?php
session_start();
include("db.php");
if(!isset($_SESSION['user']))
{
$_SESSION['user'] = session_id();
}
$uid = $_SESSION['user']; // set your user id settings
$query = "SELECT * FROM `products`"; // products list
$res = mysqli_query($connection,$query);
while($row=mysqli_fetch_array($res))
{
// get likes and dislikes of a product
$query = mysqli_query($connection,"select sum(`like`) as `like`,sum(`unlike`) as `unlike` from `likes` where pid = ".$row['id']);
$rowCount = mysqli_fetch_array($query);
if($rowCount['like'] == "")
$rowCount['like'] = 0;
if($rowCount['unlike'] == "")
$rowCount['unlike'] = 0;
if($uid == "") // if user not loggedin then show login link on like button click
{
$like = '
<input onclick="location.href = \'login.php\';" type="button" value="'.$rowCount['like'].'" rel="'.$row['id'].'" data-toggle="tooltip" data-placement="top" title="Login to Like" class="button_like" />
<input onclick="location.href = \'login.php\';" type="button" value="'.$rowCount['unlike'].'" rel="'.$row['id'].'" data-toggle="tooltip" data-placement="top" title="Login to Unlike" class="button_unlike" />';
}
else
{
$query = mysqli_query($connection,"SELECT * from `likes` WHERE pid='".$row['id']."' and uid='".$uid."'");
if(mysqli_num_rows($query)>0){ if already liked od disliked a product
$likeORunlike = mysqli_fetch_array($query);
// clear values of variables
$liked = '';
$unliked = '';
$disable_like = '';
$disable_unlike = '';
if($likeORunlike['like'] == 1) // if alredy liked then disable like button
{
$liked = 'disabled="disabled"';
$disable_unlike = "button_disable";
}
elseif($likeORunlike['unlike'] == 1) // if alredy dislike the disable unlike button
{
$unliked = 'disabled="disabled"';
$disable_like = "button_disable";
}
$like = '
<input '.$liked.' type="button" value="'.$rowCount['like'].'" rel="'.$row['id'].'" data-toggle="tooltip" data-placement="top" title="Like" class="button_like '.$disable_like.'" id="linkeBtn_'.$row['id'].'" />
<input '.$unliked.' type="button" value="'.$rowCount['unlike'].'" rel="'.$row['id'].'" data-toggle="tooltip" data-placement="top" title="Un-Like" class="button_unlike '.$disable_unlike.'" id="unlinkeBtn_'.$row['id'].'" />
';
}
else{ //not liked and disliked product
$like = '
<input type="button" value="'.$rowCount['like'].'" rel="'.$row['id'].'" data-toggle="tooltip" data-placement="top" title="Like" class="button_like" id="linkeBtn_'.$row['id'].'" />
<input type="button" value="'.$rowCount['unlike'].'" rel="'.$row['id'].'" data-toggle="tooltip" data-placement="top" title="Un-Like" class="button_unlike" id="unlinkeBtn_'.$row['id'].'" />
';
}
}
$HTML.='
<li> <img src="images/'.$row['image'].'" class="">
<h4 class="">'.$row['product_name'].'</h4>
<div class="product-price">
<span class="normal-price">$'.$row['price'].'</span>
</div>
<a href="#" class="btn btn-default navbar-btn" >Buy Now</a>
<div class="grid">
'.$like.'
</div>
</li>';
}
?>
<!doctype html>
<head>
<title>Create Like & Unlike System in PHP MySQL and jQuery [Improved] | PHPGang.com</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<script type="text/javascript" src="jquery-1.8.0.min.js"></script>
<script type="text/javascript" src="script.js"></script>
<link href="style.css" rel="stylesheet" type="text/css" />
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
</head>
<body>
<h2><a href="http://www.phpgang.com/?p=4814">Create Like & Unlike System in PHP MySQL and jQuery [Improved]</a></h2><br><br>
<div class="container">
<div class="row">
<h1>PHPGang Shopping store</h1>
<div class="col-sm-12 col-md-12">
<ul class="thumbnail-list">
<?php echo $HTML; ?>
</ul>
</div>
</div>
</div>
</body>
</html>
To post like button action below code used:
<?php
if($_POST)
{
$pid = mysqli_real_escape_string($connection,$_POST['pid']); // product id
$op = mysqli_real_escape_string($connection,$_POST['op']); // like or unlike op
if($op == "like")
{
$gofor = "like";
}
elseif($op == "unlike")
{
$gofor = "unlike";
}
else
{
exit;
}
// check if alredy liked or not query
$query = mysqli_query($connection,"SELECT * from `likes` WHERE pid='".$pid."' and uid='".$uid."'");
$num_rows = mysqli_num_rows($query);
if($num_rows>0) // check if alredy liked or not condition
{
$likeORunlike = mysqli_fetch_array($query);
if($likeORunlike['like'] == 1) // if alredy liked set unlike for alredy liked product
{
mysqli_query($connection,"update `likes` set `unlike`=1,`like`=0 where id='".$likeORunlike['id']."' and uid='".$uid."'");
echo 2;
}
elseif($likeORunlike['unlike'] == 1) // if alredy unliked set like for alredy unliked product
{
mysqli_query($connection,"update `likes` set `like`=1,`unlike`=0 where id='".$likeORunlike['id']."' and uid='".$uid."'");
echo 2;
}
}
else // New Like
{
mysqli_query($connection,"INSERT INTO `likes` (`pid`,`uid`, `$gofor`) VALUES ('$pid','$uid','1')");
echo 1;
}
exit;
}
?>
Complete Demo code available in download area click download to download code a running demo here
This is the simple and easy code for like and unlike system I hope you guyz like this please share your feedback in comments. If you face any issue please fee free to comment below.