Yeni güncelleştirme takıldığında ölü olarak önceki durumunuzu güncellemek

3 Cevap php

Ben kullanıcı bir metin alanına metin girin ve kendi profil sayfasında o çıkışı olmasını sağlar benim sosyal ağ üzerinde basit bir ekleme sorgusu var. Onlar silmek için seçeneğiniz vardır ve amaçlandığı gibi, ölü gibi durumunu işaretler ve güncelleştirme siler. Onlar sadece Teknik olarak önceki gönderme silinmiş değil, ve eski yazı ile sayfayı yeniden yükler (Ben bunları yapabilmek istediğiniz) zaten orada ne silmeden, yeni bir yazarsanız sorundur.

Ben onlar silmek için seçeneğine sahip olduğu için onu tutmak istiyorum ve (şimdi olduğu gibi) bu db ölü işaretler ama onlar silmeden, yeni bir yazarken, otomatik ölü olarak önceki teslim işaretler.

Ben benim silmek senaryo üzerinde bu var:

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

Ben bir acemi değilim, ama yapmam gereken ne mantığı, sadece gerekli sözdizimi / fonksiyonu emin değilim anlamak

3 Cevap

Sadece durum tüm kayıtları tutmak ve sadece kendi mevcut durum olarak son bir (yüksek kimliği ile rekor) koparmak değil mi? Eğer gerçekten sadece hiç zaten son kayıt çekmek gerekir gibi bir yenisi eklendiğinde ölü olarak işaretlemek gerekmez.

Eğer yeni durumu ekledikten sonra neden mevcut durum için silme komut dosyasını çalıştırın değil? Ben mevcut durumu ID (en $c_status_id diyelim) olduğunu bildiğinizi varsayıyorum edeceğiz.

INSERT INTO statuses VALUES ( ... )
DELETE FROM statuses WHERE id = "$c_status_id"

Bu şekilde, sadece en son durum güncellemesini var.

Eğer 2 sorguları çalıştırmak zorunda olacak gibi geliyor:

  1. ölü olarak varolan bir işaretlemek için UserUpdates güncellemek
  2. yeni bir satır eklemek

Eğer InnoDB veya başka bir işlem motoru kullanıyor iseniz, TRANSACTıON "BEGIN" ile bu sarın ve 2 güncellemeleri tek bir atomik işlem olarak yürütülür, böylece "yürütme".

Uygulama yapmak zorunda tek bir saklı yordam çağrısı olduğunu, böylece uygulamayı kolaylaştırmak için, bir saklı yordam yazılabilir.