affiche une message par heure et par jour

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : affiche une message par heure et par jour

Re: affiche une message par heure et par jour

par Cyrano » 17 sept. 2011, 01:59

Julie, ce serait sympa de ta part de t'inscrire dans un premier temps, ça te permettrait dans un second temps de publier te messages et de les éditer si nécessaire. À l'occasion, ce serait bien aussi que tu parcoures les règles du forums et en l'occurrences celles concernant l'insertion de code dans les messages. Comme invitée tu ne peux pas éditer et comme lecteur, on a pas trop envie de lire le code, donc tu auras largement moins de chances d'obtenir des réponses te donnant à ton tour une chance de sortir du trou où tu t'es enlisée... :roll:

Enfin bon, je dis ça hein...

Re: affiche une message par heure et par jour

par Invité » 16 sept. 2011, 21:23

Je comprend rien il ne m'affiche pas les bonnes heures, il est 21:03 est le code m'envoi le texte : prochaine video publié a 16h.
Attention j'ai modifié les heures avec 2 heures de plus car mon wordpress a 2 heure de retard.
Par contre j'ai tester pour le week end ca marche .

<?php
// récupère l'heure courante
$heure = ((int)date("H") * 60) + (int)date("i");
$jour = date('N'); // Renvoie 1 pour lundi, 2 pour mardi etc...

if ($jour < 6) // 6 = Samedi et 7 = dimanche ! donc si on est pas samedi ni dimanche alors, faire ça
{
if ($heure < 1080)
{
// L'heure ne peut pas être négative, inutile de vérifier si elle est inférieure à zéro
$msg = 'Prochaine vidéo publié à 16h00';
}
elseif ($heure >= 1080 && $heure < 1110)
{
$msg = 'Prochaine vidéo publié à 16h30';
}
elseif ($heure >= 1110 && $heure < 1140)
{
$msg = 'Prochaine vidéo publié à 17h00';
}
elseif ($heure >= 1140 && $heure < 1170)
{
$msg = 'Prochaine vidéo publié à 17h30';
}
elseif ($heure >= 1170 && $heure < 1200)
{
$msg = 'Prochaine vidéo publié à 18h00';
}
elseif ($heure >= 1200 && $heure < 1230)
{
$msg = 'Prochaine vidéo publié à 18h30';
}
elseif ($heure >= 1230 && $heure < 1260)
{
$msg = 'Prochaine vidéo publié à 19h00';
}
elseif ($heure >= 1260 && $heure < 1290)
{
$msg = 'Prochaine vidéo publié à 19h30';
}
elseif ($heure >= 1290 && $heure < 1320)
{
$msg = 'Prochaine vidéo publié à 20h00';
}
else
{
// Il ne peut pas être plus de minuit, on retomberait à 0, donc pas besoin de vérifier qu'il est moins de minuit
$msg = 'Bonbuzz et bonne soirée, rendez-vous demain à 16h...';
}
}
else // on est samedi ou dimanche
{
$msg = "Bon week end, à lundi...";
}
echo($msg);
?>

Re: affiche une message par heure et par jour

par Cyrano » 16 sept. 2011, 13:25

Merci Cyrano ça marche j'attends samedi pour voir si il n y a pas de bug.
Teste ça en fixant arbitrairement le temps du test la valeur du jour à 6 ou 7 et pour les autre jours, fixe arbitrairement la valeur des heures avec un rand(0, 1440), et tu n'auras nul besoin d'attendre samedi ;)

Re: affiche une message par heure et par jour

par Invité » 16 sept. 2011, 13:01

Merci Cyrano ça marche j'attend samedi pour voir si il n y a pas de bug.
Merci encore une fois pour le travail effectué...
Cdlt

Re: affiche une message par heure et par jour

par Cyrano » 15 sept. 2011, 23:53

la fonction date avec 'H:i' en paramètre te retourne une chaîne de caractères, pas un nombre.
Donc tu compares des chaînes de caractère au lieu de comparer des entiers, les résultats peuvent être surprenants.

