[php/mysql] compte a rebour

Fermé
neo2099 Messages postés 164 Date d'inscription vendredi 13 avril 2007 Statut Membre Dernière intervention 9 avril 2020 - 14 sept. 2007 à 22:15
 Spounky - 11 janv. 2009 à 19:05
Bonjour ou bonsoir

Voila avec quelque amis on a décider que créer un jeu style Ogame (c'est plus un defis que autre chose vu qu'on est dans une filiere informatique), le jeu un pratiquement finit mais 1 probleme se pose c'est avec le compte a rebours biensur j'en ai trouver des tonnes et des tonnes sur le net, mais pas celui que je voulais exactement. En faite, j'essaie de faire un compte a rebours en passant par php, puis stocker le compte a rebours dans mysql puis l'afficher dynamiquement avec javascript.
Sa fait quelque jour que j'essaie mais la je pète un cable(desoler d'etre grossier) au bout d'un moment j'ai reussi mais a l'envers par ex il est 9h30 pour arriver a 10h donc il reste 30mn00sec ben moi sa fait 30mn01sec 30mn02sec etc... puis c'est tous ce que j'ai reussi a faire et j'ai toujours pas reussi a stocker le temps dans la BDD,
alors si vous pouviez m'aider je vous en serai reconnaissant

Un grand merci d'avance
A voir également:

25 réponses

PhP Messages postés 1770 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606
24 sept. 2007 à 09:04
Bjr

