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


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

bon alors voila le joueur prend un certain temps de garde (gerer par une autre fonction)
celle ci envoie la date de fin de cette garde a la bdd
puis ce compte a rebours est sencer donner le temps restant avant la fin de cette garde en comparant la différence entre l'heure actuelle et celle de fin.
voila


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

Désolé Sephi mais utiliser les fonction mysql est tres lourd(plus qu'avec PHP je veux dire), surtout que c'est généralement inutile.


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

C'est à moi de m'excuser pour toi, IGstaff… L'utilisation de fonctions de dates de MySQL pour manipuler des champs de type TIMESTAMP, TIME ou DATE est bien plus robustes que de stocker des timestamp sous forme d'entier puis les manipuler avec les fonctions de PHP.


Pour résoudre le problème, il suffit d'utiliser les fonctions de dates et d'heures de MySQL comme cela :

Par exemple, au moment où tu mets à jour (ou insert) ta table la date de fin du temps de garde, tu fais :
Code :
UPDATE table
SET date_fin = DATE_ADD(NOW(), INTERVAL n SECOND);
WHERE condition
Tu remplaces ici n par la valeur que tu veux, et SECOND par l'unité que tu veux parmi SECOND, [font=CourieMINUTE[/font], [font=CourieHOUR[/font], [font=CourieDAY[/font], [font=CourieMONTH[/font], [font=CourieYEAR[/font]. Tu mets ensuite la condition que tu veux.
Le champ vaudra alors la date actuelle à laquelle est ajoutée la durée indiquée. C'est donc déjà très pratique à l'insertion.

Ensuite, pour savoir si la date est passée, il suffit de regarder le signe de la soustraction de la date actuelle moins la date de fin de la garde.
Code :
SELECT *
FROM table
WHERE NOW() - date_fin < 0
Cela permet de sélectionner les entrées de la table dont la garde est terminée.

Mais tu peux également rechercher pour une ressource particulière. Si par exemple tu veux vérifier que ton joueur a fini son tour de garde, tu peux faire
Code :
SELECT *,
IF((NOW() - date_fin) <= 0, 1, 0) AS "garde_finie"
FROM table;
Le champ tour_de_garde_fini vaudra donc 1 si la garde est finie, 0 si elle est en cours.


Sephi-Chan


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

sa a l'air tres pratique mais sa a marcher qu'une fois Sad
apres sa affiche

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '= 'DATE_ADD(NOW(), INTERVAL 3600 SECOND)' WHERE id='1'' at line 1


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

Colle ta requête entière, qu'on puisse voir. De plus, l'expression 3600 SECOND peut être remplacée par 1 HOUR.


Sephi-Chan


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

j'ai essyer diverse façons la derniere etant

$sec = "DATE_ADD(NOW(), INTERVAL 3600 SECOND)";
$updatequery = doquery("UPDATE {{table}}SET fingarde='$sec' WHERE id='".$userrow["id"]."' ", "users");
mais aussi

$updatequery = doquery("UPDATE {{table}}SET fingarde='DATE_ADD(NOW(), INTERVAL 3600 SECOND);' WHERE id='".$userrow["id"]."' ", "users");


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

Tu as mis des quotes autour de ton expression, ça n'est donc pas interprété par MySQL puisqu'il considère ça comme une chaîne de caractère. Essaye ça :
Code PHP :
<?php 
$query
= sprintf(
"UPDATE {{table}}
SET fingarde = DATE_ADD(NOW(), INTERVAL 3600 SECOND)
WHERE id = %d;"
,
$userrow["id"]
);
$sql = doquery($query, 'users');


Sephi-Chan


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

ce coups ci sa marche et sa a bien up Merci beaucoup
il me reste juste a revoir le compteur pour qu'il fonctionne avec


RE: Compte a rebours PHP - Studio Gamboo - 24-05-2008

Encore une victoire de canard.


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

Studio Gamboo a écrit :Encore une victoire de canard.

Encore du flood de Gamboo Big Grin