【问题标题】:Rating specific comments in PHP and MySQL评价 PHP 和 MySQL 中的特定评论
【发布时间】:2016-06-04 19:17:19
【问题描述】:

所以我有一个系统可以将 cmets 发布到一个页面,在那里它们都从数据库中调用并显示在页面上。每条评论都有一个名为“评分”的值,默认为 1,每条评论的左侧都有向上和向下箭头,分别用于提高和降低评分。现在,我已经想出了如何增加和减少数字,但是按照我的方式,所有帖子的评分都会同时增加,无论我对哪个帖子评分。

这是我的“rateup”函数:

$(function () {
        $('#rateup').click(function() {
            var request = $.ajax( {
                type: "POST",
                url: "rateup.php"                               
            });
            request.done(function( msg ) {
                return;
                });
            request.fail(function(jqXHR, textStatus) {

            });
            location.reload();
        });
    });

这是我的 rateup.php 文件:

<?php
$servername = "localhost";
$username = "user";
$password = "password";
$dbname = "db_posts";
$tablename = "posts";

// Connection to database
$connection=mysqli_connect("$servername","$username","$password","$dbname");
// Check connection
if (mysqli_connect_errno()) {
    echo 'NOT_OK';
    //echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

// Increasing the current value with 1
mysqli_query($connection,"UPDATE $tablename SET rating = (rating + 1)");

mysqli_close($connection);

echo 'OK';   
?>

我知道它增加所有帖子的评分的原因是因为我没有指定要增加哪个帖子,这就是我需要帮助的地方。当点击帖子左侧的链接时,如何指定对哪个帖子进行评分?

链接的回显如下:

echo " <a class='noStyle' id='rateup' href='index.php'>&#9660;</a>";

这只是一个与帖子相呼应的 unicode 向上箭头。

谢谢!

【问题讨论】:

  • db 查询需要基于行的唯一标识符的WHERE 子句。试试&lt;a href='index.php?id=". $row['id']."'&gt;&amp;#9660;&lt;/a&gt;。然后就是 php 中的$_GET['id']。确保验证它然后传递给WHERE

标签: javascript php jquery html mysql


【解决方案1】:

您需要指定您点击的链接并通过表单发送。 您可以在链接中添加 data-* 标记来执行此操作:

echo " <a class='noStyle' id='rateup' href='index.php' data-id='".$commentID."'>&#9660;</a>";

然后您可以在提交表单并将其作为数据发送时获取该值:

$(function () {
    $('.rateup').click(function() {
        var id = $(this).data('id');
        $.ajax( {
            type: "POST",
            data: "id=" + id,
            url: "rateup.php"                               
        });
        location.reload();
    });
});

然后你可以通过表单来检索这个:

<?php
$servername = "localhost";
$username = "user";
$password = "password";
$dbname = "db_posts";
$tablename = "posts";

// Connection to database
$connection=mysqli_connect("$servername","$username","$password","$dbname");
// Check connection
if (mysqli_connect_errno()) {
    echo 'NOT_OK';
    //echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$id = $_POST['id'];

// Increasing the current value with 1
mysqli_query($connection,"UPDATE $tablename SET rating = (rating + 1) WHERE commentID = '".$id."'");

mysqli_close($connection);

echo 'OK';   
?>

【讨论】:

  • 我刚试过这个,什么也没发生。没有错误或任何东西,但根本没有评分。
  • 这很可能是因为您发送的commentID 的值是空白的。检查您的输出源代码以确保该属性正常工作。例如,它应该类似于
  • 你说得对,它是空白的。我不知道为什么,我在代码中正确设置了它。数据库行只是称为“id”我不确定这是否与它有关。
  • 将变量从 $commentID 更改为 $row['id'],或者从数据库中获取 id。
  • 我对此非常生疏。它告诉我它期待一个','或';'在这条线上的某个地方,但我没有看到它在哪里丢失:echo "&lt;br&gt;&lt;div id='messageBar'&gt;&lt;b&gt;&lt;a class='noStyle' id='rateup' href='index.php' data-id=' "$row['id']" '&gt;&amp;#9650;&lt;/a&gt; ";
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-09-17
  • 1970-01-01
  • 1970-01-01
  • 2019-04-05
  • 1970-01-01
  • 1970-01-01
  • 2016-10-13
相关资源
最近更新 更多