夺命雷公狗---DEDECMS----32dedecms电影网评价星星功能的实现

我们要完成的是电影网的评价功能:

我们要做这个功能前,就要让前期工作准备好,首先让鼠标移动到星星时,星星的左边都是黄色的星星右边还是灰星星。

我们打开内容页的模版看下他代码是如何组成的:

我们在这里可以很清晰的看得到他是通过二十张图片而组成的,所以我们首先将所有的星星都绑定一个鼠标移动事件,onmouseover,

写这个功能前必须要先引入jquery库,如下所示:

然后用id选择器将他绑定,如下所示:

然后在后台更新下文章页模版,

让后就将鼠标放到星星头上看下有没弹出OK,如果弹出证明我们的绑定已经成功了:

然后继续修改文章页的模版文件:

<script type="text/javascript" language="javascript">
    $("#rank_pic img").mouseover(function(){
        //先测试下是否已经绑定成功
        //alert(‘OK‘);

        //-------------------让选中的单前星星也变成黄色GO
        var imgsrc=$(this).attr("src");
        imgsrc=imgsrc.replace("rank_3.gif","rank_1.gif");
        imgsrc=imgsrc.replace("rank_4.gif","rank_2.gif");
        //从新设置给该图片
        $(this).attr("src",imgsrc);
        //---------------------------------------------ONE
        //将选中的星星左边的所有img的src换成黄星,将右边的换成灰星,这个this表示移动到的星星
        $(this).prevAll().each(function(){
            //对左边的所有星星进行遍历,修改src,这个this表示左边的某个星星
            var imgsrc=$(this).attr("src");
            //alert(imgsrc);
            //字符替换
            imgsrc=imgsrc.replace("rank_3.gif","rank_1.gif");
            imgsrc=imgsrc.replace("rank_4.gif","rank_2.gif");
            //从新设置给该图片
            $(this).attr("src",imgsrc);
        });
        //将右方的所有图片换成灰星
        $(this).nextAll().each(function(){
            var imgsrc=$(this).attr(‘src‘);
                imgsrc=imgsrc.replace("rank_1.gif","rank_3.gif");
                imgsrc=imgsrc.replace("rank_2.gif","rank_4.gif");
                $(this).attr(‘src‘,imgsrc);
        });
    });
</script>

然后再去刷新下文章页的模版文件,再去放鼠标到星星上面看下效果即可:

如果如上图所示证明我们的第一步js特效方面已经成功了。。

然后我们开始让用户点击星星时候让评分值数据入库了,但是在入库时候要添加两个字段我们才可以知道评分值(总分数÷评分人数=平均分)。

