SQL verjaardag

Status
Niet open voor verdere reacties.

chandlurmark

Gebruiker
Lid geworden
12 mrt 2008
Berichten
58
Hallo allemaal, ik heb een leuk scriptje dat mensen in een lijst laat zien die binnen 7 dagen jarig zijn. Het probleem is alleen het volgende:

Als mensen aan het eind van de maand jarig zijn, en andere mensen aan het begin van de nieuwe maand jarig zijn, worden deze niet weergegeven. Kan iemand mij verder helpen?

Het gaat om deze code:

PHP:
<b>Van harte:</b><br>
<?php

include 'connect_verjaardag/connection.php';

include 'connect_verjaardag/opendb.php';



$query = "SELECT title, gebdat1, dates, YEAR(NOW()) - YEAR( gebdat1 ) as leeftijd FROM jos_eventlist_events WHERE DAY( gebdat1 )BETWEEN DAY( NOW() )AND ( DAY( NOW( ) ) + 7 ) AND MONTH( gebdat1 ) = MONTH( NOW( ) ) ORDER BY gebdat1";

$result = mysql_query($query) or die('Error, query failed');

if(mysql_num_rows($result) == 0)

{

echo "Niemand jarig deze week !!";

} 

else

{

while($row = mysql_fetch_array($result))

{

  echo " " . $row['title'] . " ";

  echo " ";

  echo "<font size=\"1\" color=\"#B4C1FA\"><b>(Wordt " . $row['leeftijd'] . " jaar!)</b></font>";

  echo "<br>";

  }

}

include 'connect_verjaardag/closedb.php';

?>
 
Dat komt doordat je alleen maar op de dag kijkt.
Als je op 28 april controleert, zie je niet diegene die op 2 mei jarig is, omdat er alleen wordt gecontroleerd tussen 28 en 35.
Om dit te verbeteren, kun je beter op de dag van het jaar checken.
Enige restrictie is dan dat je nog eind december controleert en begin januari een jarige hebt, maar dat kun je wel afvangen.
En je zit nog een beetje met de schrikkeljaren, maar dan controleer je maar op 8 dagen vooruit :p
Nu moet je alleen nog de leeftijd aanpassen als iemand in januari jarig is, want dan gaat het niet op dat je het huidige jaar minus het geboortejaar doet...

[sql]SELECT title, gebdat1, dates, YEAR(NOW()) - YEAR( gebdat1 ) as leeftijd
FROM jos_eventlist_events
WHERE (DAYOFYEAR(curdate()) <= dayofyear(gebdat1)
AND DAYOFYEAR(curdate()) +8 >= dayofyear(gebdat1) OR DAYOFYEAR(curdate()) <= dayofyear(gebdat1)+365
AND DAYOFYEAR(curdate()) +8 >= dayofyear(gebdat1)+365)
ORDER BY gebdat1[/sql]
 
Laatst bewerkt door een moderator:
Dankjewel voor het script, alleen snap ik die laatste regel niet in jouw bericht. Als iemand in januari jarig is, wordt toch gewoon dit gedaan: 2010 - 1986 = wordt 24 jaar! ??
 
alleen doe je [SQL]YEAR(NOW()) - YEAR( gebdat1 ) AS leeftijd[/SQL]

en omdat je in december al weet dat iemand jarig is, rekent ie dus 2009 (want dat is het nog) - 1986 = 23 jaar
 
Laatst bewerkt:
Hahaha, ja daar had ik helemaal niet bij stil gestaan. Hoe los je dat dan precies op?:D
 
Ik weet niet of dit de beste oplossing is, maar ik zou controleren of het vandaag december is en de geboorte is in januari om dan een jaartje er bij op te tellen
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan