Problème pour compter les secondes

Fermé
b-boybaki Messages postés 160 Date d'inscription mardi 5 août 2008 Statut Membre Dernière intervention 10 juin 2010 - 16 juil. 2009 à 06:29
xXPika74Xx Messages postés 115 Date d'inscription jeudi 28 mai 2009 Statut Membre Dernière intervention 25 mai 2011 - 17 juil. 2009 à 09:15
Bonjour,

alors voila mon problème, grâce a mon programme j'arrive à compter le nombre de seconde qui se sont écouler entre ma date d'inscription et la date d'aujourd'hui.

mon problème c'est que ma fonction ne va pas tenir compte de l'heure d'inscription et l'heure aujourd'hui et moi je voudrai que mon programme compte également les seconde et tenant compte des heure d'aujourd'hui et de l'heure de mon inscription.

je vous donne mon programme, j sais que y'a quelque tite choses a modifier mai sje ne sais pas lesqu'elle si vous pouviez m'aidez sa serai gentil

<html>
<head>
</head>
<body>
<?php

$name = $_POST['pseudo'];
$mot = $_POST['mdp'];
$mot2 = $_POST['mdp2'];
$dateins = date("j m Y");

echo $name."<br/>";
echo $mot."<br/>";
echo $mot2."<br/>";

//connxeion au serveur

$db = mysql_connect("localhost","root","") or die ("connexion au serveur impossible".mysql_error());

//ouverture de la base de donnée

mysql_select_db("lol",$db) or die ("erreur de connexion à la base");

//requete dinsertion

$req = "insert into joueur values ('$name','$mot','$mot2','$dateins')";

//execution

$sql = mysql_query($req);

//requete recup

$cat = "select * from joueur where nom='lafont';";

$sqlcat = mysql_query($cat);

while($ligne = mysql_fetch_array($sqlcat))
{
$dateins2 = $ligne['ins'];
$jour1 = substr($dateins2, 0, 2); // on récupère le jour

$mois1 = substr($dateins2, 3, 2); // puis le mois

$annee1 = substr($dateins2, 6, 4); // et l'annee ...

$timestamp2 = mktime(0, 0, 0, $mois1, $jour1, $annee1);


$date = date("j m Y");
$jour = substr($date, 0, 2); // on récupère le jour

$mois = substr($date, 3, 2); // puis le mois

$annee = substr($date, 6, 4); // et l'annee ...

$timestamp = mktime(0, 0, 0, $mois, $jour, $annee);

$ecart_secondes = $timestamp - $timestamp2;

echo $ecart_secondes."<br/>";

}

?>
</body>
</html>

voila par exemple mon code ne permet pas de calculer le nombre de seconde entre la date et l'heure d'aujourd'hui ex 16/06/2009 06h31m30s et une date d'inscription qui serai par exemple le 20/01/2004 à 14h25m20s

et moi je voudrais qu'il puisse faire sa

merci d'avance de votre aide


7 réponses

b-boybaki Messages postés 160 Date d'inscription mardi 5 août 2008 Statut Membre Dernière intervention 10 juin 2010 3
16 juil. 2009 à 14:53
ben enfaite j'ai fait comme sa pcq j'ai rien compris au fonctionnement de time()
1
Dr Zoidberg Messages postés 529 Date d'inscription jeudi 28 juin 2007 Statut Membre Dernière intervention 12 juin 2015 100
16 juil. 2009 à 15:17
en fait, time() retourne un timstamp unix, cad le nombre de secondes écoulées depuis le 1/1/1970.
Donc pour avoir le temps écoulé en secondes entre deux dates/heure il suffit de soustraire leurs timestamp.

Si tu as stocké tes dates dans ta base en format mysql datetime par exemple, mysql a une fonction sympa UNIX_TIMESTAMP(date) qui va retourne le timestamp unix d'une date. Et UNIX_TIMESTAMP() sans paramètre va retourner le TIMESTAMP actuel.
Tu dois donc pouvoir retrouver le temps écoulé depuis l'inscription d'un de tes membres avec une requete du type
SELECT UNIX_TIMESTAMP()-UNIX_TIMESTAMP(date_inscription) as temps_ecoule FROM ...

ou date_inscription est le champs contenant la date et l'heure d'inscription (au format mysql) à adapter à ton cas et temps_ecoule contiendra donc le nb de secondes depuis cette date.
1
xXPika74Xx Messages postés 115 Date d'inscription jeudi 28 mai 2009 Statut Membre Dernière intervention 25 mai 2011 13
16 juil. 2009 à 15:22
Tien utilise cette formule

