Incrementer tous les jours en PHP
Résolu/Fermé
modemo2018
Messages postés
226
Date d'inscription
vendredi 15 novembre 2019
Statut
Membre
Dernière intervention
13 octobre 2022
-
6 juil. 2020 à 13:02
modemo2018 Messages postés 226 Date d'inscription vendredi 15 novembre 2019 Statut Membre Dernière intervention 13 octobre 2022 - 10 juil. 2020 à 15:36
modemo2018 Messages postés 226 Date d'inscription vendredi 15 novembre 2019 Statut Membre Dernière intervention 13 octobre 2022 - 10 juil. 2020 à 15:36
A voir également:
- Incrementer tous les jours en PHP
- Compte facebook suspendu 180 jours - Guide
- Compte instagram suspendu 180 jours - Guide
- Easy php - Télécharger - Divers Web & Internet
- Instagram bloqué : le bug des comptes suspendus a été résolu - Accueil - Instagram
- Telecharger idm gratuit 30 jours essai - Télécharger - Téléchargement & Transfert
9 réponses
yg_be
Messages postés
23405
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 décembre 2024
Ambassadeur
1 557
6 juil. 2020 à 13:58
6 juil. 2020 à 13:58
bonjour,
peux-tu rendre ton code plus lisible en respectant les conventions d'alignement?
je suggère que tu ajoutes des echo pour que tu comprennes ce que fait ton code.
ta boucle en ligne 43 me semble bizarre, la condition ne change jamais.
peux-tu rendre ton code plus lisible en respectant les conventions d'alignement?
je suggère que tu ajoutes des echo pour que tu comprennes ce que fait ton code.
ta boucle en ligne 43 me semble bizarre, la condition ne change jamais.
modemo2018
Messages postés
226
Date d'inscription
vendredi 15 novembre 2019
Statut
Membre
Dernière intervention
13 octobre 2022
Modifié le 6 juil. 2020 à 14:31
Modifié le 6 juil. 2020 à 14:31
// Connexion dans la table time try { $req2 = $bdd->prepare('SELECT * FROM time WHERE id = ?'); $req2->execute(array($_SESSION["id"])); } catch(Exception $e) { die('Erreur : '.$e->getMessage()); } $dom = $req2->fetch(); $delai = $dom['duree']; $code = $dom['code']; $heure = date("g:i a"); //Condition de décrémentation while($req2->fetch() ) { if($delai != 0 ) { if ($heure == "23:00 pm") { $delai = $delai - 1; $sql = 'UPDATE time SET duree = ? WHERE id = ?'; $datas = array($delai, $_SESSION["id"]); try{ $req = $bdd->prepare($sql); $req->execute($datas); } catch ( Exception $e ) { // en cas d'erreur : echo " Erreur ! " . $e->getMessage (); print_r ( $datas ); exit; } $i =1; // la boucle while est là pour faire passer 1min afin qu'il ne refasse plus le test de $heure == "23:00 pm" while($heure != "23:01 pm" ) { $i++; } } $heure = date("g:i a"); } }
Jai séparé les instructions, j'espère que c'est plus comprehensible
yg_be
Messages postés
23405
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 décembre 2024
1 557
6 juil. 2020 à 15:04
6 juil. 2020 à 15:04
je suggère que tu ajoutes des echo pour que tu comprennes ce que fait ton code.
ta boucle en ligne 43 me semble bizarre, la condition ne change jamais.
pour rendre ton code lisible, vois ici: https://gist.github.com/npotier/593b645025173ef8bbb5c59d3fd455fa
ta boucle en ligne 43 me semble bizarre, la condition ne change jamais.
pour rendre ton code lisible, vois ici: https://gist.github.com/npotier/593b645025173ef8bbb5c59d3fd455fa
modemo2018
Messages postés
226
Date d'inscription
vendredi 15 novembre 2019
Statut
Membre
Dernière intervention
13 octobre 2022
>
yg_be
Messages postés
23405
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 décembre 2024
Modifié le 6 juil. 2020 à 15:42
Modifié le 6 juil. 2020 à 15:42
C'est fait exprès, c'est pour eviter que la condition
Ce que j'ai remarqué c'est que c'est comme si la condition
if ($heure == "23:00 pm")s'exécute pendant les 1 minutes. Je bloque ma condition
if ($heure == "23:00 pm")avec la boucle WHILE, pour que dès que ça sera 23:01 pm, il va sortir de
if ($heure == "23:00 pm")et attendre la prochaine 23:01 pm, je sais pas si tu m'a compris?
Ce que j'ai remarqué c'est que c'est comme si la condition
if ($heure == "23:00 pm")s'execute pas
yg_be
Messages postés
23405
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 décembre 2024
1 557
>
modemo2018
Messages postés
226
Date d'inscription
vendredi 15 novembre 2019
Statut
Membre
Dernière intervention
13 octobre 2022
6 juil. 2020 à 16:59
6 juil. 2020 à 16:59
as-tu ajouté des echo pour t'aider à comprendre ce que fait ton code?
par exemple:
par exemple:
echo $heure;avant le if de la ligne 24.
yg_be
Messages postés
23405
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 décembre 2024
1 557
>
modemo2018
Messages postés
226
Date d'inscription
vendredi 15 novembre 2019
Statut
Membre
Dernière intervention
13 octobre 2022
6 juil. 2020 à 17:10
6 juil. 2020 à 17:10
la condition de la boucle while ne change pas dans la boucle: si tu y rentres, tu ne vas jamais en sortir.
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 718
6 juil. 2020 à 17:14
6 juil. 2020 à 17:14
Bonjour,
Si tu avais fait ce qu'Yg_be t'avait conseillé ( mettre des echo dans ton code pour essayer de comprendre ce qui ne fonctionne pas) et qu'en plus tu avais pris soin de bien lire ce qu'il t'a indiqué ( la condition ne change jamais.)
. tu aurais pu constater que ta variable $heure, vu qu'elle se trouve en dehors de ta boucle .. ne change pas !
Et donc.. que ta condition IF se basera TOUJOURS sur l'heure qu'il était lorsque tu as affiché ta page....
Si tu avais fait ce qu'Yg_be t'avait conseillé ( mettre des echo dans ton code pour essayer de comprendre ce qui ne fonctionne pas) et qu'en plus tu avais pris soin de bien lire ce qu'il t'a indiqué ( la condition ne change jamais.)
. tu aurais pu constater que ta variable $heure, vu qu'elle se trouve en dehors de ta boucle .. ne change pas !
Et donc.. que ta condition IF se basera TOUJOURS sur l'heure qu'il était lorsque tu as affiché ta page....
modemo2018
Messages postés
226
Date d'inscription
vendredi 15 novembre 2019
Statut
Membre
Dernière intervention
13 octobre 2022
7 juil. 2020 à 10:49
7 juil. 2020 à 10:49
Oui tu as raison, le fait que la variable $heure soit dehors empêche l'execution de ma boucle comme j'aurai souhaité.
Merci
Merci
yg_be
Messages postés
23405
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 décembre 2024
Ambassadeur
1 557
6 juil. 2020 à 18:14
6 juil. 2020 à 18:14
je pense que ton code est très loin de faire ce que tu souhaites.
cependant, tu n'expliques pas ce que tu veux réaliser.
cependant, tu n'expliques pas ce que tu veux réaliser.
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 718
6 juil. 2020 à 22:31
6 juil. 2020 à 22:31
Surtout qu'un script PHP a une certaine "durée" de vie.... et à moins de forcer le set_time_limit à une durée excessive ( à ne surtout pas faire !!! ) ... le script s'arrêtera avant d'avoir atteint l'heure souhaitée.
yg_be
Messages postés
23405
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 décembre 2024
1 557
7 juil. 2020 à 00:08
7 juil. 2020 à 00:08
si je devine ce que tu veux réaliser, il est préférable d'enregistrer des moments, pas des délais.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
modemo2018
Messages postés
226
Date d'inscription
vendredi 15 novembre 2019
Statut
Membre
Dernière intervention
13 octobre 2022
Modifié le 7 juil. 2020 à 13:33
Modifié le 7 juil. 2020 à 13:33
La variable delais contient le nombre de jours, le but de mon programme c'est que le nombre de jours se décrémente à une heure donnée, puis s'actualise dans la base de donnée, puis lorsqu'il arrive dans la boucle
J'ai mis la variable $heure à l'intérieur et je met les echo pour comprendre ce qui se passe dans la boucle, le onstat c'est qu' apparement la condition
Quelqu'un peut-il m'aidé SVP?
while($heure != "10:54 am" ) { $i++; }il comptabilise le nombre de $i dans le but de faire passer le temps et ne plus exécuté
if ($heure == "10:53 am")
y { $req2 = $bdd->prepare('SELECT * FROM time WHERE id = ?'); $req2->execute(array($_SESSION["id"])); } catch(Exception $e) { die('Erreur : '.$e->getMessage()); } //calcul delai while($req2->fetch() ) { $heure = date("g:i a"); $delai = $dom['duree']; $heure = date("g:i a"); if($delai != 0 ) { if ($heure == "10:53 am") { $delai = $delai - 1; $sql = 'UPDATE time SET duree = ? WHERE id = ?'; $datas = array($delai, $_SESSION["id"]); try{ $req = $bdd->prepare($sql); $req->execute($datas); } catch ( Exception $e ) { // en cas d'erreur : echo " Erreur ! " . $e->getMessage (); print_r ( $datas ); exit; } $i =1; while($heure != "10:54 am" ) { $i++; } echo $i ; } } }
J'ai mis la variable $heure à l'intérieur et je met les echo pour comprendre ce qui se passe dans la boucle, le onstat c'est qu' apparement la condition
f ($heure == "10:53 am")voilà pourquoi il n'ya pas décrémentation
Quelqu'un peut-il m'aidé SVP?
yg_be
Messages postés
23405
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 décembre 2024
1 557
Modifié le 7 juil. 2020 à 14:18
Modifié le 7 juil. 2020 à 14:18
as-tu fait comme expliqué en #5?
en tous cas, tu n'as pas change la boucle en ligne 40, la condition n'y change jamais.
je pense que ton code est très loin de faire ce que tu souhaites.
cependant, tu n'expliques pas ce que tu veux réaliser.
en tous cas, tu n'as pas change la boucle en ligne 40, la condition n'y change jamais.
je pense que ton code est très loin de faire ce que tu souhaites.
cependant, tu n'expliques pas ce que tu veux réaliser.
modemo2018
Messages postés
226
Date d'inscription
vendredi 15 novembre 2019
Statut
Membre
Dernière intervention
13 octobre 2022
Modifié le 7 juil. 2020 à 14:50
Modifié le 7 juil. 2020 à 14:50
Oui j'ai ajouté un
Comme j'ai expliqué précédemment, la ligne 40 est mis expressément, c'est pour que la condition
J'espère que maintenant c'est plus comprehensible
echo $heure;, s'affiche dans la boucle WHILE mais la condition IF ne s'exécute pas
Comme j'ai expliqué précédemment, la ligne 40 est mis expressément, c'est pour que la condition
if ($heure == "10:53 am")s'exécute qu'une seule fois, car dans de 10:53 à 10:54, il ya une minute qui s'écroule cela veut dire que la variable $delai va se décrémenter pendant une minute, hors la décrémentation doit se faire qu'une fois pas pendant une minutes d'où la présence de la ligne 40, qui sert à faire passé les 1 minutes
J'espère que maintenant c'est plus comprehensible
try { $req2 = $bdd->prepare('SELECT * FROM time WHERE id = ?'); $req2->execute(array($_SESSION["id"])); } catch(Exception $e) { die('Erreur : '.$e->getMessage()); } //calcul delai $heure = date("g:i a"); echo $heure; while($req2->fetch() ) { $delai = $dom['duree']; $heure = date("g:i a"); echo $heure; if($delai != 0 ) { if ($heure == "11:33 am") { $delai = $delai - 1; $sql = 'UPDATE time SET duree = ? WHERE id = ?'; $datas = array($delai, $_SESSION["id"]); try{ $req = $bdd->prepare($sql); $req->execute($datas); } catch ( Exception $e ) { // en cas d'erreur : echo " Erreur ! " . $e->getMessage (); print_r ( $datas ); exit; } $i =1; while($heure != "11:34 am" ) { $i++; } } } echo $i; }
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 718
7 juil. 2020 à 15:18
7 juil. 2020 à 15:18
Il y a de gros soucis avec ton code.
Comme déjà évoqué ... un script php ne peut fonctionner qu'un certain temps... ( en général, une vingtaine de secondes ).
Pour quelques cas rares, on peut modifier cette "limite" ... mais il est préférable d'éviter.
Ensuite, au moment où tu lances ton script ... quelle heure est-il exactement ?
Car, si ce n'est pas pile poile 10h53 ... ça ne rentrera jamais dans ton if.
A savoir également, qu'il est préférable d'utiliser les fonctions de manipulation des dates / times pour faire tes comparaisons...
(tu les trouveras dans le manuel php et des exemples en pagaille sur le net )
par exemple
Pour finir, je pense que tu essais de faire un truc bancale avec ton code !
Quel est le but de ce script ?
Comment est-il lancé ?
Comme déjà évoqué ... un script php ne peut fonctionner qu'un certain temps... ( en général, une vingtaine de secondes ).
Pour quelques cas rares, on peut modifier cette "limite" ... mais il est préférable d'éviter.
Ensuite, au moment où tu lances ton script ... quelle heure est-il exactement ?
Car, si ce n'est pas pile poile 10h53 ... ça ne rentrera jamais dans ton if.
A savoir également, qu'il est préférable d'utiliser les fonctions de manipulation des dates / times pour faire tes comparaisons...
(tu les trouveras dans le manuel php et des exemples en pagaille sur le net )
par exemple
if (time() >= strtotime("11:33:00")) { echo "ok"; }
Pour finir, je pense que tu essais de faire un truc bancale avec ton code !
Quel est le but de ce script ?
Comment est-il lancé ?
modemo2018
Messages postés
226
Date d'inscription
vendredi 15 novembre 2019
Statut
Membre
Dernière intervention
13 octobre 2022
7 juil. 2020 à 15:48
7 juil. 2020 à 15:48
Le but de mon script est d'établir un système de durée d'abonnement, c-à-d, lorsque l'abonné au compte s'enregistre pour la 1ère fois, il reçoit un délai de 30 jours, à compter de ce jour, le nombre de jour se décompte, en partant de 30 jusqu'à 0 jour, lorsque les 0 atteint l'abonné doit se réabonné sinon son compte est bloqué s'il ne renouvelle pas son abonnement
C'est le système de décompte de jours que j'essai d'établir, c'est jusque je suis pas trop fort avec la manipulation des dates/times
C'est le système de décompte de jours que j'essai d'établir, c'est jusque je suis pas trop fort avec la manipulation des dates/times
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 718
7 juil. 2020 à 16:14
7 juil. 2020 à 16:14
Je ne vois pas ce que viennent faire des boucles ici...
A chaque rechargement de la page, il te suffit de comparer la date d'abonnement avec la date du jour.
Si inférieur à 30... il a accès....
Sinon... tu le rediriges vers la pages pour payer.
Ce n'est pas plus compliqué que ça !
Php s'exécute lors de l'appel à la page.
Une fois la page chargée, php n'intervient plus..... donc ton histoire de boucle est inutile et stupide.
Je pense qu'avant de coder, tu devrais déjà établir un cahier des charges de ce que tu veux faire puis faire un découpage fonctionnel en prenant le temps de bien réfléchir à l’algorithme à mettre en place et en te documentant sur ce qui est "faisable" ou non.
Là tu pars un peu dans tous les sens en essayant de bidouiller ...
A chaque rechargement de la page, il te suffit de comparer la date d'abonnement avec la date du jour.
Si inférieur à 30... il a accès....
Sinon... tu le rediriges vers la pages pour payer.
Ce n'est pas plus compliqué que ça !
Php s'exécute lors de l'appel à la page.
Une fois la page chargée, php n'intervient plus..... donc ton histoire de boucle est inutile et stupide.
Je pense qu'avant de coder, tu devrais déjà établir un cahier des charges de ce que tu veux faire puis faire un découpage fonctionnel en prenant le temps de bien réfléchir à l’algorithme à mettre en place et en te documentant sur ce qui est "faisable" ou non.
Là tu pars un peu dans tous les sens en essayant de bidouiller ...
yg_be
Messages postés
23405
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 décembre 2024
1 557
>
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
7 juil. 2020 à 17:12
7 juil. 2020 à 17:12
ou bien d'enregistrer la date de fin de l'abonnement dans la base de données.
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 718
>
yg_be
Messages postés
23405
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 décembre 2024
7 juil. 2020 à 17:15
7 juil. 2020 à 17:15
Dans ce cas, ça ne serait pas OU mais ET
On conserve la date à laquelle l'utilisateur s'est abonné ( en cas d'éventuel litige...) ET on peut également stocker la date de fin de l'abonnement.
On conserve la date à laquelle l'utilisateur s'est abonné ( en cas d'éventuel litige...) ET on peut également stocker la date de fin de l'abonnement.
yg_be
Messages postés
23405
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 décembre 2024
1 557
>
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
7 juil. 2020 à 18:47
7 juil. 2020 à 18:47
c'était une alternative à l'utilisation d'une période fixe de 30 jours, au moment de vérifier si l'abonnement est expiré.
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 718
>
yg_be
Messages postés
23405
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 décembre 2024
7 juil. 2020 à 18:50
7 juil. 2020 à 18:50
Oui, j'avais bien compris.
C'est juste qu'il est préférable, dans tous les cas, de stocker AU MOINS la date d'inscription. ( au moins.. j'insiste).
Et donc, qu'on peut aussi stocker la date ( déjà calculée ) de l'échéance.
Je te reprenais juste sur le "ou" .. qu'il faudrait plutôt remplacer par "et" ....
C'est juste qu'il est préférable, dans tous les cas, de stocker AU MOINS la date d'inscription. ( au moins.. j'insiste).
Et donc, qu'on peut aussi stocker la date ( déjà calculée ) de l'échéance.
Je te reprenais juste sur le "ou" .. qu'il faudrait plutôt remplacer par "et" ....
modemo2018
Messages postés
226
Date d'inscription
vendredi 15 novembre 2019
Statut
Membre
Dernière intervention
13 octobre 2022
Modifié le 9 juil. 2020 à 18:32
Modifié le 9 juil. 2020 à 18:32
Merci pour la suggestion de travailler avec la date d'abonnement, je me suis penché sur cette suggestion et j'ai conçu quelque chose
Lorsque l'utilisateur se connecte, la date du jour est pris par
Ce programme est conçu par le principe où lorsque quelqu'un s'abonne il lui ai attribué un code qui correspond à certains nombre de jours bien connu, à chaque jour où il se connecte le nombre des jour lié à son code diminue en partant de
Le constat fait c'est qu'après calcul il m'affiche des nombres negative, c'est comme si la conversion en jours du calcul
En plus SVP comment faire pour que ce calcul s'effectue qu'une seule fois le jour? car à chaque fois que je me connecte il teste la boucle et effectue le calcul
Lorsque l'utilisateur se connecte, la date du jour est pris par
$jour = date("Y-m-d");, lorsqu'il arrive à la page d'accueil, ainsi s'exécute ce programme
$jour = !empty ( $_GET['date'] ) ? $_GET['date'] : NULL; try { $req2 = $bdd->prepare('SELECT * FROM time WHERE id = ?'); $req2->execute(array($_SESSION["id"])); } catch(Exception $e) { die('Erreur : '.$e->getMessage()); } $dom = $req2->fetch(); //calcul delai $delai = $dom['duree']; $date = $dom['date']; echo $delai; if( $jour != $date){ if($delai != 0 ) { $diff = abs(strtotime($jour) - strtotime($date)); $nbJours = $diff /86400; // conversion du calcul en jour (60x60x24) $delai = $delai - $nbJours; $sql = 'UPDATE time SET duree = ? WHERE id = ?'; $datas = array($delai, $_SESSION["id"]); try{ $req = $bdd->prepare($sql); $req->execute($datas); } catch ( Exception $e ) { // en cas d'erreur : echo " Erreur ! " . $e->getMessage (); print_r ( $datas ); exit; } } } echo' '; echo $nbJours; echo' '; echo $delai; // pour tester le resultat
Ce programme est conçu par le principe où lorsque quelqu'un s'abonne il lui ai attribué un code qui correspond à certains nombre de jours bien connu, à chaque jour où il se connecte le nombre des jour lié à son code diminue en partant de
$diff = abs(strtotime($jour) - strtotime($date)); $nbJours = $diff /86400; // conversion du calcul en jour (60x60x24)d'où la soustraction
$delai = $delai - $nbJours;après la BDD s'actualise
Le constat fait c'est qu'après calcul il m'affiche des nombres negative, c'est comme si la conversion en jours du calcul
$nbJours = $diff /86400;se passe pas bien et en plus c'est comme si il n'exécute pas la condition
if( $jour != $date){
En plus SVP comment faire pour que ce calcul s'effectue qu'une seule fois le jour? car à chaque fois que je me connecte il teste la boucle et effectue le calcul
yg_be
Messages postés
23405
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 décembre 2024
1 557
9 juil. 2020 à 19:41
9 juil. 2020 à 19:41
pourquoi n'enregistres-tu pas dans la base de données la date de la fin de l'abonnement?
il deviendra alors inutile de faire toutes ces opérations.
il deviendra alors inutile de faire toutes ces opérations.
modemo2018
Messages postés
226
Date d'inscription
vendredi 15 novembre 2019
Statut
Membre
Dernière intervention
13 octobre 2022
>
yg_be
Messages postés
23405
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 décembre 2024
10 juil. 2020 à 11:48
10 juil. 2020 à 11:48
J'ai appliqué la date de fin, ça marché, voici le code :
En plus SVP comment faire pour que ce calcul s'effectue qu'une seule fois le jour? car à chaque fois que je me connecte il effectue le calcul, quel condition pourrai-je mettre par exemple pour qu'il fasse le calcul une seule fois?
$jour = !empty ( $_GET['date'] ) ? $_GET['date'] : NULL; try { $req2 = $bdd->prepare('SELECT * FROM time WHERE id = ?'); $req2->execute(array($_SESSION["id"])); } catch(Exception $e) { die('Erreur : '.$e->getMessage()); } $dom = $req2->fetch(); //calcul delai $delai = $dom['duree']; $diff = abs(strtotime($delai) - strtotime($jour)); $nbJours = $diff /86400; echo' '; echo $nbJours;
En plus SVP comment faire pour que ce calcul s'effectue qu'une seule fois le jour? car à chaque fois que je me connecte il effectue le calcul, quel condition pourrai-je mettre par exemple pour qu'il fasse le calcul une seule fois?
modemo2018
Messages postés
226
Date d'inscription
vendredi 15 novembre 2019
Statut
Membre
Dernière intervention
13 octobre 2022
>
yg_be
Messages postés
23405
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 décembre 2024
Modifié le 10 juil. 2020 à 11:54
Modifié le 10 juil. 2020 à 11:54
J'ai appliqué la date de fin, ça marché, voici le code :
Et plus SVP comment faire pour que ce calcul s'effectue qu'une seule fois le jour? car à chaque fois que je me connecte il effectue le calcul et m'affiche un nombre incoherent
Quel condition pourrai-je mettre par exemple pour qu'il fasse le calcul une seule fois le jour?
$jour = !empty ( $_GET['date'] ) ? $_GET['date'] : NULL; try { $req2 = $bdd->prepare('SELECT * FROM time WHERE id = ?'); $req2->execute(array($_SESSION["id"])); } catch(Exception $e) { die('Erreur : '.$e->getMessage()); } $dom = $req2->fetch(); //calcul delai $delai = $dom['duree']; $diff = abs(strtotime($delai) - strtotime($jour)); $nbJours = $diff /86400; echo' '; echo $nbJours;
Et plus SVP comment faire pour que ce calcul s'effectue qu'une seule fois le jour? car à chaque fois que je me connecte il effectue le calcul et m'affiche un nombre incoherent
Quel condition pourrai-je mettre par exemple pour qu'il fasse le calcul une seule fois le jour?
yg_be
Messages postés
23405
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 décembre 2024
1 557
>
modemo2018
Messages postés
226
Date d'inscription
vendredi 15 novembre 2019
Statut
Membre
Dernière intervention
13 octobre 2022
10 juil. 2020 à 11:55
10 juil. 2020 à 11:55
comme tu connais la date de fin, je ne vois plus de raison d'enregistrer, ni de mettre à jour le délai.
modemo2018
Messages postés
226
Date d'inscription
vendredi 15 novembre 2019
Statut
Membre
Dernière intervention
13 octobre 2022
>
yg_be
Messages postés
23405
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 décembre 2024
Modifié le 10 juil. 2020 à 12:37
Modifié le 10 juil. 2020 à 12:37
Il ne met plus à jour ou enregistre une date quelconque le
comment faire pour que ce calcul s'effectue qu'une seule fois le jour? car à chaque fois que je me connecte il effectue le calcul et m'affiche un nombre incoherent
Quel condition pourrai-je mettre par exemple pour qu'il fasse le calcul une seule fois le jour?
$diff = abs(strtotime($delai) - strtotime($jour)); $nbJours = $diff /86400; echo $nbJours;est mit pour faire connaitre à l'utilisateur le nombre de jour qui lui reste de sa validité, car à une semaine du délai butoir il reçoit le message d'alert
comment faire pour que ce calcul s'effectue qu'une seule fois le jour? car à chaque fois que je me connecte il effectue le calcul et m'affiche un nombre incoherent
Quel condition pourrai-je mettre par exemple pour qu'il fasse le calcul une seule fois le jour?
modemo2018
Messages postés
226
Date d'inscription
vendredi 15 novembre 2019
Statut
Membre
Dernière intervention
13 octobre 2022
10 juil. 2020 à 14:58
10 juil. 2020 à 14:58
exactement c'est inutile, j'enregistre pas le nombre de jours restant, en ce qui concerne ce problème je l'ai déjà résolu par ta proposition, mon programme enregistre juste la date de debut et la date de fin d'abonnement, mais je donne la possibilité à l'abonnée de connaitre le nombre des jours qui lui reste en affichant sur mon site celui-ci d'où :
Donc lorsque l'abonné se connecte, la date du jour est récupéré puis fait la soustraction avec la date de fin, ainsi le nombre de jours restant lui est affiché
Le problème que j'ai actuellement c'est que lorsque l'abonné se connecte pour la première fois(en un jour) mon code s'execute normalement et affiche le bon le nombre,
mais une fois deconnecté puis se reconnecte, il affiche un resultat incoherent, je ne comprend pas pourquoi il agit comme ça
$diff = abs(strtotime($delai) - strtotime($jour)); $nbJours = $diff /86400; echo' '; echo $nbJours;
Donc lorsque l'abonné se connecte, la date du jour est récupéré puis fait la soustraction avec la date de fin, ainsi le nombre de jours restant lui est affiché
Le problème que j'ai actuellement c'est que lorsque l'abonné se connecte pour la première fois(en un jour) mon code s'execute normalement et affiche le bon le nombre,
mais une fois deconnecté puis se reconnecte, il affiche un resultat incoherent, je ne comprend pas pourquoi il agit comme ça
yg_be
Messages postés
23405
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 décembre 2024
1 557
Modifié le 10 juil. 2020 à 16:12
Modifié le 10 juil. 2020 à 16:12
difficile de comprendre ce que tu fais quand tu ne montres qu'une petite partie de ton code.
tu ne donnes pas d'information précise à propos de ce qu'il affiche.
as-tu affiché les valeurs de $delai, $jour, $nbjours et $diff? cela t'aidera à déterminer d'où vient l'erreur.
tu ne donnes pas d'information précise à propos de ce qu'il affiche.
as-tu affiché les valeurs de $delai, $jour, $nbjours et $diff? cela t'aidera à déterminer d'où vient l'erreur.
modemo2018
Messages postés
226
Date d'inscription
vendredi 15 novembre 2019
Statut
Membre
Dernière intervention
13 octobre 2022
>
yg_be
Messages postés
23405
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 décembre 2024
10 juil. 2020 à 15:36
10 juil. 2020 à 15:36
Eureka!! j'ai résolu le problème, j'ai pu répéré mon erreur, c'est réglé. GRAND MERCI