Geboortedatum naar leeftijd: opgezocht maar werkt niet

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Kristof Hendrickx

Kristof Hendrickx

08/09/2013 10:52:24
Quote Anchor link
Hallo,
ik heb al verschillende manieren die ik vond geprobeerd, maar ze komen allemaal op een fout uit.

Ik heb een geboortedatum als date in mijn database staan, deze zou ik willen omzetten naar een leeftijd, ook zou ik als het de verjaardag is iets willen laten uitvoeren.

Ik heb al dingen gevonden waarbij je het via een query kan, maar ik denk steeds iets fout te doen aangezien ik bij het testen met or die werk (niet voor het uiteindelijke exemplaar) en jep, hij valt stil daar.

Een voorbeeld van zo'n query dat bij mij niet werkte:
$sql = "SELECT DATE_FORMAT(FROM_DAYS(TO_DAYS(NOW())-TO_DAYS(GBdatum)), '%Y')+0 AS age FROM users";
$dp = mysql_query($sql);
$leeftijd = $dp['age'];

Voor de duidelijkheid: dit kan zeker en vast met een boel fouten zijn, anders maak ik dit topic toch niet aan?
 
PHP hulp

PHP hulp

20/04/2024 10:38:40
 
- Ariën  -
Beheerder

- Ariën -

08/09/2013 10:54:27
Quote Anchor link
Wat meldt mysql_error () en wat is de uitkomst van $age?
 
Kristof Hendrickx

Kristof Hendrickx

08/09/2013 11:05:03
Quote Anchor link
mysql_error zegt niets, en er komt gewoon niets uit :(

Hij loopt ook niet dood op een or die
Gewijzigd op 08/09/2013 11:07:47 door Kristof Hendrickx
 
 - Diov  -

- Diov -

08/09/2013 11:08:14
Quote Anchor link
Bouw nette foutafhandeling:
http://www.phphulp.nl/php/tutorial/data-verwerking/foutafhandeling-query-sql/735/voorbeeld-1-het-ophalen-van-gegevens/1931/

Ik gebruikte deze link heel vaak toen ik ook vaak fouten maakte met query's bouwen.
Probeer het eens :)
 
Kristof Hendrickx

Kristof Hendrickx

08/09/2013 11:09:44
Quote Anchor link
@Diov ik zei nog net: ik gebruik voor het testen de die-functie, als hij daar niet op vastloopt betekent het toch dat hij geen fouten ziet dus dan zal dat toch ook niet helpen?
 
 - Diov  -

- Diov -

08/09/2013 11:11:56
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
$sql = "SELECT DATE_FORMAT(FROM_DAYS(TO_DAYS(NOW())-TO_DAYS(GBdatum)), '%Y')+0 AS age FROM users";
$dp = mysql_query($sql);
$leeftijd = $dp['age'];


Dit ziet er toch anders uit.
En niets sterft, dus die() wordt niet vaak gebruikt.

En staan je errors aan?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
    # errors weergeven
    ini_set('display_errors',1); // 1 == aan , 0 == uit
    error_reporting(E_ALL | E_STRICT);
?>
 
Kristof Hendrickx

Kristof Hendrickx

08/09/2013 11:24:38
Quote Anchor link
Nogmaals: die word mss niet vaak gebruikt, maar als je er or die() bij zet en hij gaat wel gewoon verder, dan is er toch gewoon geen error?
 
 - Diov  -

- Diov -

08/09/2013 11:25:37
Quote Anchor link
Tenzei je errors afstaan ...

Waarom probeer je het gewoon niet?
Ik heb geen glazen bol om jouw probleem te zien, sorry.
 
Obelix Idefix

Obelix Idefix

08/09/2013 11:26:52
Quote Anchor link
Kristof Hendrickx op 08/09/2013 10:52:24:
Ik heb al dingen gevonden waarbij je het via een query kan, maar ik denk steeds iets fout te doen aangezien ik bij het testen met or die werk (niet voor het uiteindelijke exemplaar) en jep, hij valt stil daar.

Een voorbeeld van zo'n query dat bij mij niet werkte:
$sql = "SELECT DATE_FORMAT(FROM_DAYS(TO_DAYS(NOW())-TO_DAYS(GBdatum)), '%Y')+0 AS age FROM users";
$dp = mysql_query($sql);
$leeftijd = $dp['age'];

Voor de duidelijkheid: dit kan zeker en vast met een boel fouten zijn, anders maak ik dit topic toch niet aan?

1) als mensen je aanspreken op die fouten, klink dan niet gelijk 'boos'. We/Ze proberen je te helpen.
2) door nu met or die te werken (ik zie het overigens niet in de code staan), kun je straks nog een keer alles gaan aanpassen om een nette foutafhandeling in te bouwen. En opnieuw alles testen. Waarom zo omslachtig? Doe het liever in 1x (goed).

Kristof Hendrickx op 08/09/2013 11:09:44:
@Diov ik zei nog net: ik gebruik voor het testen de die-functie, als hij daar niet op vastloopt betekent het toch dat hij geen fouten ziet dus dan zal dat toch ook niet helpen?

In je openingspost geef je aan dat hij stilvalt bij de 'die' en daarna geef je aan dat hij daar niet vastloopt. Wat is het nou?

Kortom: doe het goed. Bouw een nette foutafhandeling in en laat ons weten wat de foutmelding is. Als de query goed gaat, dan wordt het debuggen. Wat zit er in de variabele(n)? Waar stopt het script? Met alleen info 'het werkt niet', kunnen we niet zo veel.
Gewijzigd op 08/09/2013 11:28:29 door Obelix Idefix
 
Kristof Hendrickx

Kristof Hendrickx

08/09/2013 11:33:53
Quote Anchor link
Dat had ik inderdaad fout, ik had namelijk eerst nog wat anders waarbij hij wel stopte, dit ben ik vergeten aan te passen in het bericht.

Ik doe niet boos, of dat is toch zeker niet mijn bedoeling.

Ik heb de or die hier in het script eruit gelaten omdat ik dacht dat dit niet echt van belang was voor jullie.

en ik zal eens kijken naar het inplanten van de foutmelding op jullie manier.

En ik heb blijkbaar de error gevonden, deze zat niet echt in de query, hoewel ik daar wel nog WHERE Username = ... heb toegevoegd zodat hij enkel van die persoon neemt, de fout zat dat ik een mysql_result moest uitvoeren xd
Gewijzigd op 08/09/2013 11:44:07 door Kristof Hendrickx
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

08/09/2013 15:53:29
Quote Anchor link
Ik zie hier toch vergezochte oplossingen voor het bereken van de leeftijd in MySQL, terwijl het een stuk eenvoudiger kan:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
SELECT TIMESTAMPDIFF(YEAR, geboortedatum, CURDATE()) leeftijd FROM members
 



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.