$timestamp = mktime(date("H"), date("i"), date("s"), date("m"), date("d"), date("Y")) - mktime(0, 0, 0, 7, 16, 2009);

le premier mktime récupère le timestamp de la date actuelle

le second récupère celmui de ta date d'inscription que tu devrat utiliser comme ceci:

mktime($heure,$minute, $seconde, $mois, $jour, $anne);

avec $heure, $minute, etc... la date d'inscription

ce qui te donne :

$timestamp = mktime(date("H"), date("i"), date("s"), date("m"), date("d"), date("Y")) - mktime($heure,$minute, $seconde, $mois, $jour, $annee);

et tu divise en suite $timestamp par 3600 pour avoir le nombre d'heure depuis l'inscription ou 86400 pour avoir le nombre de jour et ainsi de suite ce qui te donne

$timestamp = $timestamp / 3600;
ou
$timestamp = $timestamp / 86400;

et au final

tu affiche si tu veut vérifer

(si on veut vérifier en jour)

echo $pseudo_de_l'inscrit . " est inscrit depuis " . $timestamp . " jours ";

Dit moi si sa marche chez toi j'ait tester sa marche nikel ;)
1
Dr Zoidberg Messages postés 529 Date d'inscription jeudi 28 juin 2007 Statut Membre Dernière intervention 12 juin 2015 100
16 juil. 2009 à 15:46
Pourquoi pas, mais ne complique pas les choses non plus :-)

mktime(date("H"), date("i"), date("s"), date("m"), date("d"), date("Y")) fait la même chose que
time()

Ta proposition se résume donc à
$timestamp = time() - mktime($heure,$minute, $seconde, $mois, $jour, $annee);

C'est un peu plus court
0
Dr Zoidberg Messages postés 529 Date d'inscription jeudi 28 juin 2007 Statut Membre Dernière intervention 12 juin 2015 100
16 juil. 2009 à 09:07
Salut,

Je trouve que tu t'embetes beaucoup a creer un timestamp qui existe deja, le timestamp actuel est retourné par time() en php.
Si tu mémorise dans ta base le timestamp a la date de creation tu n'auras qu'a le soustraire du timestamp actuel pour trouver le nombre de secondes écoulées.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
xXPika74Xx Messages postés 115 Date d'inscription jeudi 28 mai 2009 Statut Membre Dernière intervention 25 mai 2011 13
16 juil. 2009 à 15:48
Exact Xd

Mais c'était une formule que j'avait utiliser autrement et que j'ait modifier pour notre ami donc pas penser a celle la désolé :(

Merci de m'avoir corriger Dr zoiberg

Enfin l'important c'est que sa marche ^^
0
b-boybaki Messages postés 160 Date d'inscription mardi 5 août 2008 Statut Membre Dernière intervention 10 juin 2010 3
17 juil. 2009 à 02:20
pour PIKA jai pa tous compri la ligne la :

$timestamp = mktime(date("H"), date("i"), date("s"), date("m"), date("d"), date("Y")) - mktime($heure,$minute, $seconde, $mois, $jour, $annee);

quelles sont les valeurs de $heure, $minute,... ???? comment je les obtient ???

pour le début ok sa va recupérer l'heure, la minute etc etc de la date d'aujourdui pour sa c'est ok

mais pour l'autre je comprend pas tout pcq on a pas donnée de valeur a $heure, $minute etc etc

désoler mais je débute...
0
xXPika74Xx Messages postés 115 Date d'inscription jeudi 28 mai 2009 Statut Membre Dernière intervention 25 mai 2011 13
17 juil. 2009 à 09:15
$heure, $minute,$mois, etc... sont les parties de ta date d'inscription

Prenoms un exemple celui que tu nous a donner

ta date d'inscription est le: 20/01/2004 à 14h25m20s

Comment stock tu la date c'est sa le plus important

si ta date et stocker sour la forme 20/01/2004 14h25m20s

on a donc

$jour = substr($date, 0, 2);
$mois = substr($date, 3, 2);
$annee = substr($date, 6, 4);
$heure = substr($date, 11, 2);
$minute = substr($date, 14, 2);
$seconde = substr($date, 17, 2);

en gros tu récupère chaque partie De ta date de l'année à la seconde et tu t'en sert pour ton timestamp ;)
0