JeuWeb - Crée ton jeu par navigateur
Multiplier des heures - 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 : Multiplier des heures (/showthread.php?tid=4817)

Pages : 1 2


Multiplier des heures - Odawin - 13-05-2010

Salut !

Voilà j'en ai plus que marre, depuis hier je me casse la tête pour trouver comment multiplier des heures pour gérer les temps de constructions de mes bâtiments. J'ai tester plusieurs méthodes mais aucune ne me donne le résultat attendu Sad J'ai tester en multipliant le timestamp des valeurs que j'ai dans ma DB, ça fonctionne bien sauf qu'il ne me renvois pas les valeurs que j'aimerais... J'ai aussi essayant en isolant chaque partie de mon heure de base dans une variable distincte avec getdate, marche pas non plus Sad

Je commence sérieusement à désespéré, tant que j'ai pas régler ce problème je peux pas avancer plus loin :/ Je réclame donc votre aide ^^

Dans ma DB j'ai un champs "Temps" au format time. Je me base sur ce temps de base stocké pour calculer le temps nécessaires aux autres niveaux suivant le niveau de construction des bâtiments du joueur. Docn si j'ai un bâtiment de base qui prend 1heure et qu'il est niveaux 3, il me faudrait 3h pour construire le niveau suivant, si c'est 15 minutes de construction, sa prendrais 45 minutes.

voilà la dernière chose que j'ai testée (et qui ne va pas -_- xD)
Code :
$temps = strtotime($row['temps']);
// Récupération des heures, minutes et secondes
$tempsHeures = getdate($temps['hours']);
$tempsHeures = $tempsHeures * $niveau;

$tempsMinutes = getdate($temps['minutes']);
$tempsMinutes = $tempsMinutes * $niveau;

$tempsSecondes = getdate($temps['seconds']);
$tempsSecondes = $tempsSecondes * $niveau;

// Calcul de la durée suivant le niveau de construction

$duree = strtotime($tempsHeures."Hours".$tempsMinutes."Minutes".$tempsSecondes."Seconds", $temps);

On m'a dit que je pouvais le faire directement en SQL mais je vois pas trop comment, ni comment afficher le résultat en PHP par après oO


RE: Multiplier des heures - Anthor - 13-05-2010

Je recommence, j'avais mal lu.

As tu regardé la documentation de strtotime ?

Citation :int strtotime ( string $time [, int $now ] )

En général aussi, un petit print_r de ta variable $temps, t'aurait donné une solution sans passer par nous.


RE: Multiplier des heures - Odawin - 13-05-2010

euh ouai j'ai bien regarder la docu sur PHP.net (et plus d'une fois xD), je vois pas trop ce qui cloche oO

print_r j'ai jamais vu ça en cours oO (désolé mais si mon problème est un truc de boulet xD)


RE: Multiplier des heures - Anthor - 13-05-2010

La fonction srttotime te retourne FALSE en cas d'erreur et un temps unix en seconde (Un entier).
Pour le print_r, je te renvoi à la documentation: http://fr.php.net/manual/en/function.print-r.php

Tu vois mieux maintenant ?


RE: Multiplier des heures - Odawin - 13-05-2010

(13-05-2010, 06:13 PM)Anthor a écrit : La fonction srttotime te retourne FALSE en cas d'erreur et un temps unix en seconde (Un entier).
Pour le print_r, je te renvoi à la documentation: http://fr.php.net/manual/en/function.print-r.php

Tu vois mieux maintenant ?
Ah ok donc le strtotime ne sert strictement à rien dans mon cas, je pensais qu'avais l'entier que j'avais en retour je pouvais arriver à calculer le temps que j'avais besoin... Je vois pas trop comment je pourrais faire alors j'en ai marre ><

Merci pour le print_r je savais pas ça va être utile ^^ (Je comprend pas comment on l'a jamais vue en cours oO)


RE: Multiplier des heures - atra27 - 13-05-2010

Mais heu...

L'unix time est un entier...

Si tu as mettont une date de fin en bdd au format unix...
Bah tu fait: $tpsrestant=$timefin-time();
et tu as donc le nombre de seconde qu'il te reste avant l'heure de fin dans $tpsrestant

Un petit Js pour faire un compte a rebours et vila Wink


RE: Multiplier des heures - Odawin - 13-05-2010

Je veux pas comparer ou soustraire 2 temps, je veux juste multiplier celle que j'ai dans ma DB xD


RE: Multiplier des heures - Anthor - 13-05-2010

Excuse moi, mais dans ton code, tu utilises quand même un entier comme si il s'agissait d'un tableau... Tu vois mieux maintenant ?


RE: Multiplier des heures - atra27 - 13-05-2010

et bien méme principe...

l'unix time est un entier...
comment tu multiplie un entier en php...

Le truc c'est que si tu fait directement time()*2 sa va pas le faire (teste donc! Wink)

Donc d'abord tu calcule ton temps de construction en seconde (ici j'ai fait une différence pour un temps restant mais peu importe comment tu calcule ça), ensuite tu multiplie comme n'importe quelle autre valeur numérique puis tu affiche...

Je te conseille de faire la transformation des secondes que te sort en php en JS vers une version plus userfriendly (H:Min:Sec quoi)

Ne cherche pas a calculer 2 temps directement en h/min/sec en php sinon tu en sortira pas...


RE: Multiplier des heures - Odawin - 13-05-2010

(13-05-2010, 06:34 PM)Anthor a écrit : Excuse moi, mais dans ton code, tu utilises quand même un entier comme si il s'agissait d'un tableau... Tu vois mieux maintenant ?

Oui pour le getdate je supose, mais j'ai trouver cette méthode en cherchant sur google... ^^

(13-05-2010, 06:35 PM)atra27 a écrit : et bien méme principe...

l'unix time est un entier...
comment tu multiplie un entier en php...

Le truc c'est que si tu fait directement time()*2 sa va pas le faire (teste donc! Wink)

Donc d'abord tu calcule ton temps de construction en seconde (ici j'ai fait une différence pour un temps restant mais peu importe comment tu calcule ça), ensuite tu multiplie comme n'importe quelle autre valeur numérique puis tu affiche...

Je te conseille de faire la transformation des secondes que te sort en php en JS vers une version plus userfriendly (H:Min:Sec quoi)

Ne cherche pas a calculer 2 temps directement en h/min/sec en php sinon tu en sortira pas...
C'est ce que j'avais fait au début... Sauf qu'a la place de m'afficher 3heures (pour 3 x 1 heure), il m'affichait 22h et quelques -_-