2016-06-22 4 views
0

私はメールシステムを構築しています。しかし、私は "メールの削除"の部分に立ち往生しています。更新クエリの後に文が動作しない場合

私のデータベースには、真または偽に応答する2つの列(recdelとsenddel)があります。 ユーザーが「削除」を押すたびに、送信者または受信者に基づいて列が真に更新され、正しい人の受信トレイから非表示になります。 受取人と送付者の両方が削除を押したとき、私はデータベースからそれを削除したいと思います。両当事者がそれを削除してしまった場合に備えておく必要はありません。

両方の当事者が削除を押したときに問題が発生します。一方の当事者は、もう一度削除を押してデータベースから削除する必要があります(テスト目的で隠れた部分を削除してください)。

問題は、if文であるように見えます。更新クエリの後に3番目のif文が実行されることはありません。両方の列がtrueになると、3番目のif文が削除されると3番目のif文に移動します。

私はまた、最初の2つのif文の中に3番目のif文を入れてみましたが、同じ問題がまだあります。

どのような考えですか?

if(person == sender) { 
    $query = 'UPDATE `email` SET `senddel`="true" WHERE `id`='.$id.''; 
} 

if(person == recipent) { 
    $query = 'UPDATE `email` SET `recdel`="true" WHERE `id`='.$id.''; 
} 

if(recdel == 'true' && senddel == 'true'){ 
    delfromdb 
} 
+0

実際のコードは何ですか? 'recdel'はクエリの戻り値として定義されていますか?クエリのステータスをチェックしますか? – chris85

+0

'person == sender'?それらは変数ではありません。それらは定義されていない定数で、phpは丁寧に自動的に変数化されます。また、未定義の変数でもあるので、 'null == null'を実行している可能性が最も高いでしょう。 –

+0

「recdel」列または「senddel」列のいずれかに更新が行われるたびに、削除アクションを試みることが1つの方法です。例えば、 '' \ '電子メール\ 'どこ\'をrecdel \' AND \ 'senddel \ 'と' \ 'id \' =から削除しますか? ' – spencer7593

答えて

0

データベースの列に割り当てても、PHP変数は自動的に更新されません。別のSQLクエリを実行する必要があります。

$query = 'DELETE FROM email WHERE recdel = "true" and senddel = "true" AND id = $id'; 
+0

delfromdbは、idに基づいてdbからアイテムを削除する関数です。そのため、すでにクエリがあります。適切なコーディングで質問を更新します。 –

+0

'$ recdel'と' $ senddel'はどうやって設定していますか? – Barmar

+0

PHP変数に値を代入しても、その値がSQL文のテキストのように見えても、データベースに対してSQL文は実行されません。このコードは、PHP変数を文字列値に設定するだけです。 – spencer7593

0

これらの操作は同時には発生しません。したがって、あなたはその声明を真実にすることはありません。

あなたのシナリオは、送信者が自分宛てにメールを送信した場合にのみ機能すると思います。

送信者または受信者とは関係なく、recdel/senddelのステータスをチェックするif文にはさらに条件が必要です。

関連する問題