JeuWeb - Crée ton jeu par navigateur
[Résolu] Compte a rebours 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 : [Résolu] Compte a rebours PHP (/showthread.php?tid=2596)

Pages : 1 2 3


[Résolu] Compte a rebours PHP - fenix - 24-05-2008

bonjour a tous,

je cherche a faire un compte à rebours en php mais je tombe sur un os Sad
si je mes dans la bdd que le date de fin est par exemple dans deux jours il considere que c'est inferieur à time() etant donner que c'est la premiere fois que je fait un code de ce type je doit faire une grosse boulette mais je voie pas ou.

en faite ce code marche a l'envers Sad
j'ai lu divers poste a ce propos ici pour aml mon code mais il bloque toujours au meme endroit a savoir ici : if ( $time['fingarde'] >= time() )


vois le code en question :

Code PHP :
<?php
function garde(){
global
$userrow;
$request= doquery("SELECT * FROM {{table}} WHERE id='".$userrow["id"]."' ", "users");
While (
$time = @mysql_fetch_assoc($request)){



if (
$time['fingarde'] >= time() ){ // Si le temps rentré est supérieur au temps actuel alors on traite le compte à rebours.




$page.= "Votre temsp de garde finira le ".date( $time['fingarde'])."";



}else{
// Si le temps enregistré est plus petit que le temsp actuel alors on traite le script ciblé .



$page.="Vous avez finit vos tours de gardes ".$time['charname']."";



}
}
display($page,"vos tours de gardes");

}
?>



RE: Compte a rebours PHP - Psykose - 24-05-2008

date() comprend déjà deux paramètres -> voir le manuel
de plus il faudrait voir comment tu crées ton temps de fin de garde, il faudrait le créer comme ceci (on ne prends pas l'affichage détaillé, par ex : si il y a 2h26 minutes cela affichera 2 heures) :
Code PHP :
<?php
$finTpsdeGarde
= time() + (3600 * 24 * 2);

// Affichage (recupération dans la BDD) :
$TpsdeGarde = $finTpsdeGarde - time();

if(
$TpsdeGarde > 3600 * 25){ $phrase = "il reste + d'1 jour de tour de garde"; }
elseif(
$TpsdeGarde > 3600){$temps_restant = $TpsdeGarde / 3600; $temps_restant = round($temps_restant); $phrase = "il reste $temps_restant heure(s) de tour de garde.";}
elseif(
$TpsdeGarde > 60){$temps_restant = $TpsdeGarde / 60; $temps_restant = round($temps_restant); $phrase = "il reste $temps_restant minute(s) de tour de garde.";}

//etc ...
?>



RE: Compte a rebours PHP - fenix - 24-05-2008

pour l'update de fingarde le code ressemble a ceci en simplifier (normalement le joueur choisie entre plusieur dates)

$newtime = time() + 3600;
et apres l'update


RE: Compte a rebours PHP - Cartman34 - 24-05-2008

Après avoir étudié le problème à 2 nombreuse reprises...
je peux te dire que si d'abord, tu as un code bien fait c'est mieux...
Genre tu respectes les indentations, tu ne concatènes pas une chaine de " ".
on ne concatène qu'avec des ' ' car les autres sont plus souples et acceptent les variables(utilisation obligatoire des {} pour les tableaux...).
Et euh...ton script est "trop" aéré...mais ca reste du goût de chacun.

Par contre, tu utilises global pour avoir les données de ton user mais ca c'est une erreur, il est préférable de le passer en paramètre.
Ceci pour des raisons de sécurité(et parce qu'on m'a dit qu'il fallait faire comme ca dans certains cas...).

Autrement, pour ton problème, il n'y a pas de bug apparemment mais ton script est conceptuellement mal fait(chui franc je sais...).
Je t'explique ta vérif:
Si le temps de fin est supérieur ou égal au temps actuel...mais non !!!
C'est l'inverse !
Si le temps actuel n'a pas dépassé le temps de fin etc...
Ca ne change pas grand chose à ton problème, ca n'améliore pas ton script mais quand t'as 5 verifs qui s'emboitent, t'es bien content d'avoir pris de bonnes habitudes !!!


RE: Compte a rebours PHP - Psykose - 24-05-2008

il y a une erreur frappante c'est que c'est pas date qu'il faut utiliser car date te donne l'heure du jour de la fin du compte a rebours et non pas le nombre d'heures qu'il contient.


RE: Compte a rebours PHP - fenix - 24-05-2008

j'ai pas tout compris mais en gros je vois ce que tu veut dire
seulement j'ai tellement bidouiller se script (passer de 50 à 28 ligne) que sa fait un peut "bordel" mais avant de voir a le rendre plus beau si on peut dire ça ^^ je préférai qu'il marche

@psykose : j'ai tenter de faire comme tu montre mais la j'ai carrement pas de text a se demander si sa vien pas de time()


RE: Compte a rebours PHP - fenix - 24-05-2008

quand tu dit date tu parle de time () ?


RE: Compte a rebours PHP - Psykose - 24-05-2008

je l'ai vite fait mais la principe est simple :
tu divises ton temps par l'opérateur le plus adéquat :
- si il reste plus de 24 heures (un jour) par (3600 * 24) et tu dis qu'il reste plus d'un jour.
- si il reste plus d'une heure tu divises par 3600 et tu affiches le nombre d'heures qu'il reste.
etc.

l'utilisation de la fonction date est obsolète dans ton cas ...


RE: Compte a rebours PHP - fenix - 24-05-2008

oki donc sa je remplace mis je n'arrive toujours pas a lui faire lancer le compte si il rest du temps quelque soi la date enregistrer pour lui c'est finit


RE: Compte a rebours PHP - Sephi-Chan - 24-05-2008

Pourquoi ne pas utiliser les fonctions de dates et d'heure de MySQL ? Je suis certain que ça permettrait de résoudre le problème.
Peux-tu expliquer en détail ce qu'est censé faire ton script ? Afin que l'on puisse t'aider.


Sephi-Chan