Calcul de temps avec mktime et Unix_timestamp

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Calcul de temps avec mktime et Unix_timestamp

par khalad » 27 mai 2009, 10:16

Désolé de mes explications obscurs,

En fait, je cherche a développer un système de gestion de ressources, un peu ce que l'on retrouve dans les jeux par navigateurs. J'avais trouvé un tutoriel qui proposait une méthode exclusivement MySql et PHP avec des calculs directement dans le Sql avec UNIX_TIMESTAMP.

Mais bon, j'ai pas vraiment réussi a le faire marcher, j'ai donc essayé de comprendre par moi meme comment l'on faisait, et j'ai essayé plusieurs choses, sauf que je butais sur le calcul du temps entre la dernière connexion et le moment ou il se reconnectait (ou rafraîchissait la page).

La méthode en gros c'est calculer temps_actuel - last_time = somme, que l'on multiplie a la quantité de ressources divisé en 3600 secondes. En gros, je pense que la théorie c'est ca, mais je bute un peu sur la pratique

EDIT :

J'ai réussi, merci pour les explications de blof ! Ca m'a débloqué, merci !

par blof » 27 mai 2009, 07:47

Bonjour,

côté MySQL :
si tu veux mettre un "timestamp UNIX" dans un champ, il faut que ce champ soit de type "INT" ( et pas "TIMESTAMP" )
et lors de l'update, il faut utiliser UNIX_TIMESTAMP() ( et pas NOW() ) pour la date actuelle.
http://dev.mysql.com/doc/refman/5.0/fr/

côté PHP :
c'est time() qu'il faut utiliser.
http://www.php.net/manual/fr/

ça c'est fait ...

j'aimerais calculer une différence de temps entre une date enregistré en format timestamp dans une table INT avec la date actuel...
en reprenant dans ton exemple les noms des variables :
$essai = time() - $time['usine_last'];
... et c'est en secondes

par Sékiltoyai » 27 mai 2009, 01:08

Non, mais déjà si tu expliquais ton problème exact, c'est à dire quelles sont les données, et qu'est ce que tu veux en faire, ce serait plus simple quand même… Parce que là c'est incompréhensible. :-/

par khalad » 26 mai 2009, 15:27

d'accord...

ca fait un moment que je parcours les explications sur les dates, mais je bug encore un peu ... c'est pour ca que je viens demander conseils.

J'aimerais savoir la meilleur manière de calculer ces dates. J'ai lu que le mieux était de calculer sur les timestamp d'unix dans les requêtes MySql mais je ne sais pas comment afficher la date actuelle au format timestamp...

Faut t'il que j'utilise la fonction mktime() ? ou date() ? ou time() ?

... j'avoue être un peu perdu...

EDIT :

et si, a l'insertion de la date actuel dans la base de donnée, je met la date avec mktime() que je soustrait a la date actuel avec mktime() également, ca devrait marcher non ?

par Sékiltoyai » 26 mai 2009, 15:19

Le timestamp utilisé par PHP est le timestamp UNIX (il est désigné par UNIX_TIMESTAMP dans mysql). C'est le nombre de secondes depuis le 1er janvier 1970.

Le timestamp mysql est sous le format YYYYMMJJHHMMSS : Année, Mois, Jour, Heures, Minutes, Secondes.

Tu comprendras que les deux ne sont pas compatibles. Je t'invite à poursuivre ta recherche dans les fonctions de date/heure de PHP pour le générer.

Calcul de temps avec mktime et Unix_timestamp

par khalad » 26 mai 2009, 15:05

Bonjour....

j'aimerais calculer une différence de temps entre une date enregistré en format timestamp dans une table INT avec la date actuel... ce résultat me permet de savoir en combien de temps j'ai développé un nombre X de ressources.

voila, alors bon, je tâtonne, je suis la pour apprendre, ce sont des petits exercices que je me fixe pour apprendre.

je tire donc avec un SELECT le résultat de ma dernière connexion que je soustrait au temps actuel :

$essai=(mktime(date(timestamp)) - $time['usine_last']);

voila, c'est la seul partie en gros qui me bloque... je n'arrive pas a calculer ces dates.

Pouvez vous m'aider ?

PS : 20090526144830 voici la date en format timestamp dans la base mise a jour par NOW() dans l'UPDATE