监理公司管理系统 | 工程企业管理系统 | OA系统 | ERP系统 | 造价咨询管理系统 | 工程设计管理系统 | 甲方项目管理系统 | 签约案例 | 客户案例 | 在线试用
X 关闭
新余网站建设公司

当前位置:工程项目OA系统 > 泛普各地 > 江西OA系统 > 新余OA > 新余网站建设公司

php+jquery 星级评分程序

申请免费试用、咨询电话:400-8352-114

首先 HTML

  1. <li>游戏评分:
  2. <div>
  3. 总评分:<span id="showpf"><script type="text/javascript" src="www.xxx.com/showinfo.php?action=pingfen&gid=<?=$arcid?>&pdid=1"></script></span>
  4. <p id="rate_span"></p>
  5. <div id="pfnum">
  6. <img src="http://inncache.soso.com/xsoso/images/empty_star.gif" width="28" title="<?=$arcid?>" height="28" class="ratestar_img" alt="1分,点击进行评分!" />
  7. <img src="http://inncache.soso.com/xsoso/images/empty_star.gif" width="28" title="<?=$arcid?>" height="28" class="ratestar_img" alt="2分,点击进行评分!" />
  8. <img src="http://inncache.soso.com/xsoso/images/empty_star.gif" width="28" title="<?=$arcid?>" height="28" class="ratestar_img" alt="3分,点击进行评分!" />
  9. <img src="http://inncache.soso.com/xsoso/images/empty_star.gif" width="28" title="<?=$arcid?>" height="28" class="ratestar_img" alt="4分,点击进行评分!" />
  10. <img src="http://inncache.soso.com/xsoso/images/empty_star.gif" width="28" title="<?=$arcid?>" height="28" class="ratestar_img" alt="5分,点击进行评分!" />
  11. <img src="http://inncache.soso.com/xsoso/images/empty_star.gif" width="28" title="<?=$arcid?>" height="28" class="ratestar_img" alt="6分,点击进行评分!" />
  12. <img src="http://inncache.soso.com/xsoso/images/empty_star.gif" width="28" title="<?=$arcid?>" height="28" class="ratestar_img" alt="7分,点击进行评分!" />
  13. <img src="http://inncache.soso.com/xsoso/images/empty_star.gif" width="28" title="<?=$arcid?>" height="28" class="ratestar_img" alt="8分,点击进行评分!" />
  14. <img src="http://inncache.soso.com/xsoso/images/empty_star.gif" width="28" title="<?=$arcid?>" height="28" class="ratestar_img" alt="9分,点击进行评分!" />
  15. <img src="http://inncache.soso.com/xsoso/images/empty_star.gif" width="28" title="<?=$arcid?>" height="28" class="ratestar_img" alt="10分,点击进行评分!" />
  16. </div>
  17. <span style="font-size:36px;" id="bigrate_span"><script type="text/javascript" src="www.xxx.com/showinfo.php?action=pingfen&gid=<?=$arcid?>&pdid=1"></script></span>
  18. </div>
  19.  </li>

 

HTML 注释:
<?=$arcid?> 文章ID
pdid=1 这个大家不用管,这是我区分游戏,软件,和新闻加的一个频道ID
showinfo.php 显示当前评分 这个就不搬出来了,就是查询出你数据库现在这个游戏的评分,至于数据库呆会另外一个文件会详细讲解,请继续往下看。
 

