我如何与评级明星和PHP合作

时间:2011-11-15 06:52:23

标签: php javascript jquery html

我正在实施此处提供的评分星Rating Stars

,我正在用PHP创建一个表并动态地将记录放在这样的表中。所以现在,将有一个列表,我将展示那些星星。我将值保存为1到5之间的数字。当我将它们绑定到我的html表时,如何在<td>内告诉它从数据库中提取的值应该是检查的值,换句话说,想象一下

从db中提取值3(字段称为rate_num),因此td应该如下所示

<td>
  <input name="star9" type="radio" class="star" disabled="disabled"/>
  <input name="star9" type="radio" class="star" disabled="disabled"/>
  <input name="star9" type="radio" class="star" disabled="disabled" checked="checked"/>
  <input name="star9" type="radio" class="star" disabled="disabled"/>
  <input name="star9" type="radio" class="star" disabled="disabled"/> 
</td>

现在star9意味着这是第9条记录,第9条记录被评为3星。

好的,这是我的第一个问题

第二个问题是保存它,当他们点击一个星我想要获得已检查的值并以某种方式将其转换为数字1到5,以便我可以保存它。

我将数据库设置为虚假数据进行测试..(尚未发现真正的评级)。但我不是PHP专家或如何解决这个问题。我很感激你的帮助。

有任何问题请不要犹豫......(而不是投票)

此致

2 个答案:

答案 0 :(得分:3)

在每颗星上添加一个值=“1”到5。最有可能为点击添加一个javascript(jQuery)监听器,并对服务器端(php)函数进行ajax调用(POST),该函数接收项目的id和&amp;评级值。如果您的网站有用户,请确保他们只能投票一次。

查看固定的HTML标记(thx mmmshuddup):

<td>
    <input name="star9" value="1" type="radio" class="star" />
    <input name="star9" value="2" type="radio" class="star" />
    <input name="star9" value="3" type="radio" class="star" />
    <input name="star9" value="4" type="radio" class="star" />
    <input name="star9" value="5" type="radio" class="star" /> 
</td>
  1. 创建明星的html - 如果您不希望任何人投票,则仅使用禁用。
  2. 当用户点击星标时,添加一个事件监听器
    $('.star').click( function() { ajax_call(id,rating); });
  3. 这个ajax_call()将POSTS数据发送到服务器端文件(例如ajax.php)..它检查谁对项目进行了评级,如果用户没有评级,则添加。
  4. 评论1:是的,每个恒星块(5)应该有一个独特的“名称”或“类”,例如坚持name =“star1”.. name =“star9”。当用户点击,并按照我的建议调用该函数时,确定它是哪个项目,也许找到最后的子字符串位置4来获取id。

答案 1 :(得分:1)

添加到Mike的答案:如果可能的话,最好尽可能使用GET请求,那就是说你的ajax调用看起来像这样:

$('.star').rating({
    callback: function(value, link) {
       var name = $(this).attr('name');
       $.ajax({
            url: "/path/to/ajax.php",
            data: "name=" + name + "&value=" + value,
            cache: false,
            success: function(response) {
                try {
                    console.log(response);
                } catch (err) {
                    alert(response);
                }
            }
        });
    }
});