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
- Ajax ne reçoit pas de réponse du côté de PHP
- Passer la valeur du champ caché en utilisant Jquery
- Adresse de retour de Google Maps Geocoder v3
- Politique de même domaine jQuery
- Différence entre promesse et succès dans AJAX
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
- AJAX revient dans le mauvais ordre
- Comment mettre un ajax dans une boucle?
- jQuery Ajax – Exécution de plusieurs demandes contre ASP.NET MVC
- jQuery continue l’exécution de la boucle après le succès ajax
- Vimeo iframe comme arrière-plan
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
- rafraîchir l’entrée après la soumission du formulaire ajax
- Afficher spinner en attendant qu’une image apparaisse à partir d’une action
- Envoi de données du serveur aux clients en utilisant ajax
- L’API Jquery.ajax au format JSON provoque «Uncaught SyntaxError: Jeton inattendu:» dans Chrome.
- Action différente selon le type de contenu renvoyé dans jquery ajax
- AjaxFileUpload renvoie le panneau de téléchargement lorsque les données sont au format json
- jQuery Ajax appelle dans Rails 3 une requête 401 non autorisée
- jquery ajax: appelle la fonction lorsque toutes les demandes sont terminées
- obtenir youtube oembed json avec ajax
- jquery appel ajax ne fonctionne pas?! problème firefox ou xss?