Leeftijd berekenen

Een board om T&T's te plaatsen m.b.t. CMSMS, PHP of Smarty

Moderators: velden, Rolf

Post Reply
Jos
Support Guru
Support Guru
Posts: 4016
Joined: Wed Sep 05, 2007 8:03 pm
Location: The Netherlands

Leeftijd berekenen

Post by Jos »

Je hebt wel eens van die sites waar een biografie op staat waar de site-eigenaar zijn/haar leeftijd in vermeld heeft.

Bij het maken van de site wordt dat natuurlijk netjes ingevuld, maar jaren later zie je dat de betreffende persoon geen enkel graadje ouder is geworden.

Hierbij een UDT (user defined tag) die dat oplost. In plaats van de werkelijke leeftijd, vul je een aanroep naar de tag in, bijvoorbeeld zo:
<p>Mijn naam is beppie, ik ben {Age birthday='1980-01-31'} jaar en ik doe MiepMiep na....</p>
Om de tag te kunnen gebruiken, maak je een nieuwe UDT aan met naam "Age" en plak onderstaande code erin:

Code: Select all

if ( isset($params['birthday']) )
{
  list($year,$month,$day) = explode('-',$params['birthday']);
  if ( checkdate ($month, $day, $year) )
  {
    $age = Date('Y') - $year - (int)(($month * 100 + $day) > Date(md));
    echo $age;
  }
  else
  {
    echo '<Parameter birthday is not valid (yyyy-mm-dd)>';
  }
}
else
{
  echo '<Parameter birthday is not set>';
}
User avatar
Rolf
Dev Team Member
Dev Team Member
Posts: 7796
Joined: Wed Apr 23, 2008 7:53 am
Location: The Netherlands
Contact:

Re: Leeftijd berekenen

Post by Rolf »

Humm, deze UDT geeft voor mij een verkeerde leeftijd... Als ik mijn geboortedag invoer dan geeft deze iedere keer 42 aan... Dit terwijl ik toch al jaren 27 ben :D

Maar leuke UDT Jos! Brengt me weer op ideëen ;)

grtz. Rolf
- + - + - + - + - + - + -
LATEST TUTORIAL AT CMS CAN BE SIMPLE:
Migrating Company Directory module to LISE
- + - + - + - + - + - + -
Image
User avatar
Rolf
Dev Team Member
Dev Team Member
Posts: 7796
Joined: Wed Apr 23, 2008 7:53 am
Location: The Netherlands
Contact:

Re: Leeftijd berekenen

Post by Rolf »

In verband met:
Notice: Use of undefined constant md - assumed 'md' in /public/sites/www.website.nl/lib/classes/class.userta ... c.php(265) : eval()'d code on line 6

Code: Select all

Date(md)
in de UDT aanpassen in:

Code: Select all

Date('md')
Dan werkt hij weer zonder melding...

grtz. Rolf
- + - + - + - + - + - + -
LATEST TUTORIAL AT CMS CAN BE SIMPLE:
Migrating Company Directory module to LISE
- + - + - + - + - + - + -
Image
pasmaskas
Power Poster
Power Poster
Posts: 509
Joined: Tue Nov 29, 2011 10:42 am

Re: Leeftijd berekenen

Post by pasmaskas »

Hmm bij mij doet hij ook raar ??? hij zegt dat ik 30 ben maar ben 18 heeft vast met die Notice te maken idd
User avatar
Rolf
Dev Team Member
Dev Team Member
Posts: 7796
Joined: Wed Apr 23, 2008 7:53 am
Location: The Netherlands
Contact:

Re: Leeftijd berekenen

Post by Rolf »

Ik heb de UDT nu gebruikt op mijn website om te tonen hoe lang geleden een bepaalde gebeurtenis plaats heeft gevonden:
https://pneumatic.tube/calendar

UDT CalculateAge

Code: Select all

if ( isset($params['date']) )
{
  list( $day, $month, $year ) = explode( '-', $params['date'] );

  if ( checkdate ($month, $day, $year) )
  {
    $age = date('Y') - $year - (int)(($month * 100 + $day) > date('md'));
    echo $age;
  }
  else
  {
    echo '<Parameter date is not valid (dd-mm-yyyy)>';
  }
}
else
{
  echo '<Parameter date is not set>';
}

Code: Select all

{CalculateAge date='dd-mm-yyyy'}
De parameter wordt gevuld vanuit de LISE module.

Code: Select all

({CalculateAge date=$item->fielddefs.date|date_format:'%d-%m-%Y'|default:'0'} years ago)
- + - + - + - + - + - + -
LATEST TUTORIAL AT CMS CAN BE SIMPLE:
Migrating Company Directory module to LISE
- + - + - + - + - + - + -
Image
deactivated010521

Re: Leeftijd berekenen

Post by deactivated010521 »

Ook te doen met SQL, je maakt '1970-02-01' dan een variable.

SELECT TIMESTAMPDIFF(YEAR, '1970-02-01', CURDATE()) AS age
Post Reply

Return to “Tips en Trucs”