Leeftijd nu of na overlijden

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Kevin Stoove

Kevin Stoove

30/07/2009 12:02:00
Quote Anchor link
Goedendag,

Ik heb een database, met de tabel 'personen' en die heeft 4 velden.

- id = INT / PRIMARY
- naam = VARCHAR / 255
- geboren = DATE
- overleden = DATE

Nu zijn er mensen die nog leven... dus bij die mensen word uiteraard alleen 'geboren' ingevult en bij 'overleden' dus niets. (tenminste niets, automatisch als je niets invult word het 0000-00-00)

Nu wil ik op de pagina dat hij "Naam (Leeftijd)" laat zien...

Indien de persoon nog leeft dus de huidige leeftijd, en indien de persoon overleden is de leeftijd bij overlijden. Wat voor query moet ik hiervoor gebruiken? Ik heb nog nooit zoiets hoeven gebruiken, dus heb echt geen idee hoe ik dit aanpak...
 
PHP hulp

PHP hulp

05/05/2024 19:44:08
 
Jan Koehoorn

Jan Koehoorn

30/07/2009 12:17:00
Quote Anchor link
Uit mijn hoofd:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
SELECT
    IF
    (
        overleden = '0000-00-00',
        (
YEAR(CURRENT_DATE())-YEAR(geboren)) - (RIGHT(CURRENT_DATE(),5)<RIGHT(geboren,5)),
        (
YEAR(overleden)-YEAR(geboren)) - (RIGHT(overleden,5)<RIGHT(geboren,5))
    )
    AS
leeftijd
FROM tabelnaam
?>
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn
 
Emmanuel Delay

Emmanuel Delay

30/07/2009 16:19:00
Quote Anchor link
Zet dan sterfdatum op NULL als default waarde.
 
Jan Koehoorn

Jan Koehoorn

30/07/2009 16:42:00
Quote Anchor link
Als je met NULL gaat werken, moet je wel in de gaten houden dat je in MySQL met IS NULL (of IS NOT NULL) checkt. Dit zal dan dus niet werken:

IF overleden = NULL

dit wel:

IF IS NULL overleden
 
Wesley Overdijk

wesley Overdijk

30/07/2009 17:14:00
Quote Anchor link
Jan Koehoorn schreef op 30.07.2009 12:17:
Uit mijn hoofd:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
SELECT
    IF
    (
        overleden = '0000-00-00',
        (
YEAR(CURRENT_DATE())-YEAR(geboren)) - (RIGHT(CURRENT_DATE(),5)<RIGHT(geboren,5)),
        (
YEAR(overleden)-YEAR(geboren)) - (RIGHT(overleden,5)<RIGHT(geboren,5))
    )
    AS
leeftijd
FROM tabelnaam
?>



kan er een IF in een query :O wist ik niet :$
 
Jan Koehoorn

Jan Koehoorn

30/07/2009 17:43:00
Quote Anchor link
@ wesley: zeker! Bekijk de control flow functions van MySQL maar eens.
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn
 
Kalle P

Kalle P

30/07/2009 21:13:00
Quote Anchor link
1. het is niet te lezen (als je dit later moet lezen word je hier niet blij van dat je dit ooit zo hebt gemaakt)
2. dus ook lastig te onthouden
3. het is een performancer killer (control flow functions). Wanneer jij een site hebt waar gemiddeld 10 mensen per maand komen, ok swa, geen probleem. Het is alleen een slechte manier om je aan te leren wanneer je hoger op wilt komen met programmeren.

Kortom haal die IF bla die bla eruit en codeer gewoon goed. Commentaar + goeie code (kort, doeltreffend, veilig en snel)
Gewijzigd op 01/01/1970 01:00:00 door Kalle P
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.