$date = '2010-06-12';// 12 juin 2010
function Date_fr($date)
{
setlocale(LC_TIME, 'french');
return strftime('%a', strtotime($date));
}
$jour = Date_fr($date); //echo $date (-> sam.)
// et donc
if (!(strrpos($jour,'sam.') === 0 || strrpos($jour,'dim.') === 0))
{
echo 'on peut afficher les infos car la date est différente de samedi ou dimanche';
}
else
{
echo 'on est samedi ou dimanche -> jours de censure ';
}
Y'a peut-être moyen de faire autrement mais c'est la première solution (fonctionnelle) qui me vient à cette heure tardive
oui ça a bien l'air d'être le plus simplePeut-être que cette expression
((date('w') != 6) and (date('w') != 0))
tirée de la lecture de la documentation super utile et accessible à http://fr2.php.net/manual/fr/function.date.php
$d = date('w') != 0 and date('w') != 6 ; echo 'd = '.$d.'<br />';
if ($d) echo 'jour différent de samedi ou dimanche <br />';
// affiche : jour différent de samedi ou dimanche
$d = date('w') != 0 && date('w') != 6 ; echo 'd = '.$d.'<br />';
if ($d) echo 'jour différent de samedi ou dimanche <br />';
//n'affiche rien (bon résultat)
L'expression que tu donne en exemple fonctionne s'il n'y a pas d'affectation préalable de la condition à une variable, par contre on ne peut pas affecter la condition à une variable pour ensuite l'évaluer sinon le résultat est faux. Cette différence n'existe pas en utilisant '&&' et '||'.
$planning_des_fermetures = array (0,6);//dans ce tableau on sélectionne les jours de 0 à 6 (lundi au vendredi) (FAUX)
$planning_des_fermetures = array (0,6);//dans ce tableau on indique les jours de fermeture qui correspondent à 0 (pour dimanche) et 6 (pour samedi).
if ((in_array($jour_actuel, $planning_des_fermetures)) //la fonction in_array() est très importante car elle seul peut chercher des entier (FAUX)
if (in_array($jour_actuel, $planning_des_fermetures)) // Cherche si la variable $jour_actuel correspond à une valeur du tableau $planning_des_fermetures.
//Donc la fin de ton code pourrait ressembler à ceci
if (!(in_array($jour_actuel, $planning_des_fermetures) || $heure_actuelle < $heure_ouverture || $heure_actuelle >= $heure_fermeture))
{
$heure = date("H:i");
if ($heure >= '00' && $heure <= '13:59') echo 'Prochaine vidéo publié à 16h00';
if ($heure >= '14' && $heure <= '14:29') echo 'Prochaine vidéo publié à 16h30';
if ($heure >= '14:30' && $heure <= '14:59') echo 'Prochaine vidéo publié à 17h00';
if ($heure >= '15' && $heure <= '15:29') echo 'Prochaine vidéo publié à 17h30';
if ($heure >= '15:30' && $heure <= '15:59') echo 'Prochaine vidéo publié à 18h00';
if ($heure >= '16' && $heure <= '16:29') echo 'Prochaine vidéo publié à 18h30';
if ($heure >= '16:30' && $heure <= '16:59') echo 'Prochaine vidéo publié à 19h00';
if ($heure >= '17' && $heure <= '17:29') echo 'Prochaine vidéo publié à 19h30';
if ($heure >= '17:30' && $heure <= '17:59') echo 'Prochaine vidéo publié à 20h00';
if ($heure >= '18:00' && $heure <= '23:59') echo 'Bonbuzz et bonne soirée, rendez-vous demain à 16h...';
}
else
{
echo c'est fermé;
}Note : le point d'exclamation devant la seconde parenthèse if (!( signifie que l'on souhaite le contraire des conditions inclue dans la seconde parenthèse (qui indique les horaires de fermeture). if (!in_array($jour_actuel, $planning_des_fermetures) && $heure_actuelle >= $heure_ouverture && $heure_actuelle < $heure_fermeture)
{
// code à écrire quand c'est ouvert ...
}
else
{
echo "c'est fermé";
}
ou encore
if (in_array($jour_actuel, $planning_des_fermetures) || $heure_actuelle < $heure_ouverture || $heure_actuelle >= $heure_fermeture)
{
echo "c'est fermé";
}
else
{
// code à écrire quand c'est ouvert ...
}
Il me semble pourtant que c'est ce que fait php. Cependant il convient d'utiliser les bons opérateurs : && et || et non pas AND et OR dont la précédence (priorité d'exécution) est inférieure à celle des opérateurs d'affectation.Un véritable plus serait ce qu'offrent certains langages :
un AND qui n'évalue pas la suite de l'expression quand la première partie a rendu FALSE, puisque cette évaluation est inutile
un OR qui n'évalue la suite de l'expression que quand le début vaut FALSE puisque si le débu est true, le reste n'importe pas...
<?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...';
}
?>Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 34 invités