Am fost intrebat zilele trecute cum se poate afisa o imagine intr-o pagina in functie de ora la care aceasta este accesata. Sunt convins ca sunt mai multe feluri de a face acest lucru, dar unul mi-a venit in minte imediat. Sa afisam imaginea dintr-un fisier php extern in care sa decidem sursa in functie de ora, sau de orice alt parametru dorim.
Pentru asta am compus un mic exemplu (simplificat la maxim) ca sa demonstrez aceasta functionalitate. Avem nevoie pentru inceput de o pagina index.php
in care sa avem un cod de felul urmator:
Vezi Demo
<!DOCTYPE html> <html> <head> <title>Imagini la ore fixe</title> <style type="text/css"> #container { width: 576px; border: 2px solid #CCC; margin: auto; padding: 10px; } #container img { float: left; margin-right: 10px; } </style> </head> <body> <div id="container"> <?php include("getImage.php"); ?> <p>Nam vel sapien vel odio adipiscing congue ... a rutrum odio cursus. Nunc non eros orci.</p> </div> </body> </html>
Dupa cum puteti vedea, la un moment dat includem un fisier php, denumit getImage.php
. Fisierul respectiv va face echo
la tag-ul <img>
pe care il vom insera in pagina.
Fisierul getImage.php
va contine urmatorul cod:
<?php $src = getSource(); printf("<img src=\"img/%s.jpg\" alt=\"%s\" title=\"%s\" />", $src, $src, $src); function getSource() { $hour = date("H"); // Nu ne trebuie decat ora if($hour >= 7 && $hour < 12) { return "breakfast"; } elseif($hour >= 12 && $hour < 18) { return "lunch"; } elseif($hour >= 18 && $hour <= 22) { return "dinner"; } else { return "sleep"; } } ?>
Din pacate aceasta nu este neaparat cea mai eleganta metoda de a rezolva problema. Dar asta se datoareaza si faptului ca exemplul este mult simplificat. Daca am folosi un sistem de tamplating, asa cum pune la dispozitie CodeIgniter de exemplu, acest cod ar arata mai curat.
De asemenea, daca cineva considera ca are o idee mai buna (mai eficienta/eleganta) de a aborda aceasta problema, va astept in comentarii. Revelatiile vor ajunge intr-o versiune actualizata a acestui articol (cu mentiunea autorului, bineinteles).