PHP délai en heures
Résolu
jobouille
Messages postés
286
Date d'inscription
Statut
Membre
Dernière intervention
-
jobouille Messages postés 286 Date d'inscription Statut Membre Dernière intervention -
jobouille Messages postés 286 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous !
J'aimerais pouvoir faire un délai en heures à partir du moment où un membre de mon site appui sur un bouton input.
Pour simplifier tout ça voici mon programme en français :
Si btn input
$champ == 2
attendre 72heures dans $temps
FinSi
Si $temps < 24h
champ == 3
FinSi
Si 24h < $temps < 48h
$champ == 4
FinSi
Si 48h < $temps < 72h
$champ == 5
FinSi
Si $temps >= 72h
$champ == 6
FinSi
Le but de se programme étant de passer la variable $champ à 6 au bout de 72h (après l'appui de l'utilisateur sur le bouton).
Cependant même si l'utilisateur quitte la page ou éteins son ordi le temps doit défiler.
Mon programme est déjà fait. Il me manque seulement cette variable de temps que je ne sais absolument pas faire.
J'espère ne pas être trop exigent mais je débute en PHP donc ça serait juste génial si vous m'ecrivez ces quelques lignes de codes.
Merci et bonne soirée :D
J'aimerais pouvoir faire un délai en heures à partir du moment où un membre de mon site appui sur un bouton input.
Pour simplifier tout ça voici mon programme en français :
Si btn input
$champ == 2
attendre 72heures dans $temps
FinSi
Si $temps < 24h
champ == 3
FinSi
Si 24h < $temps < 48h
$champ == 4
FinSi
Si 48h < $temps < 72h
$champ == 5
FinSi
Si $temps >= 72h
$champ == 6
FinSi
Le but de se programme étant de passer la variable $champ à 6 au bout de 72h (après l'appui de l'utilisateur sur le bouton).
Cependant même si l'utilisateur quitte la page ou éteins son ordi le temps doit défiler.
Mon programme est déjà fait. Il me manque seulement cette variable de temps que je ne sais absolument pas faire.
J'espère ne pas être trop exigent mais je débute en PHP donc ça serait juste génial si vous m'ecrivez ces quelques lignes de codes.
Merci et bonne soirée :D
A voir également:
- PHP délai en heures
- Easy php - Télécharger - Divers Web & Internet
- 600 heures en mois ✓ - Forum Excel
- Delai virement vinted - Guide
- 24 heures chrono torrent magnet ✓ - Forum Cinéma / Télé
- 35 go internet équivalent en heure ✓ - Forum Free mobile
2 réponses
Bonjour,
Le seul moyen pour toi pour "incrémenter" cette variable temps (et ce... même si l'utilisateur ferme la fenêtre...et y revient plus tard...) c'est de mémoriser ( Soit dans des COOKIES .. soit dans une Base de donnée) la date/heure à laquelle a cliqué l'utilisateur sur ce bouton...
Ainsi.. à chaque connexion sur la page ( ou son rafraichissement..) tu lis cette valeur.. tu la compares à la date de l'instant T .. et tu pourras ainsi connaitre le temps écoulé !
nb : Le souci avec les cookies.. c'est que si l'utilisateur change de PC entre temps.. le cookie n'existera pas sur cette nouvelle machine...
Je te conseilles donc d'utiliser l'insertion en base de données.
Le seul moyen pour toi pour "incrémenter" cette variable temps (et ce... même si l'utilisateur ferme la fenêtre...et y revient plus tard...) c'est de mémoriser ( Soit dans des COOKIES .. soit dans une Base de donnée) la date/heure à laquelle a cliqué l'utilisateur sur ce bouton...
Ainsi.. à chaque connexion sur la page ( ou son rafraichissement..) tu lis cette valeur.. tu la compares à la date de l'instant T .. et tu pourras ainsi connaitre le temps écoulé !
nb : Le souci avec les cookies.. c'est que si l'utilisateur change de PC entre temps.. le cookie n'existera pas sur cette nouvelle machine...
Je te conseilles donc d'utiliser l'insertion en base de données.
Parfait merci beaucoup !
J'aurais cependant une dernière question.
J'ai créer une nouvelle colonne dans ma basse de donnée que j'ai appelée champ1T de type DATETIME.
Il faut donc que la date soit enregistrée au moment où l'utilisateur appui sur le bouton afin de soustraire après etc.
J'ai essayé ceci mais ça ne fonctionne pas :/
Encore merci :)
J'aurais cependant une dernière question.
J'ai créer une nouvelle colonne dans ma basse de donnée que j'ai appelée champ1T de type DATETIME.
Il faut donc que la date soit enregistrée au moment où l'utilisateur appui sur le bouton afin de soustraire après etc.
J'ai essayé ceci mais ça ne fonctionne pas :/
<form method="POST" action=""> <input type="submit" name="test" value="TEST" /> </form> <?php if(isset($_POST['test'])) { $champ1T = $bdd->exec('UPDATE membres SET champ1T = $now WHERE id = '.$_SESSION['id']); echo 'OK'; } $datetime1 = strtotime("2015-04-18 19:00:00"); $now = date('Y-m-d H:i:s'); $datetime2 = strtotime($now); $interval = abs($datetime2 - $datetime1); $hours= round($interval / 3600); echo "Diff = $hours heures "; ?>
Encore merci :)
Dans un premier temps.. il faut que tu acquières quelques bonnes "pratiques"..
1 - On sort la requête de son exécution
2 - Lorsqu'une requête ne semble pas fonctionner... on en fait un ECHO puis on la teste en direct dans sa BDD
3 - On utilises de préférence les doubles-quotes pour encadrer la requête
4 - On utilise les simple-quotes pour entourer les variables DANS les requêtes.
5 - On essaye de placer le maximum de code php AVANT le html....
Maintenant concernant ton code actuel....il y a plusieurs erreurs....
- Tu utilises la variable $now dans la requête.. mais cette variable est déclarée seulement après....
- Tu n'as pas mis les variables entre quotes dans la requête
Bref... cela donne :
1 - On sort la requête de son exécution
2 - Lorsqu'une requête ne semble pas fonctionner... on en fait un ECHO puis on la teste en direct dans sa BDD
3 - On utilises de préférence les doubles-quotes pour encadrer la requête
4 - On utilise les simple-quotes pour entourer les variables DANS les requêtes.
5 - On essaye de placer le maximum de code php AVANT le html....
Maintenant concernant ton code actuel....il y a plusieurs erreurs....
- Tu utilises la variable $now dans la requête.. mais cette variable est déclarée seulement après....
- Tu n'as pas mis les variables entre quotes dans la requête
Bref... cela donne :
<?php $datetime1 = strtotime("2015-04-18 19:00:00"); $now = date('Y-m-d H:i:s'); $datetime2 = strtotime($now); $interval = abs($datetime2 - $datetime1); $hours= round($interval / 3600); $id = isset($_SESSION['id'])?$_SESSION['id']:NULL; if(isset($_POST['test'])){ $sql = "UPDATE membres SET champ1T = '$now' WHERE id = '$id' "; $champ1T = $bdd->exec($sql) or die(print_r($db->errorInfo(), true)); echo " UPDATE - OK"; } echo "Diff = $hours heures "; ?> <form method="POST" action=""> <input type="submit" name="test" value="TEST" /> </form>
Ok merci beaucoup, la date a bien été sauvegardée dans la base de donnée.
Cependant pourquoi mettre une date "prédéfinie" dans $datetime1 ?
Car la différence doit être entre la date actuelle ($datetime2) et la date de la base de donnée.
Qu'est ce qui faudrait changer dans cette ligne "$datetime1 = strtotime("2015-04-18 19:00:00");" pour que $datetime1 prennent la valeur de la base de donnée ?
Merci encore de votre aide ! :D
Cependant pourquoi mettre une date "prédéfinie" dans $datetime1 ?
Car la différence doit être entre la date actuelle ($datetime2) et la date de la base de donnée.
Qu'est ce qui faudrait changer dans cette ligne "$datetime1 = strtotime("2015-04-18 19:00:00");" pour que $datetime1 prennent la valeur de la base de donnée ?
Merci encore de votre aide ! :D
Effectivement, je préfère opter pour la base de donnée que pour les cookies.
Cependant, savez-vous comment faire pour savoir le jour/heure/minute au moment où il a appuyer et comparer avec les 72h a attendre ?
Je vous remercie encore de m'aider car je suis conscient que ce que je demande n'est pas forcément très pas facile a faire :/
avec $datetime1 à remplacer par la donnée que tu auras stocké en Base de données
et $datetime2 à remplacer par l'heure actuelle (au momment de l'affichage de ta page)