星级评分的演示

以你之姓@ 2022-06-18 08:15 282阅读 0赞
  1. HTML
  2. 首先我们在.rate里面加入显示的灰星星div#big_rate、亮星星div#big_rate_up、分数span#s及span#g和提示信息div#my_rate。
  3. jQuery
  4. 接着我们写一个获取评分的方法get_rate()
  5. function get_rate(rate) {
  6. rate = rate.toString();
  7. var s;
  8. var g;
  9. $("#g").show();
  10. if (rate.length >= 3) {
  11. s = 10;
  12. g = 0;
  13. $("#g").hide();
  14. } else if (rate == "0") {
  15. s = 0;
  16. g = 0;
  17. } else {
  18. s = rate.substr(0, 1);
  19. g = rate.substr(1, 1);
  20. }
  21. $("#s").text(s);
  22. $("#g").text("." + g);
  23. $(".big_rate_up").animate({
  24. width: (parseInt(s) + parseInt(g) / 10) * 14,
  25. height: 26
  26. },
  27. 1000);
  28. $(".big_rate span").each(function() {
  29. $(this).mouseover(function() {
  30. $(".big_rate_up").width($(this).attr("rate") * 14);
  31. $("#s").text($(this).attr("rate"));
  32. $("#g").text("");
  33. }).click(function() {
  34. var score = $(this).attr("rate");
  35. $("#my_rate").html("您的评分:<span>" + score + "</span>");
  36. $.ajax({
  37. type: "POST",
  38. url: "ajax.php",
  39. data: "score=" + score,
  40. success: function(msg) {
  41. //alert(msg);
  42. if (msg == 1) {
  43. $("#my_rate").html("<span>您已经评过分了!</span>");
  44. } else if (msg == 2) {
  45. $("#my_rate").html("<span>您评过分了!</span>");
  46. } else {
  47. get_rate(msg);
  48. }
  49. }
  50. });
  51. })
  52. }) $(".big_rate").mouseout(function() {
  53. $("#s").text(s);
  54. $("#g").text("." + g);
  55. $(".big_rate_up").width((parseInt(s) + parseInt(g) / 10) * 14);
  56. })
  57. }
  58. 然后直接调用该方法即可:
  59. get_rate(<?php echo $aver; ?>);
  60. ajax.php
  61. 接收前端发送过来的分数值,通过cookie判断用户IP和评分时间,防止重复评分。
  62. $score = $_POST['score'];
  63. if (isset($score)) {
  64. $cookiestr = getip();
  65. $time = time();
  66. if (isset($_COOKIE['person']) && $_COOKIE['person'] == $cookiestr) {
  67. echo "1";
  68. } elseif (isset($_COOKIE['rate_time']) && ($time - intval($_COOKIE['rate_time'])) < 60) {
  69. echo "2";
  70. } else {
  71. $query = mysql_query("update raty set voter=voter+1,total=total+'$score' where id=1");
  72. $query = mysql_query("select * from raty where id=1");
  73. $rs = mysql_fetch_array($query);
  74. $aver = 0;
  75. if ($rs) {
  76. $aver = $rs['total'] / $rs['voter'];
  77. $aver = round($aver, 1) * 10;
  78. }
  79. //设置COOKIE
  80. setcookie("person", $cookiestr, time() + 3600 * 365);
  81. setcookie("rate_time", time(), time() + 3600 * 365);
  82. echo $aver;
  83. }
  84. }
  85. raty表结构:
  86. CREATE TABLE IF NOT EXISTS `raty` (
  87. `id` int(11) NOT NULL auto_increment,
  88. `voter` int(10) NOT NULL default '0' COMMENT '评分次数',
  89. `total` int(11) NOT NULL default '0' COMMENT '总分',
  90. PRIMARY KEY (`id`)
  91. ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
  92. 最后记得在raty评分表里面加一条数据。最后看下星级评分的演示效果吧。

发表评论

表情:
评论列表 (有 0 条评论,282人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Vue 星级评分组件

    Vue 星级评分组件 描述:其实很早就有想做一个星级评分的组价了,并且想写一些组件的代码库,就是在自己没事的时候造一些轮子,在工作的时候直接 Ctrl + C 和 Ctr