jQuery+Ajax+PHP“喜歡”評級功能實(shí)現(xiàn)代碼
本文章來給大家介紹一個(gè)jQuery+Ajax+PHP實(shí)現(xiàn)“喜歡”評級功能代碼,用戶點(diǎn)擊頁面中自己喜歡的圖片上的紅心按鈕時(shí),前端頁面向后臺(tái)發(fā)送一個(gè)ajax請求,后臺(tái)PHP程序接收請求后,查詢IP庫中是否已經(jīng)有該用戶的點(diǎn)擊記錄,如果沒有,則將對應(yīng)的數(shù)值+1,同時(shí)將該用戶IP信息寫入IP庫,反之則告訴用戶已經(jīng)“喜歡過了”。
數(shù)據(jù)庫設(shè)計(jì)
先準(zhǔn)備兩張表,pic表保存的是圖片信息,包括圖片對應(yīng)的名稱、路徑以及圖片“喜歡”總數(shù),pic_ip則記錄用戶點(diǎn)擊喜歡后的IP數(shù)據(jù)。
CREATE TABLE IF NOT EXISTS `pic` ( `id` int(11) NOT NULL AUTO_INCREMENT, `pic_name` varchar(60) NOT NULL, `pic_url` varchar(60) NOT NULL, `love` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `pic_ip` ( `id` int(11) NOT NULL AUTO_INCREMENT, `pic_id` int(11) NOT NULL, `ip` varchar(40) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8
index.php
在index.php中,我們通過PHP讀取pic表中的圖片信息并展示出來,結(jié)合CSS,提升頁面展示效果。
代碼如下
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<meta name="keywords" content="jquery">
<meta name="description" content="">
<title>jQuery+Ajax+PHP實(shí)現(xiàn)"喜歡"評級</title>
<link rel="stylesheet" type="text/css" href="../css/main.css" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script type="text/javascript">
$(function(){
$("p a").click(function(){
var love = $(this);
var id = love.attr("rel");
love.fadeOut(300);
$.ajax({
type:"POST",
url:"love.php",
data:"id="+id,
cache:false,
success:function(data){
love.html(data);
love.fadeIn(300);
}
});
return false;
});
});
</script>
<style type="text/css">
.clear{clear:both}
.list{width:760px; margin:20px auto}
.list li{float:left; width:360px; height:280px; margin:10px; position:relative}
.list li p{position:absolute; top:0; left:0; width:360px; height:24px; line-height:24px; background:#000; opacity:.8;filter:alpha(opacity=80);}
.list li p a{padding-left:30px; height:24px; background:url(images/heart.png) no-repeat 4px -1px;color:#fff; font-weight:bold; font-size:14px}
.list li p a:hover{background-position:4px -25px;text-decoration:none}
</style>
</head>
<body>
<div id="main">
<ul class="list">
<?php
include_once("connect.php");
$sql = mysql_query("select * from pic");
while($row=mysql_fetch_array($sql)){
$pic_id = $row['id'];
$pic_name = $row['pic_name'];
$pic_url = $row['pic_url'];
$love = $row['love'];
?>
<li><img src="images/<?php echo $pic_url;?>" alt="<?php echo $pic_name;?>"><p><a href="#" title="我喜歡" class="img_on" rel="<?php echo $pic_id;?>"><?php echo $love;?></a></p></li>
<?php }?>
</ul>
</div>
</body>
</html>
CSS中,我們將定義鼠標(biāo)滑向和離開紅心按鈕的動(dòng)態(tài)效果,并定位按鈕的位置。
代碼如下
.list{width:760px; margin:20px auto}
.list li{float:left; width:360px; height:280px; margin:10px; position:relative}
.list li p{position:absolute; top:0; left:0; width:360px; height:24px; line-height:24px;
background:#000; opacity:.8;filter:alpha(opacity=80);}
.list li p a{padding-left:30px; height:24px; background:url(images/heart.png) no-repeat
4px -1px;color:#fff; font-weight:bold; font-size:14px}
.list li p a:hover{background-position:4px -25px;text-decoration:none}
jQuery代碼
當(dāng)用戶點(diǎn)擊自己喜歡的圖片上的紅心按鈕時(shí),向后臺(tái)love.php發(fā)送ajax請求,請求響應(yīng)成功后,更新原有的數(shù)值。
代碼如下
$(function(){
$("p a").click(function(){
var love = $(this);
var id = love.attr("rel"); //對應(yīng)id
love.fadeOut(300); //漸隱效果
$.ajax({
type:"POST",
url:"love.php",
data:"id="+id,
cache:false, //不緩存此頁面
success:function(data){
love.html(data);
love.fadeIn(300); //漸顯效果
}
});
return false;
});
});
love.php
后臺(tái)love.php接收前端的ajax請求,根據(jù)提交的圖片id值,查找IP表中是否已有該用戶ip的點(diǎn)擊記錄,如果有則告訴用戶已“喜歡過了”,反之,則進(jìn)行一下操作:
1、更新圖片表中對應(yīng)的圖片love字段值,將數(shù)值加1。
2、將該用戶IP信息寫入到pic_ip表中,用以防止用戶重復(fù)點(diǎn)擊。
3、獲取更新后的love值,即喜歡該圖片的用戶總數(shù),并將該總數(shù)輸出給前端頁面。
代碼如下
<?php
$host="localhost";
$db_user="root";
$db_pass="";
$db_name="demo";
$timezone="Asia/Shanghai";
$link=mysql_connect($host,$db_user,$db_pass);
mysql_select_db($db_name,$link);
mysql_query("SET names UTF8");
?>
<?php
include_once("connect.php");
$ip = get_client_ip();
$id = $_POST['id'];
if(!isset($id) || empty($id)) exit;
$ip_sql=mysql_query("select ip from pic_ip where pic_id='$id' and ip='$ip'");
$count=mysql_num_rows($ip_sql);
if($count==0){
$sql = "update pic set love=love+1 where id='$id'";
mysql_query( $sql);
$sql_in = "insert into pic_ip (pic_id,ip) values ('$id','$ip')";
mysql_query( $sql_in);
$result = mysql_query("select love from pic where id='$id'");
$row = mysql_fetch_array($result);
$love = $row['love'];
echo $love;
}else{
echo "喜歡過了..";
}
//獲取用戶真實(shí)IP
function get_client_ip() {
if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown"))
$ip = getenv("HTTP_CLIENT_IP");
else
if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown"))
$ip = getenv("HTTP_X_FORWARDED_FOR");
else
if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown"))
$ip = getenv("REMOTE_ADDR");
else
if (isset ($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown"))
$ip = $_SERVER['REMOTE_ADDR'];
else
$ip = "unknown";
return ($ip);
}
?>
代碼中g(shù)et_client_ip()函數(shù)是用來獲取用戶的真實(shí)IP。
以上就是關(guān)于php 實(shí)現(xiàn)“喜歡”評級功能的各個(gè)關(guān)鍵代碼,希望大家仔細(xì)研究,從中有所收獲。
- jQuery通過Ajax向PHP服務(wù)端發(fā)送請求并返回JSON數(shù)據(jù)
- PHP結(jié)合Jquery和ajax實(shí)現(xiàn)瀑布流特效
- php+jQuery+Ajax實(shí)現(xiàn)點(diǎn)贊效果的方法(附源碼下載)
- jQuery+Ajax+PHP實(shí)現(xiàn)“喜歡”評級功能附源碼下載
- jquery與php結(jié)合實(shí)現(xiàn)AJAX長輪詢(LongPoll)
- jQuery+Ajax+PHP+Mysql實(shí)現(xiàn)分頁顯示數(shù)據(jù)實(shí)例講解
- PHP+jQuery+Ajax+Mysql如何實(shí)現(xiàn)發(fā)表心情功能
- PHP+jQuery+Ajax實(shí)現(xiàn)用戶登錄與退出
- PHP+jQuery+Ajax實(shí)現(xiàn)多圖片上傳效果
- PHP+jquery+ajax實(shí)現(xiàn)即時(shí)聊天功能實(shí)例
- jquery+php+ajax顯示上傳進(jìn)度的多圖片上傳并生成縮略圖代碼
- jQuery+PHP+ajax實(shí)現(xiàn)微博加載更多內(nèi)容列表功能
- php基于jquery的ajax技術(shù)傳遞json數(shù)據(jù)簡單實(shí)例
相關(guān)文章
有道搜索和IP138的IP的API接口(PHP應(yīng)用)
原理就是通過php模擬瀏覽器獲取ip地址歸屬地,需要的朋友可以參考下2012-11-11
在Thinkphp中使用ajax實(shí)現(xiàn)無刷新分頁的方法
這篇文章主要介紹了在Thinkphp中使用ajax實(shí)現(xiàn)無刷新分頁的方法的相關(guān)資料,非常不錯(cuò)具有參考借鑒價(jià)值,需要的朋友可以參考下2016-10-10
php實(shí)現(xiàn)可以設(shè)置中獎(jiǎng)概率的抽獎(jiǎng)程序代碼分享
這篇文章主要介紹了一個(gè)抽獎(jiǎng)程序,要求一等獎(jiǎng)的中獎(jiǎng)概率是0.12%,二等獎(jiǎng)中獎(jiǎng)概率是3%,三等獎(jiǎng)中獎(jiǎng)概率是12%,其他中獎(jiǎng)概率是都是謝謝惠顧2014-01-01
PHP 面向?qū)ο蟪绦蛟O(shè)計(jì)(oop)學(xué)習(xí)筆記 (四) - 異常處理類Exception
異常經(jīng)常被用來處理一些在程序正常執(zhí)行中遇到的各種類型的錯(cuò)誤。比如做數(shù)據(jù)庫鏈接時(shí),你就要處理數(shù)據(jù)庫連接失敗的情況。使用異??梢蕴岣呶覀兂绦虻娜蒎e(cuò)特性,從而使我們的應(yīng)用程序更加的穩(wěn)定和健壯。2014-06-06
使用composer安裝使用thinkphp6.0框架問題【視頻教程】
這篇文章主要介紹了使用composer安裝使用thinkphp6.0框架問題,通過一個(gè)小視頻給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-10-10
php檢測用戶是否用手機(jī)(Mobile)訪問網(wǎng)站的類
php檢測用戶是否用手機(jī)(Mobile)訪問網(wǎng)站的類,引入這個(gè)類就可以直接使用了,程序基于MIT License協(xié)議開源,使用方法在下面2014-01-01

