IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

calculer le temps restant


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2004
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 77
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 91
    Par défaut calculer le temps restant
    Bonjour à tous,

    Voici mon problème :

    C'est pour un site concernant des horaires de vols d'avions.
    Je voudrais afficher des informations différente en fonction de la position de l'avion par rapport à l'heure de connexion et à son heure d'arrivée.

    Je possède donc l'heure de la connexion et l'heure d'arrivée de cet avion.
    J'applique donc la méthode suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
                 list ($h5, $m5)=explode(":",$heur);//heure de la connexion
    	list($h6,$m6)=explode(":",$heura);//heure d'arrivée
    	list($a5,$mo5,$j5)=explode("-",$journee);//jour de la connexion
    	list($a6,$mo6,$j6)=explode("-",$jarr);//jour de l'arrivée
    	$timestamp5= mktime($h5, $m5, 0, $mo5, $a5, $j5);
    	$timestamp6= mktime($h6, $m6, 0, $mo6, $a6, $j6);
    	$timestamp = abs($timestamp5 - $timestamp6);
    	$dif_heura = floor($timestamp/3600);
    	$timestamp = $timestamp - ($dif_heura * 3600);
    	$dif_mina = $timestamp / 60;
    Tout se passe à merveille tant que le jour d'arrivée est le même que l'heure de connexion, mais si cette heure d'arrivée est le lendemain rien de correct ne s'affiche !

    Pouvez-vous m'indiquer ce qui coince dans mon code et comment y remédier

    Je vous remercie

  2. #2
    Membre émérite Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Par défaut
    Vu le nom des variables, on dirait que tu envoies dans mktime :
    heure, minute, (0 secondes), mois, année, jour.

    Or, mktime attend :
    heure, minute, (0 secondes), mois, jour, année.

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2004
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 77
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 91
    Par défaut
    Citation Envoyé par Herode Voir le message
    Vu le nom des variables, on dirait que tu envoies dans mktime :
    heure, minute, (0 secondes), mois, année, jour.

    Or, mktime attend :
    heure, minute, (0 secondes), mois, jour, année.
    Tu as parfaitement raison, je m'en suis aperçu et ai modifié l'ordre, mais le problème reste le même !

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2004
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 77
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 91
    Par défaut
    Bonjour,
    je ne vois pas trop ce qui peut troubler les choses !

    De plus lors de l'affichage, tous les vols qui arrivent le lendemain sont doublés et je suis sur qu'il n'y a pas de boublons dans ma bd !
    Voici le code qui calcule tout ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
     
    echo "<td align='center' width='150'>";
    	list($h7,$m7)=explode(":",$heur);//heure de connexion
    	list($h8,$m8)=explode(":",$heured);//heure de départ
    	list($h9,$m9)=explode(":",$heura);//heure d'arrivée
    	list($a7,$mo7,$j7)=explode("-",$journee);//jour connexion
    	list($a8,$mo8,$j8)=explode("-",$jarr);//jour arrivée
    	list($a9,$mo9,$j9)=explode ("-",$jdep);//jour départ
    	$timestamp7= mktime($h7, $m7, 0, $mo7, $j7, $a7);
    	$timestamp8= mktime($h8, $m8, 0, $mo7, $j7, $a7);
    	$timestamp9= mktime($h9, $m9, 0, $mo8, $j8, $a8);
    	$timestamp3= mktime($h8, $m8, 0, $mo8, $j8, $a8);
    	$timestamp10= mktime($h8, $m8, 0, $mo9, $j9, $a9);
    	if ($timestamp7 > $timestamp8 AND $timestamp8 < $timestamp9)//si l'avion est parti mais pas encore arrivé 
    	{
    		$timestamp = abs($timestamp7 - $timestamp3);
    		$dif_heur = floor($timestamp/3600);
    		$timestamp = $timestamp - ($dif_heur * 3600);
    		$dif_min = $timestamp / 60;
    			if ($dif_heur == 0 AND $dif_min < 2)
    				{
    					echo "Airbone";
    				}
    			if ($dif_heur == 0 AND $dif_min >= 2 AND $dif_min < 20)
    				{
    					echo "Climbing";
    				}
    			else
    			{
    	//caluculer le temps de vol restant
    				$timestamp = abs($timestamp7 - $timestamp9);
    				$dif_heura = floor($timestamp/3600);
    				$timestamp = $timestamp - ($dif_heura * 3600);
    				$dif_mina = $timestamp / 60;
    			if ($dif_heura == 0)
    				{	
    					if ($dif_mina > 35)
    					{
    						echo "En-route";
    					}
    					elseif ($dif_mina <= 35 AND $dif_mina > 20)
    					{
    	 					echo "Descending";
    					}
    					elseif ($dif_mina <= 20 AND $dif_mina > 5)
    					{
    	  					echo "Initial approach";
    					}
    					elseif ($dif_mina <= 5 AND $dif_mina >= 3)
    					{
    						echo "Final approach";
    					}
    					elseif ($dif_mina < 3)
    					{
    						echo "Landed";
    					}
    				}
    				else
    				{ 
    	 				 echo "En-route ";//, $dif_heura . " h " . $dif_mina;
    				}
    			}
    	}
    	elseif ($heur == $heured) //si l'heure départ est égale à l'heure actuelle
    	{
    		echo "Taking-off";
    	}
    	elseif ($heur < $heured) // si l'heure actuelle est inférieure à l'heure de départ
    	{
    	$timestamp = abs($timestamp7 - $timestamp10);
    	$diff_heure = floor($timestamp / 3600); //Calcul des heures écoulées/restantes
    	$timestamp = $timestamp - ($diff_heure * 3600);
    	$diff_min = $timestamp / 60; //Calcul des minutes écoulées/restantes
     
    		if ($diff_heure > 0)
    			{
    				echo "Départ dans ", $diff_heure . ' h' ." ". $diff_min;
    			}
    			elseif ($diff_min > 30 )
    			{
    	 			echo "Départ dans ", $diff_min . 'mn';
    			}
    			elseif ($diff_min <= 30 AND $diff_min > 5)
    			{
    			echo "Boarding";
    			}
    			elseif ($diff_min <= 5)
    			{
    				echo "Taxiing";
    			}
    			else
    			{
    			 echo "&nbsp;";
    			 }
    	 }
    	elseif ($timestamp7 > $timestamp9)//si l'heure actuelle est supérieure à l'heure d'arrivée
    	{
    	  echo "Arrived";
    	}
    	else
    	{
    	echo "pas encore";
    	}
     
    	echo"</td>";
    	echo"</tr>";
    peut-être cela vient de l'imbrication de mes if, ifelse qui n'est pas correct ?

    Mais j'avoue que je nage complètement !

    Merci

  5. #5
    Membre chevronné Avatar de guigo
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 612
    Par défaut
    Salut,
    Tu devrais te faire une petite fonction de debug...
    la c'est difficile de reprendre tout tes calcule.
    Verifie en premier : ton nombre de passage de boucle.
    Est ce que tes doublons ont tous les memes infos (bording, ...)?

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2004
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 77
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 91
    Par défaut
    Citation Envoyé par guigo Voir le message
    Salut,
    Tu devrais te faire une petite fonction de debug...
    J'avoue mon ignorance pour faire ça !
    Citation Envoyé par guigo Voir le message
    la c'est difficile de reprendre tout tes calcule.
    Verifie en premier : ton nombre de passage de boucle.
    Est ce que tes doublons ont tous les memes infos (bording, ...)?
    Oui, tous les doublons ont les même infos, voici un copie écran :

    tu as la destination, l'heure de départ, l'heure d'arrivée et la situation du vol :

    Tu remarques que pour Quebec et Larnaca qui arrivent aujourd'hui, il n'y a pas de soucis

    Les autres arrivent demain !

    Pour Malte, l'heure du départ approche


+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. comment calculer temps restant
    Par ouiouioui dans le forum Langage
    Réponses: 6
    Dernier message: 15/07/2015, 15h02
  2. Synchronisation et calcul de temps restant.
    Par milach dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 20/03/2013, 14h46
  3. Calculer le temps restant
    Par miss_socrates dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 19/11/2012, 10h06
  4. Calcul de temps restant d'un processus
    Par milach dans le forum C++
    Réponses: 4
    Dernier message: 29/11/2010, 16h12
  5. [WD9] Calcul de temps restant
    Par Floco dans le forum WinDev
    Réponses: 15
    Dernier message: 09/06/2010, 16h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo