Aller au contenu

If, elseif: besoin d'aide


Sujets conseillés

Posté

Je réalise le site d'un établissement et je souhaiterais afficher une image (ouvert ou fermé) qui changerait en fonction des horaires d'ouverture.

J'utilise donc un "<img src="/image.php">" avec le code suivant dans image.php:

<?
header("Content-type: image/gif");

$date = date("D");
$heure = date("Hi");

if($date != Sat && $date != Sun && $heure < 830)
$image = "img/close.gif";
elseif($date != Sat && $date != Sun && $heure >= 830 && $heure < 1830)
$image = "img/open.gif";
elseif($date != Sat && $date != Sun && $heure >= 1830)
$image = "img/close.gif";
elseif($date = Sat && $heure < 830)
$image = "img/close.gif";
elseif($date = Sat && $heure >= 830 && $heure <1230)
$image = "img/open.gif";
elseif($date = Sat && $heure >= 1230)
$image = "img/close.gif";
elseif($date = Sun)
$image = "img/close.gif";

readfile($image);
?>

Les horaires sont les suivants:

du lundi au vendredi, ouverture de 8h30 à 18h30

le samedi, ouverture de 8h30 à 12h30

et fermeture le dimanche

Le code fonctionne la semaine mais le weekend j'ai des soucis...

Pourriez-vous me donner votre avis? Je débute vraiment en PHP :blush:

Merci d'avance pour votre d'aide!

Bonne soirée

Posté

bonjour :)

essayez tout d'abord de modifier les "=" dans les conditions. En effet, pour vérifier une égalité, vous devez mettre un double égal (==) ; auquel cas c'est de la redéclaration de variable.

Ensuite, remplacez Sat par "Sat". En effet, PHP comprends cette méthode mais peut engendrer des soucis, comme par exemple un undefined index ou encore faire échouer la vérification.

ensuite, je ne peux que conseiller d'indenter le code :)

j'ai aussi réalisé une boucle plus légère, qui devrait normalement fonctionner.


if($heure > 830 && $heure < 1830) // vérif si heure entre 8h30 et 18h30
{
// on est bien entre 8h30 et 18h30.
if( ($date == "Sat" && $heure > 1230) || $date == "Sun") // on est Samedi et Il est plus de 12h30 ? ou alors on est dimanche... on est fermés !
{
$image = "img/close.gif";
}
else // on est donc pas dimanche, ni samedi après midi... on est donc soit en semaine, soit samedi matin. On est ouverts !
{
$image = "img/open.gif";
}
}
else // heure entre 18h30 et 8h30 (donc hors ouverture)
{
$image = "img/close.gif";
}

Normalement ça fonctionne... Je n'ai pas testé, j'ai fais sur le tas :)

n'hésitez pas a me donner un retour :P

bonne soirée !

Posté

D'autre part, il reste préférable d'effectuer ce traitement dans le fichier de template (html) pour éviter d'avoir à faire un readfile, mais c'est accessoire :)

Posté

Bonjour!

Merci pour votre aide :thumbsup:

J'ai bien remplacé mes Jour en "Jour" et doublé mes =.

Pour le moment ça fonctionne, j'attends de voir ce que ça donnera le weekend :).

Sinon Aenoa j'ai bien testé le nouveau code, plus léger, mais malheureusement l'image ne s'affiche pas :(.

Bonne journée

Posté

il faut juste remplacer tes if par ce que j'ai mis. Ce qu'il y a avant tes if et après tes elseif tu doit le laisser :)

Posté

<?
header("Content-type: image/gif");

$date = date("D");
$heure = date("Hi");

if($heure > 830 && $heure < 1830)
{
if( ($date == "Sat" && $heure > 1230) || $date == "Sun")
{
$image = "img/close.gif";
}
else
{
$image = "img/open.gif";
}
}
else
{
$image = "img/close.gif";
}

readfile($image);
?>

Comme ça? C'est ce que j'ai fais :)

J'obtiens un Warning:

<br />

<b>Warning</b>: readfile(/img/open.gif): failed to open stream: No such file or directory in <b>/homez.441/pharmali/www/image2.php</b> on line <b>23</b><br />

Posté

Le warning ne viens pas du script en lui même qui est bon, mais d'un autre problème, et il me semble que le message affiché est assez clair non?

Posté

il faut juste remplacer tes if par ce que j'ai mis. Ce qu'il y a avant tes if et après tes elseif tu doit le laisser :)

Ca marche, désolé! ;)

Merci encore pour votre aide

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...