Problème pour compter les secondes

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

Configuration: Windows XP
Firefox 3.5

7 réponses

  • Votes
  • Date
  • Date décroissante
  1. ben enfaite j'ai fait comme sa pcq j'ai rien compris au fonctionnement de time()
    1. 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. 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. 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
      2. 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.
        1. 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 ^^
          1. 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...
            1. $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 ;)