Il faudrait transformer ça en entiers et pour que la succession soit cohérente et corresponde à tes heures, comptes en minutes, donc le nombre d'heures x 60 + les minutes, donc au lieu de 16:30, ça ferait (16 x 60) + 30 = 1020.

Rapidement fait, ton code devrait ressembler à ceci :
<?php
// récupère l'heure courante
$heure = ((int)date("H") * 60) + (int)date("i");
$jour  = date('N'); // Renvoie 1 pour lundi, 2 pour mardi etc...

if ($jour < 6) // 6 = Samedi et 7 = dimanche ! donc si on est pas samedi ni dimanche alors, faire ça 
{
    if ($heure <  960)
    {
    	// L'heure ne peut pas être négative, inutile de vérifier si elle est inférieure à zéro
        $msg = 'Prochaine vidéo publié à 16h00';
    }
    elseif ($heure >=  990 && $heure < 1020)
    {
        $msg = 'Prochaine vidéo publié à 16h30';
    }
    elseif ($heure >= 1020 && $heure < 1050)
    {
        $msg = 'Prochaine vidéo publié à 17h00';
    }
    elseif ($heure >= 1050 && $heure < 1080)
    {
        $msg = 'Prochaine vidéo publié à 17h30';
    }
    elseif ($heure >= 1080 && $heure < 1110)
    {
        $msg = 'Prochaine vidéo publié à 18h00';
    }
    elseif ($heure >= 1110 && $heure < 1140)
    {
        $msg = 'Prochaine vidéo publié à 18h30';
    }
    elseif ($heure >= 1140 && $heure < 1170)
    {
        $msg = 'Prochaine vidéo publié à 19h00';
    }
    elseif ($heure >= 1170 && $heure < 1200)
    {
        $msg = 'Prochaine vidéo publié à 19h30';
    }
    elseif ($heure >= 1200 && $heure < 1230)
    {
        $msg = 'Prochaine vidéo publié à 20h00';
    }
    else
    {
    	// Il ne peut pas être plus de minuit, on retomberait à 0, donc pas besoin de vérifier qu'il est moins de minuit
        $msg = 'Bonbuzz et bonne soirée, rendez-vous demain à 16h...';
    }
}
else // on est samedi ou dimanche
{
    $msg = "Bon week end, à lundi...";
}
echo($msg);
?>
Note qu'au lieu d'un echo partout, il n'y en a plus qu'un seul à la fin et on définit une variable. Vois aussi les commentaires que j'ai pu ajouter, c'est de la logique élémentaire. Avec ça, une suite de if/elseif/else au lieu d'une série de if : dès que la condition sera remplie, on exécutera et les autres condition ne seront pas testée inutilement.

Re: affiche une message par heure et par jour

par julie » 15 sept. 2011, 23:13

Bonjour, je suis désolé de revenir vers vous mais finalement je me suis aperçu que le code affiche bien le week end le message : Bon week end, à lundi..
Mais maintenant la semaine plus rien ne s'affiche je n'ai plus les messages : Prochaine vidéo publié à ...

<?php
// récupère l'heure courante
$heure = date("H:i");
$jour = date('N'); // Renvoie 1 pour lundi, 2 pour mardi etc...

if ($jour < 6) // 6 = Samedi et 7 = dimache ! donc si on est pas samedi et dimanche alors, faire ça :
{

if ($heure >= '00' AND $heure <= '13:59') echo 'Prochaine vidéo publié à 16h00';
if ($heure >= '14' AND $heure <= '14:29') echo 'Prochaine vidéo publié à 16h30';
if ($heure >= '14:30' AND $heure <= '14:59') echo 'Prochaine vidéo publié à 17h00';
if ($heure >= '15' AND $heure <= '15:29') echo 'Prochaine vidéo publié à 17h30';
if ($heure >= '15:30' AND $heure <= '15:59') echo 'Prochaine vidéo publié à 18h00';
if ($heure >= '16' AND $heure <= '16:29') echo 'Prochaine vidéo publié à 18h30';
if ($heure >= '16:30' AND $heure <= '16:59') echo 'Prochaine vidéo publié à 19h00';
if ($heure >= '17' AND $heure <= '17:29') echo 'Prochaine vidéo publié à 19h30';
if ($heure >= '17:30' AND $heure <= '17:59') echo 'Prochaine vidéo publié à 20h00';
if ($heure >= '18:00' AND $heure <= '23:59') echo 'Bonbuzz et bonne soirée, rendez-vous demain à 16h...';

}
else // on est samedi et dimanche
{

echo "Bon week end, à lundi...";

}

