JeuWeb - Crée ton jeu par navigateur
Compte à rebours en PHP - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Compte à rebours en PHP (/showthread.php?tid=2388)



Compte à rebours en PHP - Cartoristal - 09-02-2008

Comme beaucoup de débutants cherchent des scripts de comptes à rebours pour leur premier jeux php je pense qu'il apparait intéressant de leur fournir quelque chose avant qu'ils ne postent leur petites questions.


Je ne suis pas un codeur pro, je suis un codeur amateur qui vient de finir sa petit formation.

Par conséquent, mon script sera surement optimisable "à mort" !
Il sera long alors qu'on pouvait le faire court et il sera moche alors que l'on pourrait le rendre beau ...

Cependant, il faut bien un début à tout et si je veux pouvoir apprendre à faire des scripts et des tutos il faut bien que je me lance un jours ... acceptant les critiques qui tomberons sur mon dos.

Sur ce donc, Voici le script détaillé et expliqué :


Le fichier mysql_connect.php:

Code PHP :
<?php
mysql_connect
("localhost", "root", ""); // Connexion à MySQL
mysql_select_db("crusade"); // Sélection de la base à traiter.
?>

Voila le fichier à mettre dans le même répertoire que les fichiers qui suivent.
( il vous faudra, bien évidemment, l'éditer... )






Je vous soumet ici un script de compte à rebours simple.
Nous partirons donc dans l'idée qu'a été rentré dans votre base, sur une table quelconque ( ici temps_final ), un timestamp correspondant à une date "butoir".

Ainsi votre script rentre dans la base le
Code PHP :
<?php 
$timestamp_final
= time() + 3600;
mysql_query ("UPDATE temps_final SET timestamp_final = '$timestamp_final' WHERE id='$id' ");
Ici par exemple, on prends le temps actuel + 1 heure et on le rentre dans la base de donnée.
( ne pas utiliser cet exemple il est ici pour illustrer mes propos. )

Ci-dessous, le code du compte à rebours:

Code PHP :
<?php

include("mysql_connect.php"); // Page de connection à la Base de Donnée


$request= mysql_query("SELECT timestamp_final FROM temps_final WHERE id='$id' ");
while (
$time_fin = mysql_fetch_array($request) )

// On va chercher dans la base le timestamp_final et on le sort de la base.
// On fait une petite boucle afin d'avoir les résultats.
{

$temps_actuel = time(); // On crée une variable contenant le timestamp actuel .



if ( $temps_final['timestamp_final'] != NULL ){ // Si le timestamp_final n'est pas nul. Si un compte à rebours est lancé.

if ( $temps_final['timestamp_final'] <= $temps_actuel ){ // Si le temps enregistré est plus petit que le temsp actuel alors on traite le script ciblé .


/*
Mettre ici le script voulu ...
Augmentations des ressources ou je ne sais quoi d'autre ...
Et on n'oublie pas de uploader la base pour mettre le timestamp_final = NULL.

*/


}else{ // Si le temps rentré est supérieur au temps actuel alors on traite le compte à rebours.



$temps_restant_secondes = $temps_final['timestamp_final'] - $temps_actuel;
// Ici on calcule le nombres de secondes restant avant la fin du compte à rebours.

$temps_restant_secondes; // On traite ici ce nombres de secondes afin de pouvoir le transformer en une date.

//initialisation
$secondes = 0;
$minutes = 0;
$heure = 0;

//convertion

$minutes = $temps_restant_secondes/60;
$secondes = bcmod($temps_restant_secondes,"60");
$minutes = floor($minutes);

while(
$secondes >= "60") //ajoute une minute toutes les 60 secondes
{
$secondes = $secondes-60;
$minutes++;
}
while(
$minutes >= "60")//ajoute une heure toutes les 60 minutes
{
$minutes = $minutes-60;
$heure++;
}

if(
$minutes < "10") // ajoute le deuxieme 0 pour la présentation
{
$minutes = "0".$minutes;
}

if(
$secondes < "10") // ajoute le deuxieme 0 pour la présentation
{
$secondes = "0".$secondes;
}

if(
$heure < "10") // ajoute le deuxieme 0 pour la présentation
{
$heure = "0".$heure;
}

$resultat = $heure.":".$minutes.":".$secondes; //contient le résultat final


echo' L\'action sera effectuée dans ';
echo
$resultat; // afficher le résultat


}
}else { echo
'Pas de compte à rebours pour le moment '; }
}

?>

Le script est donc assez simple d'utilisation...
N'oubliez pas que c'est un script destiné aux personnes ne sachant comment faire un compte à rebours...