Kalender (Selecteren op binnenkort jarig)

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

PHP Scripter

PHP Scripter

21/04/2011 17:03:09
Quote Anchor link
Ik ben bezig met een website waarbij ik een kalender inbouw. Op de homepagina staat een Top 5 van de gebruikers die binnenkort jarig zijn.

De datum van verjaardag wordt in de database opgeslagen als bijvoorbeeld: 05-01 of 23-11. Ik wil deze gegevens uitlezen en de string omzetten naar tekst. Dus dan bedoel ik dat bijvoorbeeld '23-11' wordt omgezet naar '23 november'.

Wat ik nu heb? Helemaal niks. Ik weet niet hoe ik hieraan moet beginnen en hoe dit het makkelijkst aan te pakken. Iemand die mij op weg kan helpen?
 
PHP hulp

PHP hulp

25/04/2024 10:56:30
 
Jasper DS

Jasper DS

21/04/2011 17:09:38
Quote Anchor link
Indien je het juiste veldtype gebruikt:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
SELECT DATE_FORMAT(datumtijdveld, '%d %M %Y') AS datum
FROM tabel


Bekijk zeker deze tut
Gewijzigd op 21/04/2011 17:11:48 door Jasper DS
 
PHP Scripter

PHP Scripter

21/04/2011 17:32:21
Quote Anchor link
Bedankt Jasper, fijne tutorial. Maar hoe kan ik dan kijken welke datum het dichts bij de huidige datum komt? Is daar een SQL functie voor zoals bijvoorbeeld LIKE?
 
Write Down

Write Down

21/04/2011 17:58:48
Quote Anchor link
ORDER BY datumtijdveld DESC

Toevoeging op 21/04/2011 18:00:11:

Of bedoel je bij een specifieke datum? Dan kan je is kijken naar WHERE en wat datumfuncties binnen MySQL
 
PHP Scripter

PHP Scripter

21/04/2011 18:09:18
Quote Anchor link
Write Down, thanks. Bestaat er niet gewoon iets WHERE NEAR BY of iets dergelijks? Dit probleem moeten mensen toch wel vaker tegen zijn gekomen? Nouja probleem, omslachtig.
 
PHP Scripter

PHP Scripter

24/04/2011 18:34:59
Quote Anchor link
Ik bump dit topic even, met de hoop dat iemand mij kan helpen.
 
Noppes Homeland

Noppes Homeland

24/04/2011 18:39:34
Quote Anchor link
Wel zolang jij niet weet aan te geven wat jij bedoelt met "Selecteren op binnenkort jarig" kan je wachten totdat je een osn weegt.

Je moet de datum casten naar een DATE en dan iets doen met INTERVAL
 
Arjan -

Arjan -

24/04/2011 18:52:42
Quote Anchor link
PHP Scripter op 21/04/2011 17:32:21:
Bedankt Jasper, fijne tutorial. Maar hoe kan ik dan kijken welke datum het dichts bij de huidige datum komt? Is daar een SQL functie voor zoals bijvoorbeeld LIKE?


Uit de losse pols (dus niet getest):

SELECT id FROM gebruikers WHERE EXTRACT(MONTH_DAY FROM geboortedatum) > EXTRACT(MONTH_DAY FROM CURDATE()) ORDER BY EXTRACT(MONTH_DAY FROM geboortedatum) ASC LIMIT 5

Bij grote hoeveelheid data kan dit wellicht performance verlies optreden aangezien voor elke rij een aantal bewerkingen uitgevoerd moeten worden om vervolgens te controleren op de voorwaarde.

Noppes Homeland op 24/04/2011 18:39:34:
Wel zolang jij niet weet aan te geven wat jij bedoelt met "Selecteren op binnenkort jarig" kan je wachten totdat je een osn weegt.

Je moet de datum casten naar een DATE en dan iets doen met INTERVAL


Met een interval zal het niet gaan lukken, aangezien je niet weet hoe groot de interval moet zijn. Twee data (datums) kunnen zeer ver uit of dichtbij elkaar liggen
Gewijzigd op 24/04/2011 20:38:59 door Arjan -
 
Noppes Homeland

Noppes Homeland

24/04/2011 21:12:23
Quote Anchor link
@Arjan, leer lezen
de "datum" is opgeslagen als dd-mm dus is VARCHAR, daar kan je dus geen datunm tijd functies overheen halen zonder het naar dat type te casten

en de vraag is: "binnenkort jarig" wat versta ja in vredesnaam onder binnenkort, dus je fiets er nu gewoon met een hele grote aanname doorheen, dat jouw query oki doki is. Het resultaat wat je met jouw query verkrijgt slaat echt nergens op.

Dus TS wat versta je onder "binnenkort".....
 
Arjan -

Arjan -

24/04/2011 21:56:40
Quote Anchor link
Noppes Homeland op 24/04/2011 21:12:23:
@Arjan, leer lezen
de "datum" is opgeslagen als dd-mm dus is VARCHAR, daar kan je dus geen datunm tijd functies overheen halen zonder het naar dat type te casten

en de vraag is: "binnenkort jarig" wat versta ja in vredesnaam onder binnenkort, dus je fiets er nu gewoon met een hele grote aanname doorheen, dat jouw query oki doki is. Het resultaat wat je met jouw query verkrijgt slaat echt nergens op.

Dus TS wat versta je onder "binnenkort".....


Je wordt nu zo onderhand vrij irritant met jouw benadering! Hieronder zal je duidelijk worden dat jij wellicht naar de opticiën moet.

PHP Scripter op 21/04/2011 17:32:21:
Bedankt Jasper, fijne tutorial. Maar hoe kan ik dan kijken welke datum het dichts bij de huidige datum komt? Is daar een SQL functie voor zoals bijvoorbeeld LIKE?


Het woordje "dan" refereert naar de post van PHP Jasper die uitlegt dat je het beter in een date veld kan opslaan. Dus de topicstarter geeft aan deze methode te willen gebruiken en vraagt hoe je dan de dichtstbijzijnde datums kan krijgen (oftewel hij wil dus via deze methode de 5 meest recente verjaardagen opvragen zoals hij in de eerste post laat weten).

Met mijn query zal je door het extracten van de maand en dag uit een "date" veld de eerst volgende verjaardagen kunnen halen (immers heeft het jaartal niets te maken met wanneer iemand jarig is (alleen hoe oude diegene wordt)).


Quote:
Het resultaat wat je met jouw query verkrijgt slaat echt nergens op.


Welke resultaten krijg je dan denk je met mijn query. Probeer het eens uit zal ik zeggen (ik heb het namelijk niet zelf uitgeprobeerd zoals ik al heb vermeld, maar ik heb een aanzet gedaan).

Dus kortweg: lees alles nogmaals door voordat je iemand op deze manier benadert of zeg gewoon niets!!


Een andere mogelijkheid om de eerstvolgende verjaardagen op te vragen is het verschil in dagen tussen de huidige datum (maand en dag) en de geboortedata (maand en dag) te gebruiken. Deze verschillen kan je sorteren en zodoende de eerstvolgende verjaardagen opvragen (met een eventuele limiet).
Gewijzigd op 24/04/2011 22:02:16 door Arjan -
 
Phpnuke r

phpnuke r

25/04/2011 10:25:24
Quote Anchor link
Je zou alle datums uit de mysql kunnen halen, en vervolgens alles wat al geweest is weghalen.

http://www.google.nl/#hl=nl&biw=1600&bih=799&sa=X&ei=RC-1TbzwF8KcOvuskfYI&ved=0CDoQBSgA&q=date+less+than&spell=1&fp=28e20c54a5ce2fff

Dar zit vast wel wat tussen, vervolgens wat array handelingen en ik denk dat je hem wel an het praten krijgt. Sorry, maar verder in details kan ik even niet gaan maar het lijkt me dat je voor nu genoeg hebt ;3
 



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.