Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MYSQL] Blokada robienia czegoś na X godzin
grzegosh
post
Post #1





Grupa: Zarejestrowani
Postów: 51
Pomógł: 3
Dołączył: 26.06.2008

Ostrzeżenie: (0%)
-----


Witam. Bawię się w tworzenie minigierki. Chodzi mi o to, że po wybraniu żeby nasza postać szła na X godzin do pracy, gdzie po X godzinach zarobi X*10 exp'a, następowała blokada robienia czegokolwiek do czasu minięcia tych X godzin, a po tym czasie, aby zwiększył się exp postaci o X*10...

Zrobiłem tak, że w bazie mam tabele work, w której przechowuje id użytkownika, oraz date końca pracy w datetime.
Potem php sprawdzam po odświeżeniu strony czy już jest owa godzina i wszystko chodzi ładnie, do czasu, aż nie zbliżam się do godziny północnej... czyli jak jest już 23, wyśle postać na 2 godz do pracy, to pisze mi od razu, że misja została zakonczona. Po prostu sprawdzam datę, ale nie sprawdza mi dni chyba, tylko samą godzinę... Jak zrobić, by to zabezpieczyć? Oraz jak zrobić, by wypisać ile jeszcze czasu zostało, aby postać znów była odblokowana, kiedy wróci z "pracy"? W tej chwili zapisuje czas do pola Time i wypisuje po prostu o której wróci, a nie za ile.
Dziękuję za pomoc.

Wysyłanie postaci do pracy:
  1. <?php
  2. $dodaj = 3600*2;
  3.        $data = gmdate("H:i:s,", time() + $dodaj);
  4.        $godzina= gmdate("H",time() + $dodaj)+$_POST['ilosc_godzin'];
  5.        if($godzina >= 24)
  6.        {
  7.            $godzina = $godzina - 24;
  8.        }
  9.        $end = gmdate("Y.m.d.".$godzina.".i.s", time() + $dodaj);
  10.        $end_h = gmdate($godzina.":i:s", time() + $dodaj);
  11.            
  12.        $query = mysql_query("INSERT INTO work VALUES (NULL,".$_SESSION['id'].", ".$_POST['ilosc_godzin'].", '".$end."', '".$end_h."')");
  13.  
  14.        echo "Wysłałeś postać do pracy na ".$_POST['ilosc_godzin']." godzin/y by pracował.";
  15. ?>


Sprawdzenie czy postać już wróciła.
  1. <?php
  2. $dodaj = 3600*2;
  3.  
  4.    $obecny_czas = gmdate("H:i:s", time() + $dodaj);
  5.    $q = mysql_query("SELECT * FROM work WHERE user_id=".$_SESSION['id']);
  6.    $row = mysql_fetch_array($q);
  7.    
  8.    echo "obecny czas: ".$obecny_czas;
  9.    if($row['end_h']<$obecny_czas)
  10.    {
  11.        $exp = $row['hours']*10;
  12.        echo "Misja zakończona! Zdobyłeś ".$exp." punktów doświadczenia.";
  13.        $query = mysql_query("DELETE FROM work WHERE user_id=".$_SESSION['id']);
  14.    }
  15.    else
  16.    {
  17.        echo "Wysłałeś postać na ".$row['hours']." godzin pracy.<br />Wróci o godzinie ".$row['end_h']."<br/>";
  18.    }
  19. ?>
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 04:50