点赞功能原理。 图片。
1.connect.php文件
<?php $host="localhost"; $db_user="root"; $db_pass="111111"; $db_name="dianzan"; $timezone="Asia/Shanghai"; $link=mysql_connect($host,$db_user,$db_pass); mysql_select_db($db_name,$link); mysql_query("SET names UTF8"); ?>
2.love.php文件
<?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 "赞过了.."; } //获取用户真实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); } ?>
3.index.php文件
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <meta name="keywords" content="jquery"> <meta name="description" content=""> <title>jQuery+Ajax+PHP实现“赞”</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(50); $.ajax({ type:"POST", url:"love.php", data:"id="+id, cache:false, success:function(data){ love.html(data); love.fadeIn(50); } }); return false; }); }); </script> <style type="text/css"> @charset "utf-8"; /* CSS Document */ html,body,div,span,h1,h2,h3,h4,h5,h6,p,pre,a,code,em,img,small,strong,sub,sup,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label{margin:0;padding:0;border:0;outline:0;font-size:100%;vertical-align:baseline;background:transparent} a{color:#007bc4/*#424242*/; text-decoration:none;} a:hover{text-decoration:underline} ol,ul{list-style:none} table{border-collapse:collapse;border-spacing:0} body{height:100%; font:12px/18px "Microsoft Yahei", Tahoma, Helvetica, Arial, Verdana, "\5b8b\4f53", sans-serif; color:#51555C; background:#162934 url(../images/body_bg.gif) repeat-x} img{border:none} #header{width:980px; height:92px; margin:0 auto; position:relative} #logo{width:240px; height:90px; background:url(../images/logo_demo.gif) no-repeat} #logo h1{text-indent:-999em} #logo h1 a{display:block; width:240px; height:90px} #main{width:980px; min-height:600px; margin:30px auto 0 auto; background:#fff; -moz-border-radius:12px;-khtml-border-radius: 12px;-webkit-border-radius: 12px; border-radius:12px;} h2.top_title{margin:4px 20px; padding-top:15px; padding-left:20px; padding-bottom:10px; border-bottom:1px solid #d3d3d3; font-size:18px; color:#a84c10; background:url(../images/arrL.gif) no-repeat 2px 14px} #footer{height:60px;} #footer p{ padding:10px 2px; line-height:24px; text-align:center} #footer p a:hover{color:#51555C} .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:90px; 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="header"> <div id="logo"><h1><a href="http://www.jjm.hk" title="返回首页">精工坊</a></h1></div> </div> <div id="main"> <h2 class="top_title">jQuery+Ajax+PHP实现“赞”</h2> <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><p><a href="#" title="赞" class="img_on" rel="<?php echo $pic_id;?>"><?php echo $love;?></a></p></li> <?php }?> </ul> <div class="clear"></div> </div> </body> </html>
4.引入sql语句 ---pic.sql
/* Navicat MySQL Data Transfer Source Server : localhost_3306 Source Server Version : 50517 Source Host : localhost:3306 Source Database : test Target Server Type : MYSQL Target Server Version : 50517 File Encoding : 65001 Date: 2014-01-11 23:10:18 */ SET FOREIGN_KEY_CHECKS=0; -- ---------------------------- -- Table structure for `pic` -- ---------------------------- DROP TABLE IF EXISTS `pic`; CREATE TABLE `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 AUTO_INCREMENT=3 DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of pic -- ---------------------------- INSERT INTO `pic` VALUES ('1', '1', 's1.jpg', '1'); INSERT INTO `pic` VALUES ('2', '2', 's2.jpg', '0');
5.sql语句--pic_ip.sql
/* Navicat MySQL Data Transfer Source Server : localhost_3306 Source Server Version : 50517 Source Host : localhost:3306 Source Database : test Target Server Type : MYSQL Target Server Version : 50517 File Encoding : 65001 Date: 2014-01-11 23:10:27 */ SET FOREIGN_KEY_CHECKS=0; -- ---------------------------- -- Table structure for `pic_ip` -- ---------------------------- DROP TABLE IF EXISTS `pic_ip`; CREATE TABLE `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 AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of pic_ip -- ---------------------------- INSERT INTO `pic_ip` VALUES ('1', '1', '127.0.0.1');