2

私はまだ初心者です。そうは言っても、私のサイトには、ユーザーが送信したメッセージを削除できるメッセージングシステムがあります。「送信済み」ボックスからメッセージを消去すると、受信者の受信ボックスからメッセージが消去されることが発見されました。送信したメールからメッセージを削除するには、「すべてのメッセージを消去する」と1つずつの2つの方法があります。

これがすべて消去するための私のコードです:

function deleteAll() {
    var answer = confirm('Are you sure you want to delete all of your messages?');
    if(answer){
        return true;
    }else{
        return false;
    }
}

if(isset($_POST['subEraseAll'])){

    $query = "UPDATE `Messages` SET `status` = 'dead' WHERE `sentFrom` = '".$auth->id."'";
    mysql_query($query,$connection) or die(mysql_error());

    <div class="EraseAll">
                                    <form name="EraseAll" action="SentMail.php" method="post" onsubmit="return deleteAll();">
                                    <input  type="submit" name="subEraseAll" value="Erase All Messages" />
                                    </form>
                                    </div>

deleteConfirmPageを介してメッセージを1つずつ削除するコードは次のとおりです。

 $message = $_GET['id'];

    $query = "SELECT * FROM `Messages` WHERE `id` = '" . $message . "'";
    $request = mysql_query($query,$connection);
    $result = mysql_fetch_array($request);

    $toUser = $result['sentTo'];
    $fromUser = $result['sentFrom'];

    if($auth->id !=$fromUser) {
        header("Location: index.php");
        exit;
    }

    $query = "UPDATE `Messages` SET `status` = 'dead' WHERE `id` = '".$message."' LIMIT 1";
    $request = mysql_query($query,$connection);

では、送信済みボックスから受信者の受信トレイから送信済みメッセージをクエリが消去しないようにするにはどうすればよいですか?

4

1 に答える 1

2

これを行うには、テーブルの構造を変更するか、「ステータス」列の使用方法を変更する必要がある場合があります。

これは、テーブル構造の変更を提案する潜在的な解決策ですが、それが機能するかどうか (または関連性があるかどうか) は、さらに情報がないとわかりません。


現在、メッセージ テーブルには[ステータス]列しかありません。実際に必要なのは、[ステータス送信者]列と、さらに[ステータス受信者] 列です。

送信者がメッセージを削除する場合は、'Status Sender' の値を 'dead'に設定し、受信者がメッセージを削除する場合は、'Status Receiver' を 'dead' に設定します。

これは、 'Status Reciever' = 'alive'を照会する必要があるユーザーの受信トレイにメッセージを表示している場合、およびユーザーの送信済みフォルダーにメッセージを表示している場合は、 'Status Sender' = 'aliveを照会する必要があることを意味します。 ' .


注: この設計は、1 人のユーザーが複数の受信者にメッセージを送信するシナリオには適していません。

于 2010-01-20T22:43:30.840 に答える