Gratis e-book↓
Geen spam - je adres zal nooit doorverkocht worden
Oke het is een beetje vreemd want waar heb je dat nu weer voor nodig? Maar ik wilde dus dat deze website er overdag anders uitziet dan snacht’s. Nou zou je dat gemakkelijk kunnen doen als je zegt tussen 6 uur s’morgens en 6 uur s’avonds is het dag en daarna is het nacht. Maar dat wilde ik dus niet, ik wilde dat het gelijk opging met het daglicht buiten. Ik definieer dag dus als de tijd tussen zonsopgang en zonsondergang.
Een voorbeeld van een nuttig gebruik van deze functie zijn de zonsopgang en ondergang tijden van de Bilt
Nu is PHP ontzettend uitgebreid en heb je overal functies voor, dus er is vast ook wel een functie voor de tijd waarop de zon op en onder gaat en ja die is er. Die functies zijn: date_sunrise() voor de zonsopgang en date_sunset() voor de zonsondergang en ze geven een de tijd (als timestamp) voor een bepaalde datum. Verder zijn de lengte- en de breedtegraad, het zenith en het verschil met greenwiche meantime nog nodig voor de funtie. Omdat die allemaal de tijd voor zonsopgang en ondergang bepalen natuurlijk.
De functies zien eruit als:
date_sunrise(time(), SUNFUNCS_RET_STRING, $lat, $long, $zenith, $offset);
date_sunset(time(), SUNFUNCS_RET_STRING, $lat, $long, $zenith, $offset);
De dingen tussen haakjes zijn de argumenten van de functie, ik ga ze even allemaal bij langs.
Je kunt deze waarden als getallen ingeven, b.v. date_sunrise(time(), SUNFUNCS_RET_STRING, 52, 5, 90, 1);
Of je kunt variabelen gebruiken en die eerst een waarde geven. Dat is handiger als je de waardes meerdere keren wilt gebruiken en je ze makkelijk wilt kunnen wijzigen. Ook wordt de functie er overzichtelijker van.
De PHP handleiding over de functie
$lat = 50.882; // Noorderbreedte
$long = 4.699; // oosterlengte
$offset = 1; // verschil tussen GMT en lokale tijd in uren
date_sunrise(time(), SUNFUNCS_RET_TIMESTAMP, $lat, $long, 90, $offset)
date_sunset(time(), SUNFUNCS_RET_TIMESTAMP, $lat, $long, 90, $offset)
Het is nog mooier om de Noorderbreedte en Oosterlengte wat preciezer in te voeren, b.v van je woonplaats, bedrijf of plek van je website (voor zover die een plek heeft).
Nou had ik daar zo’n mooie site voor gevonden… en die vind ik nu niet meer
Deze is ook mooi: http://e-learning.classy.be/coordinatenkaart/coordinatenkaart.html
Je kan het ook opzoeken via google earth of google maps.
Nog een if then erom heen voor het wisselen van de layout
Dat heb ik als volgt gedaan: Als de tijd later (dus groter) is dan de zonsopgang en voor (dus kleiner dan) de zonsondergang dan is het dag en anders is het nacht. In PHP:
$buitenlicht=”x”;
if ((time() > date_sunrise(time(), SUNFUNCS_RET_TIMESTAMP, $lat, $long, 90, $offset) )
&& (time() < date_sunset(time(), SUNFUNCS_RET_TIMESTAMP, $lat, $long, 90, $offset) )){
$buitenlicht=”licht”;}
else {
$buitenlicht=”donker”;
}
In plaats van dag en nacht heb ik het trouwens buitenlicht en licht e donker genoemd.
Dus nu is x licht als het buiten licht is en donker als het buiten donker is, cool he.
Om de website dus overdag anders weer te geven dan snachts heb ik 2 stijlsheets gemaakt, de ene heb ik licht.css en de ander donker.css genoemd. Het eneige verschil dat ik gemaakt heb is trouwens de achtergrond afbeelding, ‘s nachts sterren en overdag wolken.
In de header waar de stylesheet wordt geladen laad die nu dus de ene of de andere met de code:
<link rel=”stylesheet” type=”text/css” href=”<?php bloginfo(‘template_directory’); ?>/css/<?php echo($buitenlicht);?>.css” media=”screen” />
De stylescheet is dus de variabele $buitenlicht en dan .css. Die variabele moet tussen php code en wordt daarom <?php echo($buitenlicht);?>
Even dacht ik dat wordpress maar een style sheet pakt en dat die style.css moet heten omdat dat de standaard is, maar dat hoeft dus gelukkig niet.
De hele code staat in de head van de webpagina en die staat in wordpress in header.php.
De totale code in de head is:
<html><head> allerlei andere code…
<?php
$lat = 50.882; // Noorderbreedte
$long = 4.699; // oosterlengte
$offset = 1; // verschil tussen GMT en lokale tijd in uren
$buitenlicht=”x”;
if ((time() > date_sunrise(time(), SUNFUNCS_RET_TIMESTAMP, $lat, $long, 90, $offset) )
&& (time() < date_sunset(time(), SUNFUNCS_RET_TIMESTAMP, $lat, $long, 90, $offset) )){
$buitenlicht=”licht”;}
else {
$buitenlicht=”donker”;
}
?>
<link rel=”stylesheet” type=”text/css” href=”<?php bloginfo(‘template_directory’); ?>/css/<?php echo($buitenlicht);?>.css” media=”screen” />
allerlei andere code…
</head><body>…
Bij een site zonder wordpres roep je de stylesheet aan met:
<link rel=”stylesheet” type=”text/css” href=”pad van je stylesheet<?php echo($buitenlicht);?>.css” media=”screen” />
b.v. <link rel=”stylesheet” type=”text/css” href=”css/<?php echo($buitenlicht);?>.css” media=”screen” /> als de stylesheet in de css map van je site zit.
Dan vroeg ik me nog af of er misschien een standaard php functie voor de maan op en ondergang is… Nee daar is geen standaard functie voor, maar er is natuurlijk wel iemand die er een gemaakt heeft: Moon rise/set
Heldere Ster | © 2010-2012 door +Sigrid de Jong, Alle rechten voorbehouden. |
Op maandag 15 december 2014:
Merci, kende de functie nog niet en zoals Sigrid schreef kan ik zelf niet doen omdat ik lampen binnen schakel althans dan is dit makkelijker!
Geweldig weer een extra systeem.
Ik schrijf zelf de datum ook nog weg naar een txt file om te checken of ze de dag al aan/uit zijn gezet (2 bestanden een voor aan 1 voor uit) komt nog in een json file later. Zodat hij niet weer uit gaat als ik hem zelf aan heb gezet met mijn app of afstandsbediening
Op zondag 20 oktober 2013:
Dat is een toepassing waaraan ik helemaal niet gedacht heb.
Gebruik je PHP om je buitenverlichting aan te sturen? Je kan dat ook elektronisch doen met LDR (een licht gevoelige weerstand), zodra het donker wordt verandert de weerstand en dat gebruik je in je schakeling.
Zie: http://nl.wikipedia.org/wiki/Lichtgevoelige_weerstand
(Gewoon even naar de elektronica zaak (of feestwinkel zoals een collega het ooit noemde) en een LDR halen.)
Op woensdag 25 september 2013:
Dankjewel voor deze HELDERE uitleg! Ik ga met deze functie mijn buitenverlichting schakelen.