如何用php获取星级的值

Posted

技术标签:

【中文标题】如何用php获取星级的值【英文标题】:how to get the value of rating star with php 【发布时间】:2021-08-14 18:51:34 【问题描述】:

我正在使用 jquery 星级插件。链接是 (http://irfandurmus.com/projects/jquery-star-rating-plugin/)。我想点击星号,它会给我一个值,所以我可以用 php 将它传递给数据库。 我已经多次破坏插件试图让它工作,但无济于事。它在网站上显示得很好,但我无法将值存储在数据库中。也许我应该修改 js 文件但我不知道如何。这里是:

;(function($)
    $.fn.rating = function(callback)
        
        callback = callback || function();

        // each for all item
        this.each(function(i, v)
            
            $(v).data('rating', callback:callback)
                .bind('init.rating', $.fn.rating.init)
                .bind('set.rating', $.fn.rating.set)
                .bind('hover.rating', $.fn.rating.hover)
                .trigger('init.rating');
        );
    ;
    
    $.extend($.fn.rating, 
        init: function(e)
            var el = $(this),
                list = '',
                isChecked = null,
                childs = el.children(),
                i = 0,
                l = childs.length;
            
            for (; i < l; i++) 
                list = list + '<a class="star" title="' + $(childs[i]).val() + '" />';
                if ($(childs[i]).is(':checked')) 
                    isChecked = $(childs[i]).val();
                ;
            ;
            
            childs.hide();
            
            el
                .append('<div class="stars">' + list + '</div>')
                .trigger('set.rating', isChecked);
            
            $('a', el).bind('click', $.fn.rating.click);            
            el.trigger('hover.rating');
        ,
        set: function(e, val) 
            var el = $(this),
                item = $('a', el),
                input = undefined;
            
            if (val) 
                item.removeClass('fullStar');
                
                input = item.filter(function(i)
                    if ($(this).attr('title') == val)
                        return $(this);
                    else
                        return false;
                );
                
                input
                    .addClass('fullStar')
                    .prevAll()
                    .addClass('fullStar');
            
            
            return;
        ,
        hover: function(e)
            var el = $(this),
                stars = $('a', el);
            
            stars.bind('mouseenter', function(e)
                // add tmp class when mouse enter
                $(this)
                    .addClass('tmp_fs')
                    .prevAll()
                    .addClass('tmp_fs');
                
                $(this).nextAll()
                    .addClass('tmp_es');
            );
            
            stars.bind('mouseleave', function(e)
                // remove all tmp class when mouse leave
                $(this)
                    .removeClass('tmp_fs')
                    .prevAll()
                    .removeClass('tmp_fs');
                
                $(this).nextAll()
                    .removeClass('tmp_es');
            );
        ,
        click: function(e)
            e.preventDefault();
            var el = $(e.target),
                container = el.parent().parent(),
                inputs = container.children('input'),
                rate = el.attr('title');
                
            matchInput = inputs.filter(function(i)
                if ($(this).val() == rate)
                    return true;
                else
                    return false;
            );
            
            matchInput
                .prop('checked', true)
                .siblings('input').prop('checked', false);
            
            container
                .trigger('set.rating', matchInput.val())
                .data('rating').callback(rate, e);
        
    );
    
)(jQuery);

mysql数据库存在如下

CREATE TABLE IF NOT EXISTS `rating` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `product_id` int(11) NOT NULL,
  `vote` float NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1

我想用这个php代码来获取星级值但是没办法。

<?php

function connect() 
$hostname = "localhost";
$username = "root";
$password = "root";
$dbname = "rating";
  $con = mysqli_connect($hostname, $username, $password, $dbname);  
  return $con;


function getRatingByProductId($con, $productId) 
    $query = "SELECT SUM(vote) as vote, COUNT(vote) as count from rating WHERE product_id = $productId";

      $result = mysqli_query($con, $query);
      $resultSet = mysqli_fetch_assoc($result);
      if($resultSet['count']>0) 
        return ($resultSet['vote']/$resultSet['count']);
       else 
        return 0;
      
    

if(isset($_REQUEST['type'])) 
    if($_REQUEST['type'] == 'save') 
        $vote = $_REQUEST['vote'];
        $productId = $_REQUEST['productId'];
          $query = "INSERT INTO rating (product_id, vote) VALUES ('$productId', '$vote')";
          // get connection
          $con = connect();
          $result = mysqli_query($con, $query);
          echo 1; exit;
     


?>

【问题讨论】:

警告:您对SQL Injections 持开放态度,应该使用参数化的prepared statements,而不是手动构建查询。它们由PDO 或MySQLi 提供。永远不要相信任何形式的输入!即使您的查询仅由受信任的用户执行,you are still in risk of corrupting your data。 Escaping is not enough! 【参考方案1】:

您可以使用下面的 jQuery 代码在数据库中提交星号。

jQuery('.stars .star').click(function()
    var starValue = $(this).closest('.stars').find('.fullStar').length;
    console.log(starValue);

    // Send starValue value with ajax and store on database
);

【讨论】:

但是如何发送starValue值。我写这个-----> $.ajax( url: "trygo.php", type: "POST", data:"myData": starValue, 我的 trygo.php 显示在这里 mysql_connect($dbhost, $dbuser, $dbpass); mysql_select_db($dbname) or die(mysql_error()); // 从查询字符串中检索数据 $myData = $_GET[' myData']; 是吗?我出错了,myData 变量无法定义 在控制台上,当您点击任何星星时,会打印选定的星星值? 是的,你是对的。我从控制台看到了值1,2,3,4,5 但我不能通过starValue .$.ajax( url: "trygo.php", type: "POST", data:"myData":starValue, url : "trygo. php", type : "POST", //dataType : 'json', data : 'starValue':starValue, , 尝试失败 您正在访问错误的参数。在您的 ajax 代码上,您发送的是 starValue 键,而在 php 上,您使用 $_GET['myData']。你可以尝试使用 $_GET['starValue']

以上是关于如何用php获取星级的值的主要内容,如果未能解决你的问题,请参考以下文章

微信公众平台消息接口里,如何用php获取用户头像

如何用php向服务器发送post请求

如何用jquery中获取超链接中传的值

请问Java中Map集合如何使用?key值和value值如何用?请说的详细一点

如何用js获取当前url的参数值

如何用js获取当前url的参数值