php+MySQL+Ajax
点赞功能原理。 图片。
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');
php+MySQL+Ajax的更多相关文章
- 利用PHP+MySql+Ajax操作实现年月日联动功能
PHP+MySql+Ajax实现年月日的三级联动 <!DOCTYPE html><html> <head> <meta charset=& ...
- 使用PHP+MySql+Ajax+jQuery实现省市区三级联动功能
使用PHP+MySql+Ajax+jQuery实现省市区三级联动功能 要求:写一个省市区(或者年月日)的三级联动,实现地区或时间的下拉选择. 实现技术:php ajax 实现:省级下拉变化时市下拉区下 ...
- PHP+MYSQL+AJAX实现每日签到功能
一.web前端及ajax部分 文件index.html <html> <head> <meta http-equiv=Content-Type content=" ...
- My First Django Project - <Django + MySQL + Ajax> (1)
因为最近工作有些信息需要额外花时间去收集,但是现在有相关的operations每天记录状态,但是没有一个很好的状态收集工具,将状态收集起来,所以很多情况下我们不知道是状态变好了,还是变差.如果使用EX ...
- ECharts, PHP, MySQL, Ajax, JQuery 实现前后端数据可视化
ECharts 下载js代码 工作原理浅析 在项目中引入ECharts 后台处理 数据库端MySQL PHP端 JQuery Ajax处理 ECharts 端处理 前端全部代码 演示结果 总结 最近要 ...
- 再学ajax--第二天 | 基于php+mysql+ajax的表单注册、登录、注销
写在前面 ajax学习到了第二天,这次是用第一天封装的ajax函数,后端使用了php+mysql实现基本的注册,登录,注销. php是我前几个月get到的技能,我已经学习到了面向对象,知道各修饰符的含 ...
- 用php+mysql+ajax+jquery做省市区三级联动
要求:写一个省市区(或者年月日)的三级联动,实现地区或时间的下拉选择. 实现技术:php ajax 实现:省级下拉变化时市下拉区下拉跟着变化,市级下拉变化时区下拉跟着变化. 使用chinastates ...
- 用php+mysql+ajax实现淘宝客服或阿里旺旺聊天功能 之 前台页面
首先来看一下我已经实现的效果图: 消费者页面:(本篇随笔) (1)会显示店主的头像 (2)当前用户发送信息显示在右侧,接受的信息,显示在左侧 店主或客服页面:(下一篇随笔) (1)在左侧有一个列表 , ...
- 用php+mysql+ajax实现淘宝客服或阿里旺旺聊天功能 之 后台页面
在上一篇随笔中,我们已经看了如何实现前台的对话功能:前台我限定了店主只有一人,店铺只有一个,所有比较单一,但后台就不一样了,而后台更像是我们常见的聊天软件:当然,前台也应该实现这种效果,但原理懂了,可 ...
随机推荐
- XPath Checker和Firebug安装与使用
一.XPath Checker和Firebug简介 XPath Checker和Firebug是写爬虫过程中提取数据的非常有用的插件工具,直接打开火狐浏览器的菜单就可以下载 二.XPath Check ...
- 转 strace
转自http://www.cnblogs.com/ggjucheng/archive/2012/01/08/2316692.html strace常用来跟踪进程执行时的系统调用和所接收的信号. 在Li ...
- H5的一些小问题
[每日壹闻]常用HTML代码解释-------六.歌曲代码(1):在这组代码中,不必管它是mms.http.rtsp,只要看尾缀是asf.wma.wmv.wmv.rm都可适用下面的代码:1. 手动播放 ...
- Underscore.js基础入门
公司产品集成了对Underscore.js,所以需要对这个库有一定的了解.通过查阅资料,发现这个库主是对Array和JSON的处理支持.通过Underscore.js库,可以方便的对Array和JSO ...
- LeetCode 374. Guess Number Higher or Lower
We are playing the Guess Game. The game is as follows: I pick a number from 1 to n. You have to gues ...
- 【转载】windows平台安装nodejs过程
第一步 下载nodejs 访问https://nodejs.org/en/download/url 根据您的系统是32位或64位,按照文字说明进行下载 第二步 安装nodejs 双击运行nodejs的 ...
- Android SQLiteOpenHelper类的使用
SQLiteOpenHelper类是Android平台提供的用于SQLite数据库的创建.打开以及版本管理的帮助类.一般需要继承并这个类并实现它的onCreate和onUpgrade方法,在构造方法中 ...
- win10 chrome浏览器字体小,模糊
解决方案: chrome://flags/
- Installing Intellij IDEA sublime-text-2 on Ubuntu
he installation on Linux is traditionally more complicated. I wonder why people complain about the l ...
- Latex感想
看人家,一个小女生,被导师逼着,首先对电脑方面理解不多,3天时间,latex已经把Paper框架建立起来,我可以说我自愧不如吗?德鲁克<卓有成效的管理者>说的一次干一件事情,<冬吴相 ...