现在开始上JQ了

 

  1. $(function(){
  2.  
  3. //目前评分状况
  4. var spoint = parseInt($("#showpf").text());
  5. var avarankstr = '';
  6. if(spoint <= 4){
  7. avarankstr="(垃圾中的战斗机)";
  8. }else if(spoint <= 7){
  9. avarankstr="(凑合着过日子吧,可以试试)";
  10. }else if(spoint <= 9){
  11. avarankstr="(很好,强烈推荐)";
  12. }else{
  13. avarankstr="(非常完美,绝世佳作)";
  14. }
  15. //显示根据评分得出的中文描述
  16. $("#rate_span").html(avarankstr);
  17.  
  18. //循环出目前的星级
  19. $("#pfnum img").each(function(i){
  20. if(i <= spoint-1){
  21. $(this).attr("src","http://inncache.soso.com/xsoso/images/newxw/full_star.gif");
  22. }
  23. //缓存一个星星数据,添加鼠标经过和离开动作,鼠标离开则还原到原有评分星级
  24. $(this).data("point",(i+1));
  25. $(this).hover(function(){
  26. var point=$(this).data("point");
  27. $.fn.drawpoint(point);
  28. $("#bigrate_span").html(point);
  29. },function(){
  30. $.fn.drawpoint(spoint);
  31. $("#bigrate_span").html(spoint);
  32. $("#rate_span").html(avarankstr);
  33. });
  34. });
  35.  
  36. //点击进行评分
  37. $("#pfnum img").click(function(){
  38. var indexpf = $(this).index()+1;
  39. var gid = $(this).attr("title");
  40.  
  41. //这个地方大家注意下,因为我之前是要跨域,所以用了getJSON,如果没跨域的话就直接 .get 就可以了。
  42. $.getJSON('http://m.bbb.com/countdown.php?action=pingfen&pdid=1&field_id='+gid+'&pf='+indexpf+'&callback=?',function(data){
  43. if(data.pf=='a'){
  44. alert("这个游戏你已经评分过了");
  45. }else if(data.pf=='b'){
  46. alert("五分钟内只允许评分一次");
  47. }else if(data.pf=='c'){
  48. alert("网络发生未知错误,请稍后再试");
  49. }else{
  50. $("#showpf").text(data.pf);
  51. spoint = data.pf;  
  52. $.fn.drawpoint(data.pf);
  53. alert("您成功的评分了一个游戏");
  54. alert(data.pf);
  55. }
  56. });
  57. });
  58.  
  59. //星级处理方法
  60. $.fn.drawpoint=function(point){
  61. if(point <= 4){
  62. avarankstr="(垃圾中的战斗机)";
  63. }else if(point <= 7){
  64. avarankstr="(凑合着过日子吧,可以试试)";
  65. }else if(point <= 9){
  66. avarankstr="(很好,强烈推荐)";
  67. }else{
  68. avarankstr="(非常完美,绝世佳作)";
  69. }
  70. $("#rate_span").html(avarankstr);
  71.  
  72. $("#pfnum img").each(function(i){
  73. if(i <= point-1){
  74. $(this).attr("src","http://inncache.soso.com/xsoso/images/newxw/full_star.gif");
  75. }else{
  76. $(this).attr("src","http://inncache.soso.com/xsoso/images/newxw/empty_star.gif");
  77. }
  78. });
  79. }
  80. });

最后PHP处理文件
 

  1. //统计评分
  2. function countpf($field_id,$pdid,$pf){
  3. global $db;
  4. $field_id = intval($field_id);
  5. $pdid = intval($pdid);
  6. $pf = intval($pf);
  7. $tableName = 'otherinfo';
  8. $rs = $db->query("select * from $tableName where gid=$field_id and pdid=$pdid");
  9. //如果之前没有评分过, !rs也可以
  10. if($db->num_rows($rs) < 1){
  11. $db->query("insert into $tableName values(NULL,$field_id,$pdid,0,0,0,$pf,1,0)");
  12. $r_pf = $pf;
  13. }
  14. //否则重新计算
  15. else{
  16. $result = $db->fetch_array($rs);
  17. $pfnum = $result['pfnum']; //评分人数
  18. $pfnum++;
  19. $pf = $pf+$result['pf']; //相加之前的评分
  20. $r_pf = ceil($pf/$pfnum); //去整,小数点评分没弄,大家可以自己弄弄
  21. $db->query("update $tableName set pf=$pf,pfnum=$pfnum where id=$result[id]");
  22. }
  23. return $r_pf; //返回现在评分
  24. }
  25.  
  26. if($_GET['action'] == 'pingfen' && $_GET['field_id'] && $_GET['pdid'] && $_GET['pf'] && isset($_REQUEST['callback'])){
  27.  
  28. //获取用户IP和文章ID,方法自己找一个。
  29. $cookiestr = get_onlineip().$_GET['field_id'];
  30.  
  31. //这个文章是否已经被评过
  32. if(isset($_COOKIE['pfperson']) && $_COOKIE['pfperson']==$cookiestr){
  33. $str = 'a';
  34. }
  35. //防止恶意评分,每五分钟才可以评一次
  36. elseif(isset($_COOKIE['pftime']) && (time()-intval($_COOKIE['pftime']) <= 300)){
  37. $str = 'b';
  38. }else{
  39. //设置COOKIE
  40. set_cookie("pfperson",$cookiestr,time()+3600*365);
  41. set_cookie("pftime",time(),time()+3600*365);
  42. //处理评分
  43. $str = countpf($_GET['field_id'],$_GET['pdid'],$_GET['pf']);
  44. }
  45.  
  46. //如果没跨域的话,直接 echo $str, 不用输出JSON格式
  47. $callback = $_REQUEST['callback'];
  48. $arr = array('pf' => $str);
  49. $json = json_encode($arr);
  50. $json = $callback . '(' . $json . ')';
  51. echo $json;
  52. }else{
  53. exit;
  54. }

数据库: id,pdid, gid, pf, pfnum  全部int型。
JQ版本 1.4
PHP 5.2.6 

 

新余网站建设

发布:2007-03-31 15:14    编辑:泛普软件 · xiaona    [打印此页]    [关闭]
新余OA
联系方式

成都公司:成都市成华区建设南路160号1层9号

重庆公司:重庆市江北区红旗河沟华创商务大厦18楼

咨询:400-8352-114

加微信,免费获取试用系统

QQ在线咨询

泛普新余网站建设公司其他应用

新余软件开发公司 新余门禁系统 新余物业管理软件 新余仓库管理软件 新余餐饮管理软件 新余网站建设公司