计数器适用于第一篇文章,但不适用于第二篇文章

时间:2019-07-15 20:22:58

标签: javascript php html

我有一个类似JavaScript的计数器,可在第一个注释中使用,但在第二个注释中,我将不胜感激!

在我使用PHP或JavaScript的情况下,这种情况一直在发生,这是计数器的JavaScript

var count = (function()
{
    var counter = 0;
    return function() {return counter +=1;}
})();

function displaycount()
{
    document.getElementById("carrier").innerHTML = count();
}
function getComments($conn)
{
    $sql = "SELECT * FROM comments";
    $result = $conn->query($sql);

    while($row = $result->fetch_assoc())
    {
        $id = $row['uid'];
        $sql2 = "SELECT * FROM users WHERE id='$id'";
        $result2 = $conn->query($sql2); 

        if ($row2 = $result2->fetch_assoc()) {
            echo "<div class='comment-box'><p>";
            echo $row2['first_name']."<br>";  
            echo $row['date']."<br>";   
            echo nl2br($row['message']);
            echo "<br>
                  <img src='image.ico' onclick='displaycount()'>
                  <p id='carrier'> 0 </p>";
            echo "</p>";

           if (isset($_SESSION['id'])) {
               if ($_SESSION['id'] == $row2['id']) {
                   echo "<form class='delete-form' method='POST' action='".deleteComments($conn)."'>
                             <input type='hidden'
                                    name='cid'
                                    value='".$row['cid']."'>
                             <button type='submit' name='commentDelete'>
                                 Delete
                             </button>
                         </form>";
               } else {
                   echo "<form class='edit-form' method='POST' action='replycomment.php'>
                             <input type='hidden'
                                    name='cid'
                                    value='".$row['cid']."'>
                             <input type='hidden'
                                    name='uid'
                                    value='".$row['uid']."'>
                             <input type='hidden'
                                    name='date'
                                    value='".$row['date']."'>
                             <input type='hidden'
                                    name='reply'
                                    value='".$row['reply']."'>
                             <button>Reply</button>
                         </form>";   
               }
           } else {
               echo "<p class='commentmessage'>You need to be logged in to reply</p>";
           }

           echo "</div>";     
       }
   }
}

1 个答案:

答案 0 :(得分:0)

只有第一条评论正在更新的原因是您在所有评论中都使用ID 运营商

解决此问题的方法是:

  1. 在您的PHP代码中更改以下行

    <p id='carrier'> 0 </p>
    

    <p id="carrier-"'+$id+'"> 0 </p>
    

注意:尝试不公开实体ID,尝试在注释表中使用另一列,该列对于每个注释都是唯一的。

  1. 更改元素的点击,像这样传递您在上一步中使用的列

    <img src='image.ico' onclick='displaycount('.$id.')'>
    
  2. 将您的javascript函数更改为

    function displaycount(id) { 
         document.getElementById("carrier-"+id).innerHTML = count(); 
    }
    

如果您有任何疑问,请发表评论