Comment calculer le temps restant avec php et mysql?

J’ai une situation où j’ai besoin de calculer le temps restant toutes les 6 heures, chaque fois que je visualise l’heure.

J’ai cette configuration:

pour être plus précis j’ai un déclencheur qui obtient le démarreur de temps:

 $(buttom).on('click', function(){ ..... send through ajax the current time to a php file ...if success, get the response and place it in the div }); 

dans le fichier php, je stocke ce temps dans la firebase database

 if (isset($_POST['time'])){ $storeTime->timestore($_POST['time']); } 

Qu’est-ce qui se passe maintenant est que chaque fois que je vois cette div je devrais voir le temps restant:

 
5h:50min

je revis dans 30 min je vois

 
5h:20min

etc.

le problème n’est pas d’envoyer l’heure avec ajax ou quelque chose de différent, mais d’envoyer l’heure correcte

Ce que je pensais est d’envoyer l’heure à chaque fois que je visite la page. Première fois le stocker dans un champ de table et les autres fois pour les stocker dans un champ de table séparé

 id time1 time2 1 123456.. 123124.. 

L’ time1 n’est pas modifiée car il s’agit de l’heure d’origine et chaque fois que je visite la page, j’envoie la nouvelle heure actuelle et met à jour l’ time2

ici je me perds un peu.

$getTime = $data->getTime($userId); comment je reçois time1 : $getTime = $data->getTime($userId);

et c’est le temps qui arrive chaque fois: $time

Je sais aussi que 6h est 21600 secondes

alors

 if ( $time >= ($newTime + 21600) ){ //if the current time is bigger than the first time + 6h it means that 6h have passed // store the new time in the database for reference as the new main time } else { // 6h have not passed yet and we need to calculate how much time is left //here i get confuzed } 

Je sais que ce post est un peu confus peut-être, mais j’espère que c’est compréhensible.

des idées?

Merci

Si vous souhaitez enregistrer l’heure à laquelle vous avez visité le site pour la dernière fois, vous ne devez enregistrer qu’une seule fois.

Donc, pour votre exemple:

 $current_time = time(); $last_visit_time = $data->getTime($userId); $since_last_visit_time = $current_time - $last_visit_time; $six_hours_in_seconds = 21600; if($since_last_visit_time > $six_hours_in_seconds) { // not sure of the function call here so using yours // store new time as it's been over 6 hours $storeTime->timestore($current_time); $remaining_time = $six_hours_in_seconds; } else { $remaining_time = $six_hours_in_seconds - $since_last_visit_time; } echo "Remaining Seconds: {$remaining_time}
";

Partie 2 en utilisant JavaScript / Ajax, vous pouvez l’utiliser pour afficher la durée restante

Démo:

JS

 var time_in_seconds = 21600; // this would be the $remaining_time PHP variable setInterval(function() { $('#countdown').html(seconds2time(time_in_seconds)); time_in_seconds--; }, 1000); function seconds2time(seconds) { var hours = Math.floor(seconds / 3600); var minutes = Math.floor((seconds - (hours * 3600)) / 60); var seconds = seconds - (hours * 3600) - (minutes * 60); var time = ""; if (hours != 0) { time = hours+":"; } if (minutes != 0 || time !== "") { minutes = (minutes < 10 && time !== "") ? "0"+minutes : String(minutes); time += minutes+":"; } if (time === "") { time = seconds+"s"; } else { time += (seconds < 10) ? "0"+seconds : String(seconds); } return time; } 

HTML

  

Utilisez TIME_TO_SEC(TIMEDIFF(final_time, initial_time))

 SELECT TIME_TO_SEC(TIMEDIFF('17:00:00', '09:00:00')) -- 28800 SELECT TIME_TO_SEC(TIMEDIFF('12:30:00', '12:00:00')) -- 1800 SELECT TIME_TO_SEC(TIMEDIFF('10:30:00', '10:15:00')) -- 900