• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Powiadomienie o zakończeniu działania

Object Storage Arubacloud
0 głosów
222 wizyt
pytanie zadane 18 stycznia 2016 w JavaScript przez Domin Początkujący (360 p.)

Cześć!

Mam zamiar zrobić w prostej gierce przeglądarkowej misje, w której po kliknięciu odpowiedniej misji, włączy się licznik, a po jego zakończeniu wyskoczy wiadomość z rezultatem.

Rozkminiłem to tak:

Kliknięcie w przycisk zadania -> wpisanie do rekordu koniec zadania -> jeśli obecna data jest większa lub równa dacie z rekordu dodaje nam monety i ustawia domyślny rekord końca misji.

Dodałem skrypt, który odświeża diva z monetami co 500ms, zastanawiam się, czy to może spowodować jakieś serwerowe lagi?

Czy do każdego buttona potrzebuje kolejnej funkcji?

Proszę również o jakieś uwagi co do kodu, w celu ulepszenia :)

Z góry dzięki!

$(document).ready(function() {
    $("#FormSubmit").click(function (e) {
            e.preventDefault();
            
            $("#FormSubmit").hide(); 
            
            
             var myData = 'content_txt='+ $("#contentText").val(); //build a post data structure
            jQuery.ajax({
            type: "POST", 
            url: "re2.php",
            dataType:"text",
            data:myData, 
            success:function(response){
                $("#responds").append(response);
                $("#FormSubmit").show();

            },
            error:function (xhr, ajaxOptions, thrownError){
                $("#FormSubmit").show();
                alert(thrownError);
            }
            });
    });
});
    function refresh_div() {
        jQuery.ajax({
            url:'re3.php',
            type:'POST',
            success:function(results) {
                jQuery(".result").html(results);
            }
        });
    }

    t = setInterval(refresh_div,500);
    

re2.php

<?php
$username = "root"; //mysql username
$password = ""; //mysql password
$hostname = "localhost"; //hostname
$databasename = 'gra'; //databasename

//connect to database
$mysqli = new mysqli($hostname, $username, $password, $databasename);

$zero = "0000-00-00 00:00:00";
$time = date('Y-m-d H:i:s', strtotime('+10 second'));
$data = date('Y-m-d H:i:s');

$check = $mysqli->query("SELECT koniec FROM gracze WHERE nick = 'domin' ");
while($row = $check->fetch_assoc())
{
  $kuniec = $row["koniec"];

}
if($kuniec!=$zero){
	echo "Aktualnie robisz zadanie";
} else{
$tez = $mysqli->query("UPDATE gracze SET koniec = '$time' WHERE nick = 'domin'");
}
?>

re3.php

<?php
$username = "root"; //mysql username
$password = ""; //mysql password
$hostname = "localhost"; //hostname
$databasename = 'gra'; //databasename

//connect to database
$mysqli = new mysqli($hostname, $username, $password, $databasename);


$check = $mysqli->query("SELECT koniec FROM gracze WHERE nick = 'domin' ");
while($row = $check->fetch_assoc())
{
  $time = $row["koniec"];

}
$zero = "0000-00-00 00:00:00";
$data = date('Y-m-d H:i:s');

$datetime1 = date_create($time);
$datetime2 = date_create($data);


$left = date_diff($datetime1,$datetime2);

$dodaj = $mysqli->query("SELECT monety FROM gracze WHERE nick = 'domin' ");
while($row = $dodaj->fetch_assoc())
{
  echo $row["monety"];
  if($time != $zero){
	  echo 'Do końca misji pozostało: '.$left->format("%s");
  }

}




if($time<=$data && $time != $zero){
	$tez = $mysqli->query("UPDATE gracze SET koniec = '$zero' WHERE nick = 'domin'");
	$dodaj = $mysqli->query("UPDATE gracze SET monety = monety + 1 WHERE nick = 'domin'");
}

?>

 

1 odpowiedź

+1 głos
odpowiedź 18 stycznia 2016 przez Comandeer Guru (600,810 p.)
Po co go odświeżać co 500ms? Jeśli wiesz kiedy zadanie się wykona, to odśwież stronę wówczas, gdy dany moment w czasie nastąpi – po prostu.
komentarz 18 stycznia 2016 przez Domin Początkujący (360 p.)
Co sekunde ma sprawdzać ile czasu pozostało do końca zadania. Nie wiem jak inaczej to rozwiązać.
komentarz 18 stycznia 2016 przez Comandeer Guru (600,810 p.)
Skoro wiesz kiedy zadanie się skończy, to zapisz sobie ten czas do zmiennej i po prostu do niego odliczaj. Nie potrzeba tutaj żadnego odświeżania.
komentarz 18 stycznia 2016 przez Domin Początkujący (360 p.)
Ta zmienna powinna być w sesji, tak aby odliczał nawet przy przeskakiwaniu po stronach?
komentarz 18 stycznia 2016 przez Comandeer Guru (600,810 p.)
Najlepiej tak zrobić.
komentarz 18 stycznia 2016 przez Domin Początkujący (360 p.)
Nie wiem czy dobrze to zaprojektowałem:

Klik submit -> Dodanie do rekordu końca czasu ->koniec czasu dodany do zmiennej w sesji -> pobranie zmiennej do javascriptu i zaczęcie odliczania ->jeśli odliczanie = 0 nastąpi refresh strony.
komentarz 18 stycznia 2016 przez Comandeer Guru (600,810 p.)
Powinno działać.

Podobne pytania

0 głosów
2 odpowiedzi 228 wizyt
pytanie zadane 29 kwietnia 2016 w JavaScript przez Paweł123 Nałogowiec (33,500 p.)
0 głosów
2 odpowiedzi 199 wizyt
pytanie zadane 11 kwietnia 2019 w PHP przez Majki Obywatel (1,410 p.)
0 głosów
0 odpowiedzi 123 wizyt
pytanie zadane 27 grudnia 2019 w C i C++ przez amtrax Dyskutant (9,630 p.)

92,551 zapytań

141,399 odpowiedzi

319,529 komentarzy

61,937 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...