Mammouth du PHP |
19672 Messages
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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse 