2016-04-09 3 views
1

Ich habe 1 Tabelle, in der ich Werte speichern. Nennen wir sie "Edelsteine".SQL Limit eingefügt/aktualisierte Daten

Ich machte eine Schaltfläche, die Tabelle +10 "Gems" auf submit Tabelle hinzugefügt/aktualisiert.

Ich weiß nicht, ob es eine Möglichkeit gibt, die eingefügten Daten ohne Javascript zu begrenzen. Zum Beispiel ist mein Ziel, 100 Edelsteine ​​pro Tag zu begrenzen. Oder begrenzen Sie die maximale Anzahl von Klicks pro Tag. Irgendwelche Vorschläge, wie man das macht?

Ich habe versucht:

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

Sie sollten auf jeden Fall nicht tun Es auf der Client-Seite oder Menschen finden Wege um Ihre Einschränkungen und geben sich "Edelsteine" – Terminus

+0

Ich habe keine Transaktionen im Sinn, nur virtuelle curency als Limit für Downloads verwendet werden. – Aco

+0

Ich stimme dem ersten Kommentar zu. Sie müssen dies auf dem Server tun, und Sie müssen jeden Klick mit der Benutzer-ID und dem Datum verfolgen. Wenn ein Nutzer auf Sie klickt, prüfen Sie die Anzahl für dieses Datum ("SELECT COUNT (*) FROM Klicks WHERE member = '$ user_id' UND date> todayAtMidnight'). Wenn die Anzahl <10 ist, können Sie der Clicktabelle einen neuen Eintrag hinzufügen und den Rucksacktisch wie ursprünglich geplant aktualisieren. – markwatsonatx

Antwort

0

Sie es Abfrage in einer mySQL tun können. Angenommen, du möchtest 10 Edelsteine ​​für eine Grenze von 100 Edelsteinen täglich hinzufügen. Hier ist mein Versuch:

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 | 

So ist die Logik, die Sie brauchen, ist:

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; 
} 

und die äquivalente mySQL Update-Anweisung, die die Arbeit machen wird:

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>;