Auto zwiększanie rekordu w bazie mysql jak zrobić?


(Konradnie2) #1

Jak zrobić żeby rekord w bazie sam się zwiększał??

Jak ktoś wie to niech poda przykład albo link do przykładu.

Bardzo proszę


(Spam) #2

Słowo kluczowe: auto_increment :slight_smile:


(Konradnie2) #3

A to wiem ale mi chodzi ze mam w bazie rekord np 100 i chcę żeby co 10 min dodawało 10 o to mi chodzi.

Jak wiesz jak to zrobić to napisz przykład


(Drobok) #4

Zależy co chcesz z tym zrobić. Najprościej skrypt php uruchamiany w harmonogramie. Albo zapisujesz dokładną datę rozpoczęcia, i na podstawie obecnej dokładnej daty obliczasz ile tych pkt ci się dodało.


(Konradnie2) #5

Bardzo dobry pomysł tylko jak to zrobić?? Po to napisałem żeby się dowiedzieć co powinno byś w tym skrypcie i jak go uruchomić w harmonogramie.

Jak wiesz to podaj jakiś przykład albo link do manuala jeśli taki jest.


(Drobok) #6

Twój hosting musi udostępniać np. crona. Jeśli tak nie ma nie da rady. A co do skryptu: pobierasz, zwiększasz i zapisujesz co w tym trudnego ? A ustawienia crona powinieneś mieć gdzieś w ustawieniach hostingu.


(Konradnie2) #7

Czyli żeby to zrobić trzeba mieć CRON tak?? inaczej nie da rady??

Jakie są dobre serwery z CRONem/php/mysql pod gre www??????


(Drobok) #8

Na twoim miejscu liczyłbym punkty wg daty jest to bardziej praktyczne niż odpalanie skryptu co 10min.


(Konradnie2) #9

Czyli jak liczyć punkty według daty??

Jak w bazie zapisze date to i tak trzeba powtarzać skrypt żeby się wykonało zwiększenie.

Czy jakoś inaczej to działa??

Podaj jakiś przykład.


(Drobok) #10

Nie, w bazie zapisujesz datę rozpoczęcia naliczania i tylko to. A później jeśli user się loguje (chce sprawdzić pkt), to sprawdzasz odejmując obecną od tej rozpoczęcia, i dzielisz to tak aby uzyskać określony wynik. Np masz 3dni to dzielisz go na 24(godziny), potem na 6 (by mieć ilość 10min). I wtedy mnożysz razy pkt. I masz wynik jaki potrzebujesz bez obciążenia serwera.


(Konradnie2) #11

To dzięki za pomoc.

A ja już myślałem ze to musowo tym CRONem.

Czyli tylko czas w bazie zapisuje a ten cas musi być zapisany podczas rejestracji tak?? bo jak zapisze się potem to nie doda tych punktów ktore się by dodały do zapisania czasu. Dobrze myślę??


(Drobok) #12

Dokładną datę (m,d,y,h,i,s) zapisujesz w momencie od którego chcesz mieć liczone te twoje pkt.


(Konradnie2) #13

To funkcja time() jest od czasu to ja mam zapisać?? czy jest jakaś inna??


(Drobok) #14

date(), najlepiej z wszystkimi argumentami liczbowymi.


(Grzesie K) #15

date() jest tu w zupełności nie potrzebne.

Po pierwsze potrzebna jest baza MySQL z tabelą, oto przykładowa (bez zbędnych danych).

CREATE TABLE `user` (

  `id` int(11) NOT NULL AUTO_INCREMENT,

  `regtime` int(11) NOT NULL,

  PRIMARY KEY (`id`)

)

Później dodajemy gracza:

INSERT INTO `user` (`id`,`regtime`) VALUE (NULL,UNIX_TIMESTAMP())

Zliczaniem punktów również może zająć się baza danych:

SELECT FLOOR((UNIX_TIMESTAMP()-`regtime` )/60) FROM `user` WHERE `id`=1 LIMIT 1

60 to ilość sekund po jakim doliczany jest jeden punkt.


(Konradnie2) #16

Ok to dzięki za pomoc spróbuje tak jak napisałeś.