Avatar billede qub- Novice
05. juni 2009 - 15:31 Der er 8 kommentarer og
1 løsning

check om dato er overskredet

Hej eksperter..

Skal have lavet et script som checker om datoen i dag, er EFTER en dato i databasen, og efterfølgende ændre status på datoen i databasen...

I databasen står datoen fx således: 04/06-2009 (i en "Char" datatype - altså man har manuelt skrevet datoen således), men hvordan tjekker jeg så om den dato er "gammel", i forhold til dagen i dag..?


Ydeligere forklaring kan sagtens gives hvis det ikke er til at forstå hvad jeg mener..


/ Casper Skou
Avatar billede acore Ekspert
05. juni 2009 - 15:43 #1
Hvad er formatet på din dato - dd/mm-yyyy eller er der variationer?
Avatar billede qub- Novice
05. juni 2009 - 15:47 #2
Ja det er meningen at det skal være dd/mm-yyyy. Jeg har ihvertfald prøvet at tvinge folk til at bruge det ved at value det. Og det bliver de vel også nødt til..
For der bliver vel NØDT til at være et format på datoen, før at et script vil kunne gå ind og checke på det ???
Avatar billede mrgumble Nybegynder
05. juni 2009 - 16:58 #3
Har du kigget på php's strtotime-funktion? Hvis den ikke vil accepterer den, kan du forsøge at erstatte bindestreget med en skråstreg.
Under alle omstændigheder, hvis der ikke er konsensus på formatet, gør det dit liv til et helvede at forsøge at lave et script over det.
Hvis du har en MySQL database, så skal have ændret scriptet der indsætter data - og vigtigere - ændre datatypen i databasen til dato! Så kan "de andre" indsætte så åndsvage formater som de lyster, men de vil ikke få det rigtige resultat. Hæ hæ... Passiv aggressivitet.

Der er også mysql funktionen str_to_date, så du kan i praksis udtage alle forældede datoer ved at:
"select xxx where str_to_date(dummedato, "%d/%m-%Y") < Now()"
(med forbehold for dårlig sql).
Avatar billede acore Ekspert
05. juni 2009 - 17:40 #4
Jeg mener at strtotime kun baseres på engelsk datoformat, og det er det jo netop ikke, så det bliver mere bøvlet i PHP.
Avatar billede mrgumble Nybegynder
05. juni 2009 - 19:45 #5
Tjek da lige dokumentationen for strtotime; i kommentarerne er der  henvisninger til, at funktionen kan anvendes på en streng sammensat af tal.
Avatar billede public2 Nybegynder
05. juni 2009 - 22:05 #6
Må jeg anbefale at du bruger Unix timestamp i stedet for en almindelig datoformation i databasen? Det er langt, langt nemmere at regne på, med, at lave delinger, at indhente, opdatere og alt muligt andet.

Det er også meget nemmere at lave en sammenligningsfunktion som den du efterspørger. Du vil opleve at du ikke forstår et pløk af tidskoden når den er i databasen, men tro mig, det gør både PHP og alle mulige andre sprog, så det er også nemt at dele disse oplysninger eller gøre brug af dem i andre sammenhænge.
Avatar billede webweaver Praktikant
05. juni 2009 - 23:04 #7
Unix Epoch bør klart benyttes! :)
Avatar billede coderdk Praktikant
06. juni 2009 - 00:01 #8
UPDATE tabel SET status = 'Gammel' WHERE str_to_date(datofelt, '%d/%m-%Y') < NOW()

Men drop dd/mm-yyyy og brug MySQL's DATE-type ;)
Avatar billede qub- Novice
17. september 2009 - 13:34 #9
luk
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester