Heeft iemand toevallig een verjaardagscript "liggen". Dat bijvoorbeeld 7 dagen van tevoren meld wie er jarig zijn? Het mag heel simpel zijn. Ik heb het nodig voor de site van onze buurtvereniging
@Blanche: De kans dat jij datums in de database hebt staan die voldoen aan jouw WHERE, is vrijwel 0. Er is vrijwel niemand tussen vandaag en 7 dagen in de toekomst geboren. De meeste mensen zijn namelijk in het verleden geboren...
Met de databasefuncties MONTH en DAYOFMONTH kun je gaan selecteren op de maand en dag van de maand. Het jaartal is alleen interessant voor de leeftijd, die kun je eventueel apart opvragen.
Houd verder ook rekening met schrikkeljaren.
@Jan: Hebben we hier laatst ook al niet over zitten brainstormen? Ik meen me te herinneren dat daar een fraai stukje SQL uit is gekomen. Of heb ik het helemaal mis?
Toch wil ik vragen of dit script dusdanig is aan te passen dat je de hele week ziet?
<?php
$day = date("d");
$month = date("m");
mysql_connect(localhost,$usr,$pwd);
mysql_select_db($db) or die( "Unable to select database");
$query="SELECT *
FROM `bdays`
WHERE `day` =". $day ."
AND `month` =". $month .";";
$result=mysql_query($query);
$num=mysql_numrows($result);
mysql_close();
$i=0;
while ($i < $num) {
$name=mysql_result($result,$i,"name");
echo "<strong>". $name ."</strong> is vandaag jarig<br>";
$i++;
}
if ($i == 0) {
echo "Er is vandaag niemand jarig.";
}
Tja, het is wel aan te passen met bijvoorbeeld een BETWEEN...AND in het WHERE gedeelte van je query.
Maar zo te zien heb je de geboorte datum niet als een DATE in je database staan, maar als losse INT's. Dit is niet slim aangezien je dan de datum- en tijdfuncties van mysql niet meer kunt gebruiken.
Dat zou ik dus als eerste aanpassen. Vooral ook omdat je met lossen integers makkelijk verder kunt gaan dan 30 of 31 terwijl geen enkele maand een 32e dag heeft. Om nog maar niet te beginnen over februari en het effect van schrikkeljaren...