AH bizarre ... Chez moi lorsque je ferme le navigateur et que je relance la page le compteur est bien à zéro (c'est normal !) par contre si je me reconnecte avec le même pseudo alors le compteur reprend sa course en tenant compte du temps écoulé.

Evidemment comme je n'ai mis que 100 secondes il faut fermer puis rouvrir la page puis se reconnecter en moins de 100" sinon la partie est déjà finie ! Tu peux bien sûr augmenter la durée

0
neo2099 Messages postés 164 Date d'inscription vendredi 13 avril 2007 Statut Membre Dernière intervention 9 avril 2020 12
14 nov. 2007 à 22:13
Bonsoir,

Sa fait un moment que je suis pas venu (pas trop eu le temps de faire quoi que ce soit mais le 1er script j'ai finalement reussi a le modifier (je c'est je suis lourd a la longue lol) mais j'ai reussi a quelque chose mais maintenant quand j'actualise mon temps est * ainsi que mon niveau
je remet les fichiers.

countdownusine.php

<?php
//session_start();
$now=getdate();

$restant=0;
$last = "stop";
$_duree = isset($_GET["duree"]) ? intval($_GET["duree"]) : 0;

if (isset($_GET["last"])) {$last = $_GET["last"];}



if (!isset($_GET["last"]))
{
if (isset($_SESSION['start_time'])) { $_SESSION['start_time']=0;}
}

if ($last == "stop")
{

if (isset($_SESSION['start_time'])) { $_SESSION['start_time']=0;}
}
else
{
if (isset($_SESSION['start_time']) && $_SESSION['start_time'])
{

$restant= $_duree-(intval($now['hours'])*3600+intval($now['minutes'])*60+intval($now['seconds']))+$_SESSION['start_time'];
}
else
{
$_SESSION['start_time']=intval($now['hours'])*3600+intval($now['minutes'])*60+intval($now['seconds']);
$restant=$_duree;
}
}
?>

<html>
<head>
<title>Game</title>
<style>

body
{
font-size:10pt;
font-family:Arial;
}

div img
{
padding:0px;
margin:0px;
display:inline;
border-width:0px;
}

</style>

<script type="text/javascript">
<!--

function toHMS(duree)
{
var temps = new Array();

var hh = Math.floor(duree/3600);
var mm = Math.floor((duree-hh*3600)/60);
var ss = duree-hh*3600-mm*60;


temps[0]=Math.floor(hh/10);
temps[1]=hh-temps[0]*10;
temps[2]=Math.floor(mm/10);
temps[3]=mm-temps[2]*10;
temps[4]=Math.floor(ss/10);
temps[5]=ss-temps[4]*10;

return temps;
}


var restant=<?php echo $restant; ?>;

function decompte()
{
var seq = toHMS(restant);
for (var i=0; i < 6; i++)
{
document.getElementById("seq_"+i).src="c"+seq[i]+".gif";
}

if (restant)
{
restant--;
window.setTimeout("decompte()",1000);
}
else
{

<?


?>
alert("Batiment finit");
document.getElementById("exec").submit();
}
}



function go()
{
restant=parseInt(document.getElementById("duree").value);
decompte();
}


// -->
</script>
<?php
mysql_connect('localhost','root','');
mysql_select_db('test');
$data = mysql_query('SELECT usine, tpsusine FROM batiment');
while($donnees = mysql_fetch_array($data))
{
$usine1 = $donnees['usine'];
$tpsusine1 = $donnees['tpsusine'];
$usine = $usine1 + 1;
$tpsusine = $tpsusine1 *2;

mysql_query("UPDATE batiment SET usine='$usine', tpsusine='$tpsusine'");
mysql_close();

} ?>
</head>
<body <?php if ($restant) echo "onload=\"decompte()\"";?>>


<div>
<center>

<!--<img id="seq_0" src="c0.gif"><img id="seq_1" src="c0.gif"><img src="colon.gif"><img id="seq_2" src="c0.gif"><img id="seq_3" src="c0.gif"><img src="colon.gif"><img id="seq_4" src="c0.gif"><img id="seq_5" src="c0.gif"> !-->
</center>
</div>

</br>
</br>
</br>
</br>

<?php
if ($last == "stop")
{


include("usine/form_gousine.php");


}

else
{

include("usine/form_stopusine.php");


}
?>
</html>

formgo_usine.php

<?
mysql_connect('localhost','root','');
mysql_select_db('test');
$data = mysql_query('SELECT * FROM batiment Order by usine desc LIMIT 1');
while($donnees = mysql_fetch_array($data))
{

?>
<center><font color="white">
Niveau <? echo $donnees['usine']; ?>
<?
$tpsusine = $donnees['tpsusine'];
$usine = $donnees['usine'];

?>
<form id="exec" name="exec" action="index2.php" method="get">
Durée <? echo $tpsusine * $usine; ?> <input id="duree" name="duree" type="hidden" value="<? echo $tpsusine * $usine ; ?>" size="8" length="8">sec.
<input type="hidden" name="last" id="last" value="go">
<input type="submit" value="Démarrer">
</form>
<?
}
mysql_close();




?>

form_stopusine.php



<img id="seq_0" src="c0.gif"><img id="seq_1" src="c0.gif"><img src="colon.gif"><img id="seq_2" src="c0.gif"><img id="seq_3" src="c0.gif"><img src="colon.gif"><img id="seq_4" src="c0.gif"><img id="seq_5" src="c0.gif">


<form id="exec" name="exec" action="index2.php" method="get">
<input type="hidden" name="last" id="last" value="stop">
<input type="submit" value="Stop">
</form>


Voila si quelqu'un peut m'aider un peu pour eviter que quand je l'arrete ou que je l'actualise les niveau et le temps augmente.

Merci d'avance
0
neo2099 Messages postés 164 Date d'inscription vendredi 13 avril 2007 Statut Membre Dernière intervention 9 avril 2020 12
15 nov. 2007 à 00:19
oups j'ai reecrit l'ancien, je voulais dire que le cpt marcher nickel et que je suis en train de le modifier sa fait un bail que j'était pas venu ici la prochaine fois que je posterai je lirai tout avant
0
Je suis aussi en train de développer un MMORPG textuel avec ce type de fonctions, il est vrai que ça a l'air sympa à faire...
Si tu as besoin d'infos laches des koms sur mon forum, j'essaierai de te filer un coup de main .....et la meilleure technique à adopter....je viens de lancer le forum donc personne mais dès qu'il sera référencé ça ira mieux....

voilà l'adresse:

https://debbog2007.kanak.fr/
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
je sais que ce post est ancien mais bon, voila la solution pour creer un compte à rebourds infini en php:
creer une base (ici ma base) avec un champ heuredeplace, et heurerefer mettre les timestamp correspondant(heurerefer etant plus petit). inserer ce script dans toutes les pages.


$chrono="ma base";
$duree=60*60; // durée du compte à rebours (mn X 60 sec)
$query = 'SELECT * FROM '.$chrono;
$result = mysql_query($query);
while ($val = mysql_fetch_array($result)) {
// Variables
$heure_serveur = time(); // heure actuelle
$heuredeplace=$val['heuredeplace']; // ton heure de deplacement (style time dans ta bdd)
$heure_refer=$val['heurerefer']; // ton heure de reference (style time dans ta bdd)
}
// Calcul nouveaux cours
if (time()>=($heuredeplace)){
// Calcul du prochain cours ou redirection pour action, dans ce cas mettre ce qui est entre parentheses dans ta page d'action.
$ope=abs(time()-$heure_refer);
$entier=floor($ope/$duree);
$heure_refer=$heure_refer+($entier*$duree);
$heuredeplace = $heure_refer + $duree;
// Mise à jour du compte à rebourds
$sql = 'UPDATE "'.$chrono.'" SET heureserveur= "'.$heure_serveur.'", heuredeplace = "'.$heuredeplace.'" where id="1" LIMIT 1';
$req = mysql_query($sql) or die ('Erreur SQL !'.$sql.''.mysql_error());
}
// Horloge
$timestampb = abs($heuredeplace - time());
$diff_heure = floor($timestampb / 3600); //Calcul des heures
$timestampb = $timestampb - ($diff_heure * 3600);
$diff_min = $timestampb / 60; //Calcul des minutes
$diff_min = floor(abs($diff_min));
$secb=($heuredeplace - time())/60;// Calcul des secondes
$diff_sec = floor(abs($secb));
$sec3=(($heuredeplace - time())-($diff_sec*60)); // pour afficher l'horloge echo $diff_heure."h".$diff_min."mn".$sec3."sec";
0