Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php/mysql] Zwiększanie danych w bazie danych
Forum PHP.pl > Forum > PHP
Plikownik
Witam

Czy mógłby mi ktoś przedstawić na jakimś krótkim przykładzie jak napisać skrypt albo jak się zabrać za napisanie skryptu, który zwiększa wartość w pewnej tabeli mysql np. o 10 co minutę. Chcę zabrać się za stworzenie jakiejś prostej gry-online, i chciałbym, żeby każdemu użytkownikowi po rejestracji ziększała się ilość złota o 10 na min. Jak takie coś zrobić?
mike
Musisz uzyc CRONa.
Bylo to omawiane wiele razy wiec poradzasz sobie podszac wyszukiwania.
scanner
A ja bym na poczatku każdej strony dał:
  1. <?php
  2. $dbh = mysql_connect( 'localhost', 'scanner', '****' ) or die( mysql_error());
  3. mysql_select_db( 'test', $dbh ) or die( mysql_error());
  4. mysql_query( 'UPDATE zasoby
  5. SET currentTimestamp = NOW(),
  6. zloto = zloto + (10*((currentTimestamp - lastTimestamp) / 60)),
  7. lastTimestamp = currentTimestamp
  8. ', $dbh ) or die( mysql_error());
  9. $sqlresult = mysql_query( 'SELECT zloto FROM zasoby' ) or die( mysql_error());
  10. $x = mysql_fetch_row( $sqlresult );
  11. echo 'Zloto: '.$x[0];
  12.  
  13. // timestamp to sekundy od Epoch
  14. // current - last = ilosc sekund, jaka uplynela miedzy odswiezeniem
  15. // (current - last) /60 - ilosc minut
  16. // 10 * ( (current - last) /60 ) - tyle zlota dojdzie przez dany okres
  17. ?>
i mając takią tablicę:
  1. CREATE TABLE `zasoby` (
  2. `id` int(11) NOT NULL DEFAULT '0',
  3. `zloto` int(11) NOT NULL DEFAULT '0',
  4. `lastTimestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  5. `currentTimestamp` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00'
  6. ) ENGINE=MyISAM DEFAULT CHARSET=latin2;
  7.  
  8. --
  9. -- Zrzut danych tabeli `zasoby`
  10. --
  11.  
  12. INSERT
  13. INTO `zasoby`
  14. VALUES (1, 174, '2006-03-18 00:52:15', '2006-03-18 00:52:15');
Oczywiście kazdy wiersz w tablicy to osobny gracz, a do UPDATE dodajemy WHERE id = id_gracza.

Przykład działający: http://www.scanner.eu.org/dev/zloto.php

Obywamy sie bez CRONa i aktualizujemy tylko graczy, którzy sa online.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.