MaximeL Posté 12 Août 2012 Posté 12 Août 2012 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 Merci d'avance pour votre d'aide! Bonne soirée
Aenoa Posté 12 Août 2012 Posté 12 Août 2012 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 bonne soirée !
SStephane Posté 12 Août 2012 Posté 12 Août 2012 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
MaximeL Posté 13 Août 2012 Auteur Posté 13 Août 2012 Bonjour! Merci pour votre aide 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
Aenoa Posté 13 Août 2012 Posté 13 Août 2012 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
MaximeL Posté 13 Août 2012 Auteur Posté 13 Août 2012 <?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 />
Dadou Posté 13 Août 2012 Posté 13 Août 2012 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?
MaximeL Posté 13 Août 2012 Auteur Posté 13 Août 2012 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
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant