[php] verjaardagen

Pagina: 1
Acties:

  • a casema user
  • Registratie: Januari 2000
  • Laatst online: 27-05 23:02
Ik haal met PHP de verjaardagen uit MySQL (YYYY-MM-DD) en bekijk een voor een of iemand jarig is. (of binnen 7 dagen)
als dat zo is wordt dat mbv een applet op het beeld gezet.

Maar hoe bepaal ik zo efficient mogelijk wie er binnen 7 dagen jarig zijn.

Ik heb nu iets van..

$result = mysql($database, "select naam, geb_datum FROM $table order by geb_datum");
$num2 = mysql_numrows($result);

for ($teller=0; $teller<$num2; $teller++)
{
$datum = mysql_result($result,$teller,"geb_datum");
$jarige = mysql_result($result,$teller,"naam");

$tm1 = mktime (0,0,0,date("m"),date("d"),date("Y"));
$tm2 = mktime (0,0,0,date("m"),date("d")+7,date("Y")); :P
$day = substr($datum,8,2);
$month = substr($datum,5,2);
$tm3 = mktime (0,0,0,$month,$day,date("Y"));
$dag = date("w",$tm3);
if ($tm3>$tm1 && $tm3<$tm2)
{
// if TRUE iemand is binnen 7 dagen jarig. :Y)
// met $dag is te bepalen op welke dag $jarige jarig is.
}
}

maar is eigenlijk onzin om steeds elke row op deze manier te controleren.
kan het niet makkelijker
zoiets als (dit werkt niet vanwege verkeerd jaartal)(dat het jaartal niet gebruikt wordt bij de controle ofzo)

..WHERE (geb_datum>$day_nog) and (geb_datum<$day_over7dagen)....(ofzo) :?

iemand die het nog snapt >:) die een idee heeft ? 8-)
en kom niet met opmerking van: maak 3 fields, 1 voor dag,maand,jaar :+

Taaaa taa taa taaaa taa taa ta taaataaaaa.


  • Jelle Niemantsverdriet
  • Registratie: Februari 2000
  • Laatst online: 11:23
Ik zie even niet helemaal hoe je de datum opgeslagen hebt, maar ik zou iets doen als:
PHP:
1
2
3
4
5
<?
&amp;lt;?
$result = mysql($database, "select naam, geb_datum FROM $table WHERE geb_datum&amp;gt;$nu AND geb_datum&amp;lt;$een_week order by geb_datum");
?&amp;gt;
?>

O wacht, zoiets stel je ook al voor.

Als je geb_datum als timestamp hebt opgeslagen is dit wel vrij goed te doen.
PHP:
1
2
3
4
5
6
<?
&amp;lt;?
$nu=time();
$een_week=$nu+7*3600*24;
?&amp;gt;
?>

en dan dus die query hierboven

edit:
< en > er nog even bij denken in de query

Grr :( 2 keer php in 1 reply geeft rare dingen bij het editen

Al met al zou ik kijken of je die geb_datum kunt veranderen in een timestamp, dan ben je van het probleem met rekenen met maanden en jaren af en kun je er gewoon een week bij optellen. Als je dan de gewenste gegevens uit de DB hebt zet je ze om naar leesbare data.

  • Rense Klinkenberg
  • Registratie: November 2000
  • Laatst online: 14-05 16:16
't ligt niet aan 2 keer [ php] in een reactie; [ php] doet dat altijd. Je kan dan beter [ code] gebruiken.

Back on-topic:
Je kan beter de eerste optie gebruiker (dus in je query al de WHERE statements gebruiken), dan het met php te doen. PHP is met dit soort dingen nl. altijd langzamer dan je db-server.

  • a casema user
  • Registratie: Januari 2000
  • Laatst online: 27-05 23:02
Leek me ook het beste om met WHERE te werken.
Maar dat lukt toch niet, het geboortejaar is toch nooit gelijk aan het huidige jaar.
Formaat is trouwens YYYY-MM-DD (stond bovenin)

..WHERE (geb_datum>$date_nu) and (geb_datum<$datum_7_dagen)...

2001-31-01 vind toch nooit 1980-02-01 als uitkomst, ik heb iets nodig dat het jaar niet vergelijken wordt, zoals vergelijking met %%%%-MM-DD ofzo.
iemand nog een idee ? (of geef ik nu zelf de oplossing?:+)

Taaaa taa taa taaaa taa taa ta taaataaaaa.


  • tom kuipers
  • Registratie: Juli 1999
  • Laatst online: 23-02-2025