?>

J'ai essayer de modifier le code mais je n'ai pas réussi à trouver l'erreur.
Cdlt, julie

Re: affiche une message par heure et par jour

par AB » 11 sept. 2011, 20:59

@sirakawa

Le minimum est de s'adapter au langage qu'on utilise.

En prochaine étape, venant peut-être d'un langage fortement typé, tu vas ensuite classiquement reprocher à php de ne pas l'être suffisamment ? etc.

Et vas-tu t'interdire d'écrire du javascript parce que les opérateurs AND et OR ne sont pas reconnus ?

Certes, on peut bien discuter de tout, mais concernant les conseils aux débutants il s'agit d'être pragmatique et dans ce cas de figure, y'a pas photo ! :)

Re: affiche une message par heure et par jour

par Ryle » 11 sept. 2011, 20:19

C'est une absurdité que ce double jeu d'opérateurs de même sens et de précédences différentes.
Il suffit de parenthéser correctement pour ne pas risquer le moindre ennui.
ce nest pas parce que certains matheux et électroniciens se permettent :
AB+C dans le sens de ((A et B) ou C) qu'il faut les imiter...
Je suis d'accord sur le côté "absurde" parce que cette notation est utilisée par d'autres langages à la place des opérateurs && et || et qu'il est donc source d'erreur. Pour le reste, ce sont des opérateurs différents pour répondre à un besoin différent tout comme les opérateurs logiques binaires :)

Les parenthèses limitent les risques d'erreur, mais surchargent le code pouvant le rendre plus difficile à lire et à comprendre (je sais, y a toujours les commentaires pour ça ;))

Quant à la notation AB+C de "certains matheux et électroniciens", il s'agit d'une convention internationale qui est enseignée en 4ème ;) (la priorité des opérateurs de multiplication/division sur l'addition/soustraction doit être vu en cours élémentaire ;))

Mais tout ça mériterait sans doute un topic dédié, le principal ici reste que le problème soit résolu :)

Re: affiche une message par heure et par jour

par sirakawa » 11 sept. 2011, 19:25

C'est une absurdité que ce double jeu d'opérateurs de même sens et de précédences différentes.
Il suffit de parenthéser correctement pour ne pas risquer le moindre ennui.
ce nest pas parce que certains matheux et électroniciens se permettent :
AB+C dans le sens de ((A et B) ou C) qu'il faut les imiter...

Re: affiche une message par heure et par jour

par AB » 11 sept. 2011, 17:17

Merci :)

...mais au passage, ça fait quand même plusieurs fois qu'on vous dit de n'utiliser (avec PHP) les opérateurs AND et OR qu'exceptionnellement - sur justification comme disait Ryle. Sinon vous prenez de mauvaises habitudes et finirez par avoir des problèmes.

En php prenez donc l'habitude d'écrire '&&' à la place de 'AND' et '||' à la place de 'OR'.

Et en plus d'éviter de potentiels problèmes, ça vous facilitera la vie quand vous aurez à écrire du javascript :wink:

Re: affiche une message par heure et par jour

par julie » 11 sept. 2011, 14:52

Eucka tu as trouvé ce que je demandais mais rien ne s'affiche je voudrais ecrire "Bon weekend à lundi ..."

Je dois crée echo c'est ca ?
et bah ça :
<?php
// récupère l'heure courante
$heure = date("H:i");
$jour = date('N'); // Renvoie 1 pour lundi, 2 pour mardi etc...

