Nocka zarwana na ulepszanie kodu.
skrypt ajaxa (kod znalazłem i pozmieniałem na własne potrzeby):
$(document).ready(function() {
$("#FormSubmit").click(function (e) {
e.preventDefault();
$("#FormSubmit").hide(); //hide submit button
var myData = 'content_txt='+ $("#contentText").val(); //build a post data structure
jQuery.ajax({
type: "POST", // HTTP method POST or GET
url: "re2.php", //Where to make Ajax calls
dataType:"text", // Data type, HTML, json etc.
data:myData, //Form variables
success:function(response){
$("#responds").append(response);
$("#contentText").val(''); //empty text field on successful
$("#FormSubmit").show(); //show submit button
},
error:function (xhr, ajaxOptions, thrownError){
$("#FormSubmit").show(); //show submit button
alert(thrownError);
}
});
});
});
function refresh_div() {
jQuery.ajax({
url:'re3.php',
type:'POST',
success:function(results) {
jQuery(".result").html(results);
}
});
}
t = setInterval(refresh_div,1000);
Jeden wysyła zadanie zmiany rekordu końca misji, drugi odświeża co sekunde z zapytaniem do bazy, czy koniec jest równy aktualnej dacie.
Kontynuacja index.php
<?php
$host = "localhost";
$db_user = "root";
$db_password = "";
$db_name = "gra";
$wynik = mysql_query("SELECT monety FROM gracze WHERE nick ='domin' ") or
die('Błąd zapytania');
$monety = $r['monety'];
}
}
echo "<div class=\"result\"></div>";
?>
<div class="form_style">
<button id="FormSubmit">Add record</button>
</div>
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";
$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";
$password = "";
$hostname = "localhost";
$databasename = 'gra';
//connect to database
$mysqli = new mysqli($hostname, $username, $password, $databasename);
$dodaj = $mysqli->query("SELECT monety FROM gracze WHERE nick = 'domin' ");
while($row = $dodaj->fetch_assoc())
{
echo 'Masz aktualnie '.$row["monety"].'monet';
}
$zero = "0000-00-00 00:00:00";
$data = date('Y-m-d H:i:s');
$check = $mysqli->query("SELECT koniec FROM gracze WHERE nick = 'domin' ");
while($row = $check->fetch_assoc())
{
$time = $row["koniec"];
}
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'");
}
?>
Zastanawiam się, czy te co sekundowe odświeżanie diva ajaxa będzie okej, czy nie będzie obciążało serwera.
Wybaczcie za to mieszanie mysql i mysqli, ale skupiłem się na rozbudowie tego skryptu, zamiast na wyszczupleniu kodu.