0

チャットボックスを作ったのですが、不要なコメントを削除するときに問題があります。挿入された各コメントの onclick イベントに関連付けられた削除機能があります。これがコメントの表示方法です: (コメントはデータベースに保存されます)

var refreshMsg = setInterval(function() {
    $.post("chatFunc.php", { action: "load", id_userMsg: '<?php echo $id_user; ?>' },
function(dVLoadUsers) {
$("#divMsg").append(dVLoadUsers);   // appending the new comments into a div        $("#divMsg").scrollTop($("#divMsg")[0].scrollHeight);   
        }); 
}, 399); // Loop time in milliseconds

これは削除機能(jquery)です:

function DeleteMsg(id_msg){
$.post("chatFunc.php", { action: "del", id_msgChat: id_msg, id_userMsg: '<?php echo $id_user; ?>' },
    function(dVLoad) {
        $("#divMsg").html(dVLoad);
        $("#inputMsg").val("").focus();
    }); 
}

これは action: PHP の「del」です。

if($action == "del"){
$msgDeleted = "Comment Deleted";
$qBorraMsj = mysqli_query($classDB->con,"UPDATE chat SET message = '$msgDeleted ' WHERE id LIKE '$id_msgChat'"); // Updating message content to "Comment Deleted"
$qChat = mysqli_query($classDB->con,"SELECT id, message, userNameFROM chat ORDER BY id ASC LIMIT 60"); // Getting the last 60 messages inserted
while($row = mysqli_fetch_array($qChat) ){
    if($row['message'] == $msgDeleted ) // Showing deleted messages
        echo '<span class="styleUsName">'.$row['userName'].'</span>:&nbsp;<span class="styleMsgDel">'.$row['message'].'</span></br>';
    else // Showing the rest of the messages
        echo '<span class="styleUsName">'.$row['userName'].'</span>:&nbsp;<span class="styleMsgDel">'.$row['message'].'</span>&nbsp;<span class="styleDelMsg" onClick="deleteMsg('.$row['id'].')">delete</span></br>';
 }
}

したがって、基本的にメッセージが削除されると、div は最後の 60 個のメッセージが挿入された状態でリロードされます。メッセージを削除している人には機能しますが、コードを実行しているのは彼だけなので、すべての人には機能しません。

みんなへのメッセージでパネルを更新するにはどうすればよいですか? 御時間ありがとうございます。

4

1 に答える 1

2

Jonが示唆するように、表示された最新のメッセージの ID をサーバーに送信し、それよりも新しいメッセージのみを取得できます。.append()でdiv全体をクリアするのではなく、新しいメッセージを作成します.load()

于 2013-02-25T03:26:57.177 に答える