|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Inscription : novembre 2005 Messages : 50 ![]() |
Bonjour
Voila je m'explique je stoque une date et heure dans une base de donnée mysql (type de donnée timestamp) et dans une page je voudrais calculer le temps ecouler entre l'heure stoqué dans la base de donnée et l'heure actuel. Mais le probleme c'est que quand je recupere l'heure de la base de donnée j'ai une chaine de caractere ... comment je peux faire svp ? |
|
|
00
|
|
|
#2 | ||
|
Membre confirmé
![]() |
Essaie quelque chose du genre
Code :
http://dev.mysql.com/doc/refman/5.0/...functions.html
__________________
|
||
|
|
00
|
|
|
#3 | ||
|
Invité régulier
![]() Inscription : novembre 2005 Messages : 50 ![]() |
Je n'arrive pas a utiliser sa dans mon script php :s
voila mon code mais j'immagine que pour utliser ce genre de fonction il ne faut pas faire comme sa ... Code :
|
||
|
|
00
|
|
|
#4 | ||
|
Membre chevronné
![]() Inscription : juin 2005 Messages : 572 ![]() |
mysql_query renvoit un résultat de requête, en aucun cas un enregistrement de la base.
Il te manque donc une étape : Code :
__________________
Tout pas mieux que tout le monde : évitez les questions techniques en mp sinon à quoi bon poster sur un forum ? Petite citation : "Le sage cherche la vérité, l'imbécile l'a déjà trouvée" |
||
|
|
00
|
|
|
#5 | ||
|
Invité régulier
![]() Inscription : novembre 2005 Messages : 50 ![]() |
la requete sql marche pas ....
ma table s'appelle "personnage" dans personnage il y a une ligne "maj" qui est de type timestamp Mon but est de voir combien de temps s'est ecouler depuis l'heure stocker dans "maj" Code :
|
||
|
|
00
|
|
|
#6 | |||
|
En attente de confirmation mail
![]() Inscription : juin 2002 Messages : 6 164 ![]() |
Code :
Citation:
|
|||
|
|
00
|
|
|
#7 |
|
Membre éclairé
![]() Inscription : octobre 2005 Messages : 427 ![]() |
Oui c'est ce qu'on récupère en php quand on fait une requête Mysql sur les champs date ou heure. (Bien chiant d'ailleurs)
__________________
Linio |
|
|
00
|
|
|
#8 |
|
Membre éclairé
![]() Inscription : janvier 2007 Messages : 349 ![]() |
julp, j'utilise le code que tu proposes:
Code :
$result=mysql_query("SELECT CURRENT_TIMESTAMP - date_connexion as duree_connexion ... tant que CURRENT_TIMESTAMP et date_connexion sont dans la même minute, cela fonctionne. Quand CURRENT_TIMESTAMP change de minute, l'écart fait un saut inexpliqué (d'une quarantaine de secondes). J'utilise EasyPhp 1.8 pour mes tests. Est-ce un bug lié à cette version ? Sinon, comment calculer l'écart entre un champ mysql TIMESTAMP récupéré dans une variable $date_connexion et une date PHP récupérée par date() par exemple ? |
|
|
00
|
|
|
#9 | |
|
En attente de confirmation mail
![]() Inscription : juin 2002 Messages : 6 164 ![]() |
Citation:
|
|
|
|
00
|
|
|
#10 |
|
Membre éclairé
![]() Inscription : janvier 2007 Messages : 349 ![]() |
Oui, effectivement, c'est beaucoup et je ne comprends pas.
date_connexion est le champ de ma base MySQL initialisé lors de la connexion. Je fais le select CURRENT_TIMESTAMP-date_connexion à intervalles plus ou moins réguliers (j'utilise le bouton rafraîchir du navigateur. Mon but est de mettre en place une durée maximum de session). L'écart augmente de quelques secondes à chaque fois puis augmente brusquement d'une quarantaine de secondes lorsque l'horloge du PC passe à la minute suivante (j'affiche l'horloge en parallèle). Pour l'instant, j'hésite à migrer sous EasyPhp 2 (c'est une version bêta et je sens que je risque de passer du temps à faire la migration ...). C'est la raison pour laquelle je souhaite, comme mello dans son message initial, utiliser directement le champ MySQL avec les fonctions Php de traitement de date. Y a t'il un moyen simple pour le faire ? |
|
|
00
|
|
|
#11 | ||
|
Membre éclairé
![]() Jota Alves Inscription : janvier 2006 Messages : 263 ![]() |
slt...
Pour savoir l´ecart entre 2 dates Code :
et quand a date_connexion.. c´est quoi au juste? la date de quand tu fais la connexion? mais quand est ce que tu l´enregistre? parce que si tu l´enregistre au debut, biensur que a chaque fois, l´ecart augmente. |
||
|
|
00
|
|
|
#12 |
|
Membre éclairé
![]() Inscription : janvier 2007 Messages : 349 ![]() |
Merci, je vais essayer.
Bien-sûr qu'il est normal que l'écart augmente. Mais là, il augmente linéairement avec le temps (normal) sauf quand il y a un changement de minute où là il y a une discontinuité. Au lieu d'augmenter de quelques secondes (intervalle entre deux rafraichissements), il augmente brusquement de 40 secondes. Entre-temps, j'ai fait ceci: Code :
duree_connexion = time()-strtotime($result['date_connexion']); |
|
|
00
|
|
|
#13 |
|
Membre actif
![]() Inscription : octobre 2007 Messages : 157 ![]() |
Julp, tu as confondu UNIX_TIMESTAMP et CURRENT_TIMESTAMP
UNIX_TIMESTAMP renvoie un timestamp facon Unix c'est a dire un nombre de seconde écoulé depuis une certaine date (1-1-1970 je crois). CURRENT_TIMESTAMP renvoie une valeur construite ainsi YYYYMMDDHHMMSS Cela explique les sauts brutaux de 40 secondes toutes les minutes. Je te laisse deviner la cata que ca aurait donné le 31-12 d'une année quelconque à 23h59:59. ref : http://dev.mysql.com/doc/refman/5.0/...functions.html |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com