温馨提示: 这篇文章于3238天前编写,现在可能不再适用或落后.

网站点赞见得很多了吧,wordpress也有文章点赞,这里我不针对wordpress而是针对普通的php网站。最近无聊在做一个小论坛程序集成在ACG Balrogs上面。想到了每次发帖新增一个点赞功能。

上图是我正在建设的一个讨论小版块,别看布局样式了,我正在努力修改呢...

点赞后的效果:

上图的大拇指是font字体,并不是图片

ajax点赞的基本原理就是,用cookie判断用户是否已经点赞,如果没有设置cookie那么就让数据库中点赞的字段加1,,如果已经点赞了那么就提示他已经点赞。原理很简单。接下来我用代码来演示。

首先建立3个php文件,分别为:

1.php(用户点赞页面)

2.php(点赞后台)

3.php(数据库连接)

将3.php都导入到1和2文件中

1.php:

<?php require_once '3.php';//引入数据库连接     ?>
<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>AJAX点赞</title>
</head>
<body>
<script>
    //这里ajax传递如果不清楚的话可以去  https://www.acgxt.com/162.html 去看看 这里就不多说了
    var x = new XMLHttpRequest(); 
    function a(){
        x.open("POST","2.php");
        x.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
        x.send("good=true");
        x.onreadystatechange = function(){
            if(x.readyState==4){
                if(x.status==200){
                    document.getElementById("good").innerHTML=x.responseText;
                }
            }
        }
    }
</script>
<button onclick="a();" id="good">
    <?php
    //判断cookie是否设置,如果设置输出已赞,如果没有输出赞一个
    if(isset($_COOKIE['good'])){
        echo "已赞";
    }else{
        echo "赞一个";
    }?>
</button>
</body>
</html>

2.php:

<?php
require_once '3.php';//引入数据库连接
if(@$_POST['good']){//1.php文件触发ajax传输后
    if(isset($_COOKIE["good"])){//判断是否设置cookie
        echo "已赞过...";//如果设置,则返回已赞过
    }else{//否则
        //先查询数据库找到记录点赞次数的字段
        $query = mysql_query("SELECT * FROM good WHERE good_id = 1");
        //返回query的数组信息
        $good = mysql_fetch_array($query);
        //自增1   也可以用 $good['good_num']+=1
        $num =  $good['good_num']+1;
        //修改
        if(mysql_query("UPDATE good good SET good_num = $num WHERE `good`.`good_id` = 1;")){
        //输出已赞
            echo "已赞($num)";
        //创建cookie good     设置时间为当前时间+72000000毫秒,约为3年左右吧....
            setcookie("good",true,time()+72000000);
        }else{
            echo "出错了...";
        }
    }
}
?>

3.php:

<?php//这个连接数据库不多说
$link = mysql_connect("localhost","root","123")or die("连接数据库失败");
mysql_select_db("good",$link);
?>

数据表:

CREATE TABLE IF NOT EXISTS `good` (
  `good_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `good_num` int(20) NOT NULL DEFAULT '0',
  PRIMARY KEY (`good_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;

INSERT INTO good (good_id, good_num) VALUES (1, 0);

复制上面的sql指令,或者自己新建一个字段用来记录点赞次数都行,,

点赞就到此结束了,希望大家能够理解,我得赶快去做我的小论坛咯……

    阁下需要登录后才可以查看评论哦~

    随便看看

      载入中...

      正在准备穿越次元,阁下请稍等片刻~