我有一个类似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>";
}
}
}
答案 0 :(得分:0)
只有第一条评论正在更新的原因是您在所有评论中都使用ID 运营商。
解决此问题的方法是:
在您的PHP代码中更改以下行
<p id='carrier'> 0 </p>
到
<p id="carrier-"'+$id+'"> 0 </p>
注意:尝试不公开实体ID,尝试在注释表中使用另一列,该列对于每个注释都是唯一的。
更改元素的点击,像这样传递您在上一步中使用的列
<img src='image.ico' onclick='displaycount('.$id.')'>
将您的javascript函数更改为
function displaycount(id) {
document.getElementById("carrier-"+id).innerHTML = count();
}
如果您有任何疑问,请发表评论