8800 sujets

Développement web côté serveur, CMS

Bonsoir à tous,

Bon, voilà que je me pose une belle colle et je n'arrive pas à trouver de solution (ais-je le cerveau adapté ?).

Bref, voilà, j'étais content, jusqu'ici, un client me demandais une action entre 11h00 et 114h00, donc je faisais une simple contrôle sur l'heure.
Mais maintenant 11h00 devient 10h30 Smiley sweatdrop

Il me faut donc faire l'exception par rapport aux minutes, je voulais donc savoir s'il existe une fonction qui pourrait m'aider ?

$heureCourant = date("H");
if($heureCourant < 11 || $heureCourant >= 14) {
        Echo 'Action';
}


Un grand merci à celui qui pourra me donner une petite piste, cela m'aiderai grandement Smiley cligne

Michael
Modifié par Lemim (04 Sep 2011 - 21:23)
Pour les minutes : date("i");

En plus ton code est faux, avec ta condition actuelle ton action se déclenche à partir de 14h et jusqu'à 11h le lendemain et ainsi de suite. Tout le contraire de ce que tu veux faire.


$heure = date("H");
$minute = date("i");

if (($heure > 11= && $minute >= 30) && $heure <= 14)
{
  // action
}


Cela dit tu devrais regarder du côté des tâches planifiées (cron job), ça répondrait peut être mieux à ton problème.
Modifié par jb_gfx (04 Sep 2011 - 21:31)
Oups pardon, en fait dans mon code c'est bien ce que je fais, je sélectionne entre 14h et 11h le lendemain, je me suis trompé dans mon explication.

En fait c'est pour attribuer des frais de ports entre 10h30 et 14h, donc je fais ça :


$heureCourant = date("H");
if($heureCourant < 11 || $heureCourant >= 14) {
        $fraisDePort = 0;
}else{
        $fraisDePort = '0.50';
}


Donc logiquement, si je fais l'exception suivante c'est OK ?



$heure = date("H");
$minute = date("i");
if(($heure < 10 && $minute <= 30) || $heure >= 14) {
        $fraisDePort = 0;
}else{
        $fraisDePort = '0.50';
}


En tout cas merci d'avoir pris le temps de te pencher sur mon problème http://www.polaroid-passion.com/forum/images/smiles/Super12.gif
$heure <= 10 plutôt (sinon ça va déclencher l'action que avant 9h30 : plus petit que 10 = 9).

Sinon c'est tout bon.
Modifié par jb_gfx (04 Sep 2011 - 21:50)
$heure = floatvar(date("H").'.'.date("i"))

ce qui donnerait 11.30 pour avoir 11h30 et te permettrait de faire des vérifications plus simplement...

J'l'ai pas testé donc y'a toujours la possibilité que ça foire mais à priori ça devrait être correct...
Sinon, la classe DateTime et ses potes, notemment DateInterval sont parfaitement adaptés.

Note que pour ce genre d'opérations, c'est un cron qui est privilégié (opération à exécuter sans action utilisateur, à un moment ou un intervalle précis).
Lpu8er a écrit :
Note que pour ce genre d'opérations, c'est un cron qui est privilégié (opération à exécuter sans action utilisateur, à un moment ou un intervalle précis).


C'est ce que j'avais proposé mais après que Lemim ait exposé ses besoins je me suis rendu compte qu'un Cron n'est pas adapté ici (l'action est bien exécutée par l'utilisateur).
Mea culpa, en effet, ce n'est pas ce genre d'actions.

J'en profite pour appuyer à nouveau sur DateTime & co, bien trop souvent ignoré, et conduisant à des opérations tordues pour pas grand chose (comme le floatval... avec "H", si un 0 est en première position, y'a de bonnes chances que PHP traite ça comme un octal. A vérifier, ça le fait pour un entier, à voir pour un flottant).