php+mysql+ajax点赞和踩的功能

嫌麻烦的也可以:点击下载

HTML:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="common/js/jquery.js" type="text/javascript"></script>
<script language="JavaScript" type="text/javascript">
jQuery(function($) {
	//这两个是鼠标放上去的效果
	$(".zhan").hover(function(){
 		$(this).children("b").toggle();
	});
	$(".cai").hover(function(){
	 	$(this).children("b").toggle();
	});
 });
</script>
<script type="text/javascript">
 <!--这两个点击事件可以改进的,因为事件问题,所以就弄了两个点击事件
  $(document).ready(function(e) {
	//点赞(给力)
	$('.zhan').click(function(){
	var zhan=$(this);
	var left = parseInt($(this).offset().left)+10, top =  parseInt($(this).offset().top)-10, obj=$(this);
	$(this).append('<div id="zhan"><b>+1<\/b></\div>');
	$('#zhan').css({'position':'absolute','z-index':'1', 'color':'#C30','left':left+'px','top':top+'px'}).animate({top:top-10,left:left+10},'slow',function(){
	$(this).fadeIn('fast').remove();
	var Num = parseInt(obj.find('span').text());
	Num++;
	obj.find('span').text(Num);
	});
$.ajax({
  	url:"ajax.php?action=zan",
  	type:"post",
  	data:"answer_id="+$(this).attr("alt"),
  	success:function(datas){
  		zhan.unbind('click');
  		zhan.parent().parent().siblings().children().children().unbind('click');
		zhan.parent().parent().siblings().children().children().attr("class","evaluate-inner");
  		zhan.attr("class","evaluate-inner");
 	}
  });
 });
 //踩(不给力)
 $('.cai').click(function(){
	var cai=$(this);
	var left = parseInt($(this).offset().left)+10, top =  parseInt($(this).offset().top)-10, obj=$(this);
	$(this).append('<div id="cai"><b>-1<\/b></\div>');
	$('#cai').css({'position':'absolute','z-index':'1', 'color':'#7DAAD5','left':left+'px','top':top+'px'}).animate({top:top-10,left:left+10},'slow',function(){
	$(this).fadeIn('fast').remove();
	var Num = parseInt(obj.find('span').text());
	Num--;
	obj.find('span').text(Num);
	});
 $.ajax({
  	url:"ajax.php?action=cai",
  	type:"post",
  	data:"answer_id="+$(this).attr("alt"),
  	success:function(datas){
  		cai.unbind('click');
  		cai.parent().parent().siblings().children().children().unbind('click');
		cai.parent().parent().siblings().children().children().attr("class","evaluate-inner");
  		cai.attr("class","evaluate-inner");
 	}
  });
 });
 });
 //-->
</script>
</head>
<body>
<!--给力开始-->
<span data-evaluate="0" id="evaluate-1908165795" class="evaluate" alog-action="qb-zan-btn"> <span  class="evaluate-outer">
<!-----判断对应的回答的id是否在自己创建的存储赞和踩数据的php文件,如果赞或者踩存在一个的话就不能再单击---->
<span class="evaluate-inner {OVOV:if $answer_datas.ans_id|in_array:$zan_list or $answer_datas.ans_id|in_array:$cai_list/}{OVOV:else/}zhan{OVOV:/if/}" alt="{OVOV:$answer_datas.ans_id/}"> <b  style="display:none" class="evaluate-tip evaluate-num-fixed">给力</b> <b  class="evaluate-num evaluate-num-fixed" ><span>{OVOV:$answer_datas.goods/}</span></b> </span> </span> </span>
<!--不给力开始-->
<span data-evaluate="0" id="evaluate-bad-1908165795" class="evaluate evaluate-bad" alog-action="qb-evaluate-outer"> <span class="evaluate-outer"> <span class="evaluate-inner {OVOV:if $answer_datas.ans_id|in_array:$zan_list or $answer_datas.ans_id|in_array:$cai_list/}{OVOV:else/}cai{OVOV:/if/}" alt="{OVOV:$answer_datas.ans_id/}"> <b  style="display: none;" class="evaluate-tip evaluate-num-fixed">不给力</b> <b  class="evaluate-num evaluate-num-fixed" style="display: inline-block;"><span>{OVOV:$answer_datas.bads/}</span></b> </span> </span> </span>
</div>
</div>
<!--评论回答开始-->
</body>
</html>

HTML对应的php文件

<?php
$action=$_GET['action'];//获取get方式传过来的action
require_once("array/ovovsys_zan.php");
switch($action){
	case 'detail':
		/*****赞开始****/
		$zan_list = json_decode(str_replace("'",'"',$zan_json),true);
		$zan_lists=array();
		foreach($zan_list as $key=>$value){
			if($value['uid']==$uid){
		 		$zan_lists[]=$value['answer_id'];
			}
		}
 		$smarty->assign('zan_list',$zan_lists);//查询当前登录的会员的uid对应的点赞的回答
 		/*****赞结束****/
 		/*****踩开始****/
		$cai_list = json_decode(str_replace("'",'"',$cai_json),true);
		$cai_lists=array();
		foreach($cai_list as $key=>$value){
			if($value['uid']==$uid){
		 		$cai_lists[]=$value['answer_id'];
			}
		}
 		$smarty->assign('cai_list',$cai_lists);//查询当前登录的会员的uid对应的踩的回答
 		/*****踩结束****/
		$smarty->display('自己的静态页面');
		exit();
	break;
}
?>

ajax文件:

<?php
require_once("array/ovovsys_zan.php");//这里引用array文件夹中的数组文件
$action=trim($_GET['action']);
if(empty($action)){
	echo '<font color=red>参数错误!</font>';exit();
}
switch($action){
	 case 'zan'://点赞(给力)
		//$zan_json是数组文件中设置的数组变量,存的是json数据----1
		$zan_array = json_decode(str_replace("'",'"',$zan_json),true);

		//获取当前的会员的uid-----2
		$user_answer['uid']=$uid;
		//获取对应的赞的回答的id----2
		$user_answer['answer_id']=$_POST['answer_id'];

		//将会员的uid和答案的id一块的数组放到指定的数组中----3
		$zan_array[]=$user_answer;

		$config_path = 'shuzu/ovovsys_zan.php';
		if(!file_exists($config_path)){
			$Base->ErrorMsg('文件错误:shuzu/ovovsys_zan.php 不存在!');exit();
		}

		//将指定的数组转换成json数据,并且将双引号转换成单引号,不然放到数组文件中后会出错----4
		$zan_new_json = str_replace('"',"'",json_encode($zan_array));

		$fp = @fopen($config_path,'r+');
		if(!$content = @fread($fp,filesize($config_path))){
			$Base->ErrorMsg('无法读取shuzu/ovovsys_zan.php文件!');exit();
		}

		//执行替换,将数组文件中对应的json数据----5
		$content = str_replace("\$zan_json = \"{$zan_json}\"","\$zan_json = \"{$zan_new_json}\"",$content);
		$fp = @fopen($config_path,'w+');
		@fwrite($fp,$content); 

		//修改对应的数据表中的数据----5
		$Db->ThisQuery("update `".$db_prefix."ask_answers` set `goods`=`goods`+1 where `ans_id`=".$user_answer['answer_id']."");
		exit();
	break;
	 case 'cai'://踩(不给力)
		$cai_array = json_decode(str_replace("'",'"',$cai_json),true);
		$user_answer['uid']=$uid;
		$user_answer['answer_id']=$_POST['answer_id'];
		$cai_array[]=$user_answer;
		$config_path = 'shuzu/ovovsys_zan.php';
		if(!file_exists($config_path)){
			$Base->ErrorMsg('文件错误:shuzu/ovovsys_zan.php 不存在!');exit();
		}
		$cai_new_json = str_replace('"',"'",json_encode($cai_array));
		$fp = @fopen($config_path,'r+');
		if(!$content = @fread($fp,filesize($config_path))){
			$Base->ErrorMsg('无法读取shuzu/ovovsys_zan.php文件!');exit();
		}
		$content = str_replace("\$cai_json = \"{$cai_json}\"","\$cai_json = \"{$cai_new_json}\"",$content);
		$fp = @fopen($config_path,'w+');
		@fwrite($fp,$content);
		$Db->ThisQuery("update `".$db_prefix."ask_answers` set `bads`=`bads`-1 where `ans_id`=".$user_answer['answer_id']."");
		exit();
	break;
}
?>

对应的数据文件(因为创建数据库时没有创建踩和赞的再断,所以这里就用php文件存变量的方式保存了一下答案对应的赞和踩的数据,其中包含用户的id和答案的id)

<?php
$zan_json = "";
$cai_json = "";
?>
你没看错,就是两个变量

如果嫌复制着麻烦的话,也可以(点击下载压缩文件),亲,不要积分的哟!

时间: 2024-11-05 21:33:33

php+mysql+ajax点赞和踩的功能的相关文章

利用PHP+MySql+Ajax操作实现年月日联动功能

PHP+MySql+Ajax实现年月日的三级联动 <!DOCTYPE html><html>    <head>        <meta charset="UTF-8">        <title></title>        <script src="bootstrap/js/jquery-1.11.2.min.js"></script>        <s

PHP+Mysql实现网站顶和踩投票功能实例

PHP+Mysql实现网站顶和踩投票功能实例,通过记录用户IP,判断用户的投票行为是否有效,该实例也可以扩展到投票系统中. 首先我们在页面上放置“顶”和“踩”的按钮,即#dig_up和#dig_down,按钮上分别记录了投票的票数以及所占的百分比. 1 <div class="digg"> 2 <div id="dig_up" class="digup"> 3 <span id="num_up"&

使用PHP+MySql+Ajax+jQuery实现省市区三级联动功能

使用PHP+MySql+Ajax+jQuery实现省市区三级联动功能 要求:写一个省市区(或者年月日)的三级联动,实现地区或时间的下拉选择. 实现技术:php ajax 实现:省级下拉变化时市下拉区下拉跟着变化,市级下拉变化时区下拉跟着变化. 使用chinastates表查询 Ajax加载数据 1.这是chinastates表 2.做一个简单php:Ajax_eg.php <!DOCTYPE html><html>    <head>        <meta c

基于Servlet+JDBC+Bootstrap+MySQL+AJAX权限管理系统项目实战教程

项目简介 权限系统一直以来是我们应用系统不可缺少的一个部分,若每个应用系统都重新对系统的权限进行设计,以满足不同系统用户的需求,将会浪费我们不少宝贵时间,所以花时间来设计一个相对通用的权限系统是很有意义的.     本系统的设计目标是对应用系统的所有资源进行权限控制,比如应用系统的功能菜单.各个界面等进行权限的操控.技术介绍 · Servlet3.0 Servlet 3.0 作为JavaEE6 规范体系中一员,随着JavaEE6规范一起发布.该版本在前一版本(Servlet2.5)的基础上提供了

PHP+MySQL设计高效发表评论留言功能

分享一个PHP+MySQL+Ajax设计的高效发表评论留言功能,可以将此功能应用在网站留言.评论等地方. 首先我们放置一个评论表单和显示评论列表#comments,接着调用评论列表,并且通过Ajax发布评论: 1 $(function() { 2 var comments = $("#comments"); 3 $.getJSON("ajax.php", 4 function(json) { 5 $.each(json, 6 function(index, arra

让浏览器支持 jquery ajax load 前进、后退 功能

BEGIN; 一般在做 ajax load 的时候,很多人都不会考虑到需要浏览器支持前进后退功能,因为大部分人都不知道可以实现. 最近遇到这个问题,经过一小段研究,发现github已经有现成的开源工具使用,主要实现原理是利用html的锚点,即<a href="#xxx">,详情可查看https://github.com/balupton/jquery-history/tree/master 主要demo代码如下: html <ul> <li><

mysql基于init-connect+binlog完成审计功能

mysql基于init-connect+binlog完成审计功能 目前社区版本的mysql的审计功能还是比较弱的,基于插件的审计目前存在于Mysql的企业版.Percona和MariaDB上,但是mysql社区版本有提供init-connect选项,基于此我们可以用它来完成审计功能. init-connect参数说明: http://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_init_connect s

XAMPP(Apache+MySQL+PHP+PERL)是一个功能强大的建 XAMPP 软

XAMPP(Apache+MySQL+PHP+PERL)是一个功能强大的建 XAMPP 软件站集成软件包.这个软件包原来的名字是 LAMPP,但是为了避免误解,最新的几个版本就改名为 XAMPP 了.它可以在Windows.Linux.Solaris.Mac OS X 等多种操作系统下安装使用,支持多语言:英文.简体中文.繁体中文.韩文.俄文.日文等. http://baike.baidu.com/view/864591.htm?fr=aladdin

mysql+thinkphp +amcharts 完成图表统计功能

思路:从mysql数据库查询数据,经过thinkphp 后端控制器做逻辑处理,返回给前端,前端调用阿妈charts 插件 1.数据查询: public function order($time='',$radio=1){ if($time== ''){ $time = Date("Y"); } $bt = $time."-01-01 00:00:00"; $et = (string)((int)$time+1)."-01-01 00:00:00"