Aller au contenu
MaximeL

If, elseif: besoin d'aide

Noter ce sujet :

Recommended Posts

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

Partager ce message


Lien à poster
Partager sur d’autres sites

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 !

Partager ce message


Lien à poster
Partager sur d’autres sites

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 :)

Partager ce message


Lien à poster
Partager sur d’autres sites

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

Partager ce message


Lien à poster
Partager sur d’autres sites

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 :)

Partager ce message


Lien à poster
Partager sur d’autres sites

<?
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 />

Partager ce message


Lien à poster
Partager sur d’autres sites

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?

Partager ce message


Lien à poster
Partager sur d’autres sites

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

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant

×