Se connecter avec
S'enregistrer | Connectez-vous
Votre question

Question

allstar27 http://m.bestofmedia.com/sfp/design/usr/fr/avatars/23/e4/223512.jpg
Expert Programmation
Initié
| dans Programmation

Modifier variable entre 2 dates

Bonjour,

J'ai un petit soucis avec mon script

  1. $time = time();
  2. $fin = $time + 6300;
  3. if ($rep['date'] > $time) {
  4. $statut = "Bientôt";
  5. } else {
  6. if ($rep['date'] > $time && $rep['date'] < $fin) {
  7. $statut = "En cours";
  8. } else {
  9. if ($rep['date'] < $fin) {
  10. $statut = "Terminé";
  11. }}}


Bientot et Terminé fonctionne mais pas En cours, je crois que ma syntaxe est pas bonne, ce que je voudrai c'est si $rep['date'] est plus grand que time et plus petit que fin... $statut soit en cours...
0
Vous devez être inscrit pour voter pour une question
  • Partagez
  • Etre averti des réponses
  • Ajouter aux favoris
Lassé par la pub ? Créez un compte
Ces contenus peuvent également vous intéresser
Solutions (3)
Meilleure solution
crazycat@idn http://m.bestofmedia.com/sfp/design/usr/fr/avatars/58/81/216450.png
Expert Programmation
CrazyModérateur
Bonjour
allstar27 a dit :
  1. $time = time();
  2. $fin = $time + 6300;
  3. if ($rep['date'] > $time) {
  4. $statut = "Bientôt";
  5. } else {
  6. if ($rep['date'] > $time && $rep['date'] < $fin) {
  7. $statut = "En cours";
  8. } else {
  9. if ($rep['date'] < $fin) {
  10. $statut = "Terminé";
  11. }}}


Tout d'abord, tu devrais utiliser elseif plutôt que tes imbrications.
Ensuite, à quoi correspond $rep['date'] ? Si c'est (par exemple) l'heure de démarrage d'un jeu qui doit durer 1h, tu ne travailles pas sur les bonnes données: c'est $rep['date'] qui doit être incrémenté de 3600 pour avoir l'heure de fin. Et donc on obtient:
  1. <?php
  2. $time = time();
  3. $fin = $rep['date'] + 3600;
  4. if ($time<$rep['date']) {
  5. // Ce n'est pas encore l'heure du jeu
  6. $statut = "Bientôt";
  7. } elseif ($time > $fin) {
  8. // Le jeu est terminé
  9. $statut = "Terminé;
  10. } else {
  11. // Ni l'un ni l'autre, donc en cours
  12. $statut = "En cours";
  13. }
  14. ?>
  • Partagez
Autres solutions (2)
Trier par
allstar27 http://m.bestofmedia.com/sfp/design/usr/fr/avatars/23/e4/223512.jpg
Expert Programmation
Initié
Voter contre
Vous devez avoir un badge bronze dans cette catégorie pour votre contre une solution.
Score 0
Voter pour
Ce score indique à quel point cette solution est soutenue par la communauté. Vous devez être inscrit pour voter pour une solution. Créez votre compte ou identifiez-vous.
Ah ca fonctionne, merci à vous 2!!
Athanatos http://m.bestofmedia.com/sfp/design/usr/fr/avatars/fd/57/908689.jpg
Débutant
Voter contre
Vous devez avoir un badge bronze dans cette catégorie pour votre contre une solution.
Score 0
Voter pour
Ce score indique à quel point cette solution est soutenue par la communauté. Vous devez être inscrit pour voter pour une solution. Créez votre compte ou identifiez-vous.
Lu
Tu fais tes test dans le mauvais sens:
D'abord tu dois faire if ($rep['date'] > $time && $rep['date'] < $fin)
puis après les deux autres.
Le programme passe dans le test en ligne 3: si $rep>$time est faux il n'y a aucune chance que l'expression if ($rep['date'] > $time && $rep['date'] < $fin) soit vérifié
Lassé par la pub ? Créez un compte
non identifié
Vous n'êtes pas identifié. Se connecter ou S'enregistrer
Tom's guide dans le monde