Ciao a tutti,
sto cercando di creare un sistema che mi permetta di creare una specie di regalo di accesso giornaliero per il mio gioco. Praticamente ogni giorno se il giocatore effettua l'accesso al gioco (ovviamente dopo l'ora di reset del giorno), può ricevere un premio per il suo primo accesso giornaliero.
Nonostante sia un neofita di PHP e MySql, ho cercato di stendere del codice. La prima parte sembra funzionare correttamente, ma sto riscontrando problemi nella stesura della seconda parte di codice.
<?php
// dati accesso database
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "dailybonus";
// Create connection
$mysqli = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($mysqli->connect_error) {
die("Connessione fallita");
}
if(isset($_GET["idgiocatore"])) echo $_GET["idgiocatore"]."<br>"; // echo per debug personale
// Controllo se il giocatore è gia presente nel database, o se è il suo primo login in assoluto
$check = $mysqli->query('SELECT * FROM bonus WHERE idgiocatore = "'.$_GET["idgiocatore"].'"');
// Se è il suo primo login
if($check->num_rows == 0) {
echo "Primo login del giocatore!<br>";
// Inserisco il suo id e la data/ora corrente nel database
$now = new DateTime();
$update = $mysqli->query('INSERT INTO bonus (idgiocatore,ultimoaccesso) VALUES ("'.$_GET["idgiocatore"].'","'.date_format($now, 'd-m-Y H:i:s').'")'); // provato a togliere now();
// Se non ci sono errori restituisco "true" per l'assegnazione del bonus
if ($update) {
echo "true";
// Altrimenti restituisco l'errore
} else { die("ERRORE");}
} else {
// Altrimenti se il giocatore è già presente nel database
$now = new DateTime();
$resetTime = new DateTime();
date_time_set($resetTime, 12, 00, 00);
$a = $mysqli->query('SELECT ultimoaccesso FROM bonus WHERE idgiocatore = "'.$_GET["idgiocatore"].'"');
$lastLogin = new DateTime((string)$a);
echo "LastLogin: " . date_format($lastLogin, 'd-m-Y H:i:s') . "<br>";
echo "Reset time: " . date_format($resetTime, 'd-m-Y H:i:s') . "<br>";
echo "time: " . date_format($now, 'H') . "<br>";
if ($resetTime < $now) {
echo "ok1<br>";
if ($resetTime < $lastLogin) {
echo "ok2";
}
}
$update = $mysqli->query('UPDATE bonus SET ultimoaccesso=NOW() WHERE idgiocatore="'.$_GET["idgiocatore"].'"');
if ($update) {
echo "Aggiornato";
} else { die("ERRORE");}
}
$mysqli->close();
?>
Attualmente non riesco a comparare le date perchè una delle due date non è una stringa, e non so come poterla convertire. Ovviamente non sono certo che quello che sto utilizzando sia il metodo più semplice/veloce per ottenere il risultato che voglio.
Sapete darmi una mano o qualche indicazione?