Hallo allemaal,

Op een school website wil ik de nieuwsbrieven tonen van het lopende schooljaar. Het lastige hierin is dat een schooljaar niet in 1 kalenderjaar valt maar in 2. (bv., 15-08-2016 t/m 14-08-2017).

Ik heb per nieuwsbrief een kolom 'nieuwsbrief_datum' waarop ik de nieuwsbrieven met een query wil ophalen en tonen.
Onderstaande query heb ik tot nu toe:


<?
$sSelectiequery = "SELECT nieuwsbrief_datum,status
FROM nieuws WHERE nieuwsbrief_datum BETWEEN CONCAT(YEAR(CURDATE()),'-08-16') AND CONCAT(YEAR(CURDATE())+1,'-08-15')

ORDER BY nieuwsbrief_datum DESC ";
?>


Deze werkt op zich wel, maar ik verwacht dat dit in het nieuwe jaar mis gaat en dat hij het jaar 2017 en 2018 geeft. dan ontbreken de voorgaande nieuwsbrieven vanaf begin schooljaar 2016/2017.

Weet iemand hoe ik kan bereiken dat een query een schooljaar herkent op basis van de kolom nieuwsbrief_datum zonder dat elk jaar de query en script aangepast hoeven worden.

Samengevat:
ik wil de nieuwsbrieven vanaf de laatste 16 augustus tot de volgende 16 augustus (=schooljaar)
Zoiets?

<?php
$curMonth = date('m');
$startYear = date('Y');
if($curMonth < 8 || ($curMonth == 8 && date('j') <= 16)) { // januari tot en met juli OF eerste helft augustus
$startYear--;
}
$endYear = $startYear + 1;

$sSelectiequery = "SELECT nieuwsbrief_datum,status
FROM nieuws
WHERE nieuwsbrief_datum BETWEEN '".$startYear."-08-16' AND '".$endYear."-08-15'
ORDER BY nieuwsbrief_datum DESC ";
?>
Het lijkt te werken Frank! nieuwsbrieven van voor 15-8-2016 toont hij niet en nieuwsbrieven van na 15-8-2017 ook niet. Zondag weet ik het zeker, na de jaarwisseling.

Hartelijk bedankt voor de goede hulp.

Goede jaarwisseling gewenst!
Waarom wachten tot zondag als je de klok vooruit kunt zetten.

Reageren