我们首先1.要绑定事件,2.获取分数,3.将这次评分值入库

    $("#rank_pic img").click(function(){
        //获取用户评分值
        var pingfen=($(this).prevAll().length+1)/2;
        //alert(pingfen);
        //js配合dede标签取出当前文档的id
        var aid={dede:field.aid/};
        //alert(aid);
        //用dede标签配合js定义一个url直接指向plus
        var twourl="{dede:field name=‘phpurl‘/}"+"/pingfen.php?aid="+aid+"&pingfen="+pingfen;
        //alert(twourl);
        //发出ajax请求,让后通过在plus目录下创建pingfen.php来利用dsql进行接收处理这里的数据
        $.ajax({
            type: "GET",
            url: twourl,
            success: function(msg){
                   $(‘#rank‘).html(msg);
            }
        });
    });

我们用ajax发送数据给了plus目录下的pingfen.php文件来进行数据处理,代码如下所示:

<?php
    require_once(dirname(__FILE__)."/../include/common.inc.php");
    //接收id
    $aid = $_GET[‘aid‘];
    //接收评分
    $pingfen = $_GET[‘pingfen‘];
    //修改下评分值
    $sql = "update `#@__addonmovie` set pingfen=$pingfen where aid=$aid";
    //测试看下sql语句是否正确
    //file_put_contents("d:/mytest.log",$sql);
    if($dsql->ExecuteNoneQuery($sql)){
        $sql = "select pingfen from `#@__addonmovie` where aid=$aid";
        $row = $dsql->GetOne($sql);
        if(is_array($row)){
            echo $row[‘pingfen‘];
        }
    }else{
        echo "评分失败";
    }

然后我们过去更新下文章页的模版文件,然后再来测试下,效果如下所示:

但是我们发现了一个问题,如果从新进来到该影片时,确又发生了变化,如下所示:

我们不能同步起来,因为我们第二次点击时候还是访问了缓冲的模版文件,还没更新过来,所以我们要继续改写让实际的评分和显示的评分值要同步起来。

解决方法可以通过直接嵌入一段<script></script>代码来进行解决,我盟将原本的取值方法改下:

我们将他稍微的改下问题即可解决,代码如下所示:

<li>用户评分:
                    <font id="rank">
                        <script src="{dede:field name=‘phpurl‘/}/pingfen.php?flag=getpf&aid={dede:field name=‘id‘/}" type="text/javascript">
                        </script>
                    </font> 分
                    (共有<font id="rank_num">...</font>人评分)
                </li> 

$("#rank_pic img").click(function(){
        //获取用户评分值
        var pingfen=($(this).prevAll().length+1)/2;
        //alert(pingfen);
        //js配合dede标签取出当前文档的id
        var aid={dede:field.aid/};
        //alert(aid);
        //用dede标签配合js定义一个url直接指向plus
        var twourl="{dede:field name=‘phpurl‘/}"+"/pingfen.php?flag=pingfen&aid="+aid+"&pingfen="+pingfen;
        //alert(twourl);
        //发出ajax请求,让后通过在plus目录下创建pingfen.php来利用dsql进行接收处理这里的数据
        $.ajax({
            type: "GET",
            url: twourl,
            success: function(msg){
                   $(‘#rank‘).html(msg);
            }
        });
    });

然后再修改下pingfen.php

<?php
    require_once(dirname(__FILE__)."/../include/common.inc.php");
    //先接收一个flag值,判断用户是要评分才是取分
    $flag = $_GET[‘flag‘];
    if($flag==‘pingfen‘){
        //接收id
        $aid = $_GET[‘aid‘];
        //接收评分
        $pingfen = $_GET[‘pingfen‘];
        //修改下评分值
        $sql = "update `#@__addonmovie` set pingfen=$pingfen where aid=$aid";
        //测试看下sql语句是否正确
        //file_put_contents("d:/mytest.log",$sql);
        if($dsql->ExecuteNoneQuery($sql)){
            $sql = "select pingfen from `#@__addonmovie` where aid=$aid";
            $row = $dsql->GetOne($sql);
            if(is_array($row)){
                echo $row[‘pingfen‘];
            }
        }else{
            echo "评分失败";
        }
    }else if($flag==‘getpf‘){
        //接收aid
        $aid = $_GET[‘aid‘];
        $sql = "select pingfen from `#@__addonmovie` where aid={$aid}";
        $row = $dsql->GetOne($sql);
            if(is_array($row)){
                echo "document.write(‘".$row[‘pingfen‘]."‘);\r\n";
            }
    }

这样问题即可解决,只要评价多少分,那么每次进来一看,他就是多少分的了。。。

但是新的问题又来了,我们每次打开的时候他的分数是确定了,但是星星不确定,如下所示

时间: 2024-08-28 10:32:55

夺命雷公狗---DEDECMS----32dedecms电影网评价星星功能的实现的相关文章

夺命雷公狗---微信开发60----在线点播电影网2之电影网整体完工

我们上一节课介绍了电影网的核心部分ckplayer播放器,那么我们按照上一节课的基础上来完成这个电影网. 我们先来穿件一个index.html,代码如下所示: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>夺命雷公狗之电影在线点播网</title> <!--宽高禁缩放 --> <meta name="viewpor

夺命雷公狗—玩转SEO---56---query需求分析与搜索意图研究

做排名4大核心因素: 域名 页面质量 链接 用户行为 我们需要了解什么是query: 我们直接百度一个词,然后F12键盘,进入审查的界面然后进入network,然后找一个jQuery的反馈,如下所示: 他木有出来,然后点击一下清理按钮,然后鼠标再放到输入框中即可见到,如下所示: 然后我们将获取到的数据保存出来,然后在进行二次编辑: 原本: https://www.baidu.com/sugrec?pre=1&p=3&ie=utf-8&json=1&prod=pc&f

夺命雷公狗—玩转SEO---58---全站title与description深层次玩法,首页篇

title:标题 度娘的标题其实是有实际的标题规范的,大家可以参考:   https://ziyuan.baidu.com/college/articleinfo?id=2728 ,大家按照度娘最新发布出来的规范要求来玩即可,站长平台查看: 在这里可以找到度娘对标题的要求,而以下官方这段话是特别需要重视的点: 度娘官方中对标题有了一个很明显的规范,而且关键词堆积这个反面例子,现在都改成这样了,所以我们如果是做新站,那就按照他们官方的要求来玩好了: 那么我们就按照他的要求来写标题即可,而且网站标题

2016-08-20--回忆了下当年的夺命雷公狗(一)

今天感觉头有点疼,也许昨晚5点才睡,今天8点多就起床的原因吧.. 早些时候躺在床上休息了一会想起了很多当年在“黑客”圈子里面的回忆.. 那时候大概是在06年左右吧,我第一次感受到黑客给我带来的震撼敢.. 那时候记得小弟还在读初中,那时候在网吧里上网,(未成年...) 那时候记得腾讯里面刚在推广一款网络产品(QQ宠物).. 记得那时候要拿个木锤子砸金蛋,如果运气好点就会砸出一个宠物.. 也许本人比较背,,,,, 连续砸了一个多星期都没砸出..... 但是在某一天看到有人加了我的QQ,他给我来句“您

夺命雷公狗---微信开发23----客服消息接口基础和推送文本

我们这边课程里面一共用到了三个文件,分别是WeChat.class.php和common.php以及index.php 我们在写这个功能之前也要学会查手册,手册我们可以在微信开发这里找到,如下所示: 点击进去后我们将会看到客服接口,我们可以点击下进去看看里面有什么动动 这里有一个发送文本消息的,我们点击进去看下 这里很明显就看到文本消息是通过一个json数据来进行实现的,废话不多说,开工 这里我们先来写一个WeChat.php的文件,这里作用主要适用于封装一个CURL上传类的,代码如下所示: <

夺命雷公狗---微信开发17----自定义菜单的事件推送,响应菜单的CLICK

废话不多说,index.php 代码如下所示: <?php /** * wechat php test */ //define your token require_once "common.php"; define("TOKEN", "twgdh"); $wechatObj = new wechatCallbackapiTest(); //当接入成功后,请注销这句话,否则,会反复验证. //$wechatObj->valid();

夺命雷公狗---linux之centos的安装

由于要玩node.js了,所以还是来复习下linux系统才行,所以夺命雷公狗分享两套安装linux的方法,这是centos的安装方法,,, 管理员默认帐号为:root,密码则是刚才您输入的那个...

夺命雷公狗---linux之红帽的安装

夺命雷公狗分享的第二套安装linux方法是RadHad的安装方法,,, 点击然后就自动重启了

夺命雷公狗---微信开发48----获取用户地理位置接口(3)

这节课程我们来做一个游戏,这个游戏的名字叫“寻找美女做老婆”, 用户该游戏后,每隔5s(秒)会收到他距离未来老婆的信息,如果找到美女后,输入“老婆”即可成功. 这次我们涉及到一个车联网API,我们先来看下他在哪,张成什么样. http://lbsyun.baidu.com/index.php?title=car 找到接口说明,里面有一个测距,如下所示: 我们可以看到这就是他的接口 参数说明以及返回的参数如下所示: 很明显他就是返回一个XML或者是json格式的数据,默认返回的是一个XML格式的数