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 = "";
?>
你没看错,就是两个变量

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



郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。