if ($jour < 6) // 6 = Samedi et 7 = dimache ! donc si on est pas samedi et dimanche alors, faire ça :
{

if ($heure >= '00' AND $heure <= '13:59') echo 'Prochaine vidéo publié à 16h00';
if ($heure >= '14' AND $heure <= '14:29') echo 'Prochaine vidéo publié à 16h30';
if ($heure >= '14:30' AND $heure <= '14:59') echo 'Prochaine vidéo publié à 17h00';
if ($heure >= '15' AND $heure <= '15:29') echo 'Prochaine vidéo publié à 17h30';
if ($heure >= '15:30' AND $heure <= '15:59') echo 'Prochaine vidéo publié à 18h00';
if ($heure >= '16' AND $heure <= '16:29') echo 'Prochaine vidéo publié à 18h30';
if ($heure >= '16:30' AND $heure <= '16:59') echo 'Prochaine vidéo publié à 19h00';
if ($heure >= '17' AND $heure <= '17:29') echo 'Prochaine vidéo publié à 19h30';
if ($heure >= '17:30' AND $heure <= '17:59') echo 'Prochaine vidéo publié à 20h00';
if ($heure >= '18:00' AND $heure <= '23:59') echo 'Bonbuzz et bonne soirée, rendez-vous demain à 16h...';

}
else // on est samedi et dimanche
{

echo "Bon week end, à lundi...";

}

?>
ça marche nikel merci beaucoup, merci à tout ceux qui se sont creusé la tête, trés bon forum ! vous assurer les gars

Re: affiche une message par heure et par jour

par julie » 11 sept. 2011, 14:48

D'accord, on va dire que tu as fait tous le travail je te remercie vraiment je vais tester de suite

Re: affiche une message par heure et par jour

par euka » 11 sept. 2011, 14:37

Eucka tu as trouvé ce que je demandais mais rien ne s'affiche je voudrais ecrire "Bon weekend à lundi ..."

Je dois crée echo c'est ca ?
et bah ça :
<?php
// récupère l'heure courante
$heure = date("H:i");
$jour = date('N'); // Renvoie 1 pour lundi, 2 pour mardi etc...

if ($jour < 6) // 6 = Samedi et 7 = dimache ! donc si on est pas samedi et dimanche alors, faire ça :
{

if ($heure >= '00' AND $heure <= '13:59') echo 'Prochaine vidéo publié à 16h00';
if ($heure >= '14' AND $heure <= '14:29') echo 'Prochaine vidéo publié à 16h30';
if ($heure >= '14:30' AND $heure <= '14:59') echo 'Prochaine vidéo publié à 17h00';
if ($heure >= '15' AND $heure <= '15:29') echo 'Prochaine vidéo publié à 17h30';
if ($heure >= '15:30' AND $heure <= '15:59') echo 'Prochaine vidéo publié à 18h00';
if ($heure >= '16' AND $heure <= '16:29') echo 'Prochaine vidéo publié à 18h30';
if ($heure >= '16:30' AND $heure <= '16:59') echo 'Prochaine vidéo publié à 19h00';
if ($heure >= '17' AND $heure <= '17:29') echo 'Prochaine vidéo publié à 19h30';
if ($heure >= '17:30' AND $heure <= '17:59') echo 'Prochaine vidéo publié à 20h00';
if ($heure >= '18:00' AND $heure <= '23:59') echo 'Bonbuzz et bonne soirée, rendez-vous demain à 16h...';

}
else // on est samedi et dimanche
{

echo "Bon week end, à lundi...";

}

?>

Re: affiche une message par heure et par jour

par Julie » 11 sept. 2011, 14:16

Merci à tout le monde c'est super sympa de me donner un petit coup de main, AB j essai de comprendre ton code je essayer de m'en servir aussi comme celui de euka.

Re: affiche une message par heure et par jour

par Invité » 11 sept. 2011, 14:12

Eucka tu as trouvé ce que je demandais mais rien ne s'affiche je voudrais ecrire "Bon weekend à lundi ..."

Je dois crée echo c'est ca ?