Calcul de secondes entre des dates

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 secondes entre des dates

par DocType » 09 oct. 2005, 16:04

:shock: : comment ça ça plante vers minuit ??
J'adore tes yeux Cyrano, ils sortent de leur orbite :lol:

par Cyrano » 09 oct. 2005, 15:57

:shock: : comment ça ça plante vers minuit ??

par X_a_v_i_e_r » 09 oct. 2005, 15:54

J'avais trouvé une solution provisoire, mais qui plante vers 00h00 ^^

Euh, je vais tester ta solution, mais je dois attendre ce soir,

Merci ;)

par DocType » 09 oct. 2005, 03:40

Là tu le fais exprès :lol:
Y'a la fonction date() qui te calcule le timestamp actuel...
date("U");
D'une part...

Ensuite, avec un peu de logique...
Lors de la connexion au site du membre, tu met a jour le timestamp actuel dans un champ int en bdd. tu recupere au préalable le timestamp qui etait situé en bdd. Ensuite, tu fais le calcul entre les deux variables (variable de derniere connexion en bdd et date actuelle) et tu affiches le résultat formaté correctement.
Je croyais que tu étais pressé la dernière fois ? :roll:

Bref, ca fait un truc du genre:

Code : Tout sélectionner

#script inscription du membre mise a jour du champ en bdd avec la date d'inscription #script connexion du membre recup de la variable ($_SESSION) (disons N°1) mise a jour de la variable mise en session de la date de connexion ($_SESSION) (disons N°2) #script affichage en zone membre date de connexion (2) - recup variable (1) = nombre de secondes entre derniere connexion et actuelle on met en forme le resultat
Pour info les variables de session resteront affichées tout le temps que ton navigateur sera ouvert, d'où son utilité dans le script

Je ne vois pas plus simple, et si tu ne comprends pas mon raisonnement, c'est les bases de la logique mathematique qu'il faudra revoir :wink:

par X_a_v_i_e_r » 09 oct. 2005, 02:55

Non résolu ^^

J'ai testé tout un tas de chose pendant cette semaine, et je suis aller jusqu'à faire quelque chose qui ferait hurler les puristes du php ^^

Voici le monstre :
$date1=(date("Y")*10000000000);
$date2=(date("m")*100000000);
$date3=(date("d")*1000000);
$date4=(date("H")*10000);
$date5=(date("i")*100);
$date6=(date("s")*1);
$date_a = (($date1+$date2+$date3+$date4+$date5+$date6)*1.666666666666666666666666666666666666666666);
C'est une sorte de timestamp fait main lol, vous pouvez arreter de hurler ^^, mais je me suis rendu compte que, yavait un bug, d'un jour à l'autre, d'un mois à l'autre, d'une année à l'autre.

Je vois pas comment faire mon timestamp correctement, sachant que j'ai un fichier importé dans chaque page de mon php, qui compare l'ancienne date à l'actuelle, et que à partir de la différence, me fait un calcul...

Bref, je vois pas comment utiliser variant_date_to_timestamp et quoi faire avant et après pour que ça marche correctement...

Merci !

par DocType » 02 oct. 2005, 19:36

Résolu ?
Non résolu ?
:roll:

par DocType » 01 oct. 2005, 01:21

Oula, bon, merci de votre aide, je relirais ça demain matin, tant pis, jy comprends rien...

Merci quand même
simple !

Code : Tout sélectionner

SI la variable de session "derniere_con" n'existe pas On selectionne le timestamps UNIX stockée en BDD (type int) On incrémente la variable de session "derniere_con" de cette dernière On met à jour la date de connexion en BDD (timestamp actuel) Fin de SI on affiche la date de dernière connexion
Ce code est adaptable (voir un autre script sur le compte à rebours) afin de par exemple avoir le nombre d'heure minutes secondes depuis la dernière connexion ! ET tout cela avec un seul champ en base de donnée !

Nota: je pensais que c'était très très pressé? :roll: :lol:

par X_a_v_i_e_r » 01 oct. 2005, 01:16

Oula, bon, merci de votre aide, je relirais ça demain matin, tant pis, jy comprends rien...

Merci quand même

par DocType » 01 oct. 2005, 01:13

<?
if (!isset($_SESSION["derniere_con"]))	{
	$mysql_selection_date = mysql_query("SELECT ton_timestamp FROM ta_table WHERE utilisateur=".$ton_user_actuel);
	$reponse_temps = mysql_fetch_array($mysql_selection_date);
	$_SESSION["derniere_con"] = $reponse_temps["ton_timestamp"];
	mysql_query("UPDATE ta_table SET ton_timestamp='".date("U")."' WHERE utilisateur=".$ton_user_actuel);
}
echo "Vous vous êtes connecté pour la dernière fois le".date("d-m-Y",$_SESSION["derniere_con"])." à ".date("G:i",$_SESSION["derniere_con"]);
?>
Je n'ai pas testé mais l'idée est là. Faut faire tourner ça lorsque le membre se connecte et qu'il est sous sa session.

par Cyrano » 01 oct. 2005, 01:10

L'idée a du bon : quand l'internaute se connecte, tu crée un timestamp instantané. Tu fais ensuite une recherche dans la base de sa dernière connexion et tu fais le calcul avec ça de la différence entre l'ancienne connexion et l'actuelle. ensuite, tu peux enregistrer cette différence quelque part pour des besoins statistiques et tu mets à jour le timestamp enregistré dans la base. Résultat des courses, tu n'as besoin que d'un seul champ dans la base pour le timestamp que tu transforme en date pour le mettre dans la base au format DATE parce que le TIMESTAMP UNIX et le TIMESTAMP SQL ne sont pas les mêmes et le second est une simple concaténation des éléments composant une date au lieu d'un nombre de secondes..

par X_a_v_i_e_r » 01 oct. 2005, 01:05

Je sais pas, je dois être dans le paté à cette heure ci, mais j'ai absolument rien compris de ce qu'il me faut faire :s

par DocType » 01 oct. 2005, 01:05

Euh, dans ton bout de code, je ne vois pas où on parle de la session du membre :s
Nulm part, je vais pas te servir non plus le menu un script sur commande. C'est pas le Mac do :wink:
Je te montre la possibilité d'afficher la dernière connexion du membre en texte juste en ayant préalablement recuperé son timestamp de derniere connexion en bdd. A toi de faire le reste ensuite :wink:

par DocType » 01 oct. 2005, 01:03

Oui, mais avec ta fonction, ça veut pas dire qu'il faudrait que je connaisse la date de reconnexion sur et certaine du membre ? ou alors je comprends pas comment elle marche :oops:
ba en fait soit tu insères la date de dernière connexion du membre en timestamp UNIX en BDD: La c'ests imple, tu compares l'heure actuelle à la dernière connexion, tu prends le soin de tout mettre en variable de session comme ca la derniere connexion au compte est mise a jour des la reconnexion du membre et tu conserve ta variable.
soit tu insères en format datetime, la c la meme chose (une seule insertion, comparaison par rapport a lheure actuelle et variables session). Seulement, tu ne traite plus un nombre de seconde smais un timestamp.

Je te conseille la premiere solution qui te permet de manipuler tous les formats simplement :wink:

par X_a_v_i_e_r » 01 oct. 2005, 01:01

Euh, dans ton bout de code, je ne vois pas où on parle de la session du membre :s

par DocType » 01 oct. 2005, 00:59

Je vais donc dire ça plus clairement :

je souhaite calculer le nombre de secondes entre deux connexions d'un membre... je peux faire directement timestamp ?

Merci
oui, c le mieux je pense :wink:
De plus, à partir du timestamp tu peux retrouver une date
$dc= "Dernière connexion le".date("d-m-Y \à G:i",$secondes_derniere_connexion);