2016-04-09 31 views
1

Değerlerimi depoladığım 1 tablom var. Onlara "Taşlar" diyelim.SQL sınırı eklendi/güncelleştirilmiş veriler

submit numaralı tablodan tablo +10 "Taşlar" ekleyen/güncelleştiren bir düğme yaptım.

Eklenen verileri javascript kullanmadan sınırlamanın herhangi bir yolu olup olmadığını bilmiyorum. Mesela amacım günde 100 mücevher sınırlamaktır. Ya da günlük maksimum tıklama sayısını sınırlayın. Bunu nasıl yapacağınıza dair herhangi bir öneriniz var mı?

Denedim:

UPDATE backpack SET gems = gems + 10 WHERE member = '$user_id'"; 
+4

Kesinlikle yapmaması gereken İşte benim denemede Bu istemci tarafında veya insanlar sizin kısıtlamalar etrafında yollar bulmak ve kendilerini "taşlar" – Terminus

+0

vermek Ben herhangi bir işlem göz önünde bulundurularak, sadece indirme için sınır olarak kullanılacak sanal curency. – Aco

+0

İlk yorumu kabul ediyorum. Bunu sunucuda yapmanız gerekecek ve her bir tıklamanın kullanıcı_kimliği ve tarihi ile kaydını tutmanız gerekecek. Bir kullanıcı tıkladığında o tarihin sayımını kontrol et ('SELECT COUNT (*)' TARAFINDAN WHERE üye = '$ user_id' VE tarih> todayAtMidnight'). Eğer <10 sayılırsa, tıklamalar tablosuna yeni bir giriş ekleyebilir ve başlangıçta planladığınız gibi sırt çantası tablosunu güncelleyebilirsiniz. – markwatsonatx

cevap

0

tek bir mySQL sorguda bunu yapabilirsiniz. Günlük 100 gems limitine 10 tane mücevher eklemek istediğinizi varsayalım.

CREATE TABLE `Gems` (
    `user_id` int(11) NOT NULL AUTO_INCREMENT, 
    `gems` int(11), 
    `gCount` varchar(45), 
    `gDate` date, 
    PRIMARY KEY (`user_id`) 
) ; 

INSERT INTO `Gems` VALUES 
(1,220,'100','2016-04-09'), 
(2,310,'50','2016-04-09'), 
(3,110,'20','2016-04-08'); 

| user_id | gems | gCount |  gDate | 
|---------|------|--------|------------| 
|  1 | 220 | 100 | 2016-04-09 | 
|  2 | 320 |  60 | 2016-04-09 | 
|  3 | 110 |  20 | 2016-04-08 | 

Yani ihtiyaç mantıktır:

if gDate >= CURDATE and gCount < 100 and gCount+10 <= 100 
{ 
    gems = gems + 10; 
    gCount = gCount + 10; 
} 
else if gDate < CURDATE 
{ 
    gDate = CURDATE; 
    gCount = 10; 
    gems = gems + 10; 
} 

ve işi yapacak eşdeğer mySQL Güncelleme deyimi:

UPDATE Gems 
SET 
    gems = IF((gDate >= CURDATE() AND gCount < 100 AND gCount+10 <= 100) 
      OR gDate < CURDATE(), 
     gems + 10, 
     gems), 
    gCount = IF((gDate >= CURDATE() AND gCount < 100 AND gCount+10 <= 100), 
     gCount + 10, 
     IF(gDate < CURDATE(), 10, gCount)), 
    gDate = IF(gDate < CURDATE(), CURDATE(), gDate) 
WHERE 
    user_id = <user_id>;