Ik heb een userdatabase waarin oa. de geboortedatum van users wordt opgeslagen. Op de PHP pagina moet dan aan de hand daarvan de leeftijd worden uitgerekend.
De geboortedatum staat in een DATE field in MySQL.
Ik heb hiervoor het volgende geschreven:
Ik heb de MySQL server op mijn eigen pc draaien, dus ik kan dit script makkelijk uittesten door de datum van mijn pc verzetten. In de database heb ik 1 record gezet, met voor het gemak maar even mijn eigen geboortedatum: 12 september 1984. In het datefield staat dat dus opgeslagen als 1984-09-12.
Dit alles werkt helemaal goed, op één ding na. De yday die ik uit de database haal is telkens één te hoog.
Het script beweert daardoor dat ik op 13 september jarig ben. Op 12 september is het nog gewoon "niet jarig geweest". Waardoor komt dat??
Ik vermoed zelf dat het iets te maken heeft met het feit dat we alweer halverwege 12 september zitten, maar hoe dat precies in elkaar zit snap ik niet.
Disclaimer:
Ik ben gisteren pas begonnen met PHP/MySQL, en heb verder alleen maar ervaring met BASIC, dus het kan zijn dat ik een paar dingen omslachtig doe. Daar mag je me dan gerust op wijzen.
Edit: CODE tags vervangen door PHP tags. Wist niet dat dat kon.
De geboortedatum staat in een DATE field in MySQL.
Ik heb hiervoor het volgende geschreven:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
| $q_currow = mysql_fetch_array($q_result); $curdate = getdate(); $curyear = $curdate['year']; $curyday = $curdate['yday']; // nu maak ik van $birthday een timestamp zodat getdate() ermee kan werken $birthday = strtotime($q_currow['birthday']); $birday = getdate($birthday); $biryear = $birday['year']; $biryday = $birday['yday']; $curage = $curyear - $biryear; if ($curyday < $biryday) { $curage = $curage - 1; // Dit jaar nog niet jarig geweest, dus leeftijd - 1 echo "Nog niet jarig"; } elseif ($curyday == $biryday) { echo "Vandaag jarig."; //Vandaag jarig, $curage klopt al... dit deel is op zich niet nodig //om de leeftijd te geven maar staat erbij omdat ik ook iets //speciaals wil doen als een user jarig is. } else { echo "Jarig geweest"; //User is dit jaar al jarig geweest, $curage klopt al. } echo "LEEFTIJD: " . $curage; |
Ik heb de MySQL server op mijn eigen pc draaien, dus ik kan dit script makkelijk uittesten door de datum van mijn pc verzetten. In de database heb ik 1 record gezet, met voor het gemak maar even mijn eigen geboortedatum: 12 september 1984. In het datefield staat dat dus opgeslagen als 1984-09-12.
Dit alles werkt helemaal goed, op één ding na. De yday die ik uit de database haal is telkens één te hoog.
Ik vermoed zelf dat het iets te maken heeft met het feit dat we alweer halverwege 12 september zitten, maar hoe dat precies in elkaar zit snap ik niet.
Disclaimer:
Ik ben gisteren pas begonnen met PHP/MySQL, en heb verder alleen maar ervaring met BASIC, dus het kan zijn dat ik een paar dingen omslachtig doe. Daar mag je me dan gerust op wijzen.
Edit: CODE tags vervangen door PHP tags. Wist niet dat dat kon.
[ Voor 6% gewijzigd door Maniakje op 23-10-2003 13:38 ]
The sentence below is true.
The sentence above is false.