Calcule de temps

Résolu
arthezius Messages postés 3756 Statut Membre -  
arthezius Messages postés 3756 Statut Membre -
Bonjour,
Je suis en train de chercher à faire un script de calcule de temps pour un jeu que je développe.
Je m'expliquer.
Supposons que le joueur acquière un moyen de gagner de l'argent virtuel à intervalle régulier.
J'ai fait en sorte que le script enregistre la date et si l'intervalle entre la date actuelle et celle enregistré, il va lui ajouter une valeur correspondant (l'argent).
Pour faire simple:
Il gagne par exemple 100€ par jours.
La date enregistré est le 10/04/2009.
On est le 14/04/2009.
Il gagne donc 4 x 100 = 400€.
Le calcule est fait avec la fonction mktime().
Toutefois, si je met la date sur 14/03/2009, alors que l'écart devrai être de 30 jours, il me trouve 30.9583333333.
Je vous met ici mon code:
<?php

echo'<title>Test - temps</title>

<meta content="text/html; charset=UTF-8" http-equiv="content-type">

<style>

<!--

p{margin:0px;}

-->

</style>';

require('id_connexion.php');

$sql = 'SELECT * FROM temps WHERE id="1"';

$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());

$data = mysql_fetch_array($req);

if($data['date'] == date('Y-m-d')){echo'<p>Déjà fait !</p>';}

if($data['date'] == '0000-00-00')

	{$date = date('Y-m-d');

	$sql = 'UPDATE temps SET  date="'.$date.'" WHERE id="1"';

	if(mysql_query($sql)){echo'<p>Date actualisé</p>';}

}

else{

//Définition des date au format année-mois-jour

$date1 = $data['date']; 

$date2 = date('Y-m-d');

 

//Extraction des données

list($annee1, $mois1, $jour1) = explode('-', $date1); 

list($annee2, $mois2, $jour2) = explode('-', $date2);



//Calcul des timestamp

$timestamp1 = mktime(0,0,0,$mois1,$jour1,$annee1); 

$timestamp2 = mktime(0,0,0,$mois2,$jour2,$annee2); 

$ecart = abs($timestamp2 - $timestamp1)/86400; //Affichage du nombre de jour : 27

echo'<p>Ecart: '.$ecart.'</p>';
if($ecart >= '1')

	{
	$valeur = $data['valeur'] + $ecart;

	$sql = 'UPDATE temps SET  valeur="'.$valeur.'" WHERE id="1"';

	if(mysql_query($sql)){echo'<p>Valeur actualisé</p>';}

	$date = date('Y-m-d');

	$sql = 'UPDATE temps SET  date="'.$date.'" WHERE id="1"';

	if(mysql_query($sql)){echo'<p>Date actualisé</p>

	<br/>

	<p>Ok. Valeur = '.$valeur.'</p>';}

}





}


?>


Le script de calcule de temps proviens de la FAQ du site developpez.

Si quelqu'un à une idée à me suggérer pour arranger ça...

2 réponses

benj
 
bonsoir,

c'est normale si ça compte à partir des secondes...

arrondi avec floor()

https://www.php.net/manual/fr/function.floor.php
0
arthezius Messages postés 3756 Statut Membre 475
 
Ouai ça a l'air de fonctionner. Le compte est effectivement fait en seconde et j'avais pas pensé à l'arrondir...

Merci en